diff -Nrcpad gcc-8.3.0/ChangeLog gcc-8.4.0/ChangeLog
*** gcc-8.3.0/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/INSTALL/build.html gcc-8.4.0/INSTALL/build.html
*** gcc-8.3.0/INSTALL/build.html	Fri Feb 22 14:22:15 2019
--- gcc-8.4.0/INSTALL/build.html	Wed Mar  4 08:32:15 2020
*************** that type mismatches occur, this could b
*** 116,122 ****
  </p>
  <p>The solution is not to use such a directory for building GCC.
  </p>
! <p>Similarly, when building from SVN or snapshots, or if you modify
  <samp>*.l</samp> files, you need the Flex lexical analyzer generator
  installed.  If you do not modify <samp>*.l</samp> files, releases contain
  the Flex-generated files and you do not need Flex installed to build
--- 116,122 ----
  </p>
  <p>The solution is not to use such a directory for building GCC.
  </p>
! <p>Similarly, when building from the source repository or snapshots, or if you modify
  <samp>*.l</samp> files, you need the Flex lexical analyzer generator
  installed.  If you do not modify <samp>*.l</samp> files, releases contain
  the Flex-generated files and you do not need Flex installed to build
*************** them.  There is still one Flex-based lex
*** 124,130 ****
  build machinery, not of GCC itself) that is used even if you only
  build the C front end.
  </p>
! <p>When building from SVN or snapshots, or if you modify Texinfo
  documentation, you need version 4.7 or later of Texinfo installed if you
  want Info documentation to be regenerated.  Releases contain Info
  documentation pre-built for the unmodified documentation in the release.
--- 124,130 ----
  build machinery, not of GCC itself) that is used even if you only
  build the C front end.
  </p>
! <p>When building from the source repository or snapshots, or if you modify Texinfo
  documentation, you need version 4.7 or later of Texinfo installed if you
  want Info documentation to be regenerated.  Releases contain Info
  documentation pre-built for the unmodified documentation in the release.
diff -Nrcpad gcc-8.3.0/INSTALL/configure.html gcc-8.4.0/INSTALL/configure.html
*** gcc-8.3.0/INSTALL/configure.html	Fri Feb 22 14:22:15 2019
--- gcc-8.4.0/INSTALL/configure.html	Wed Mar  4 08:32:15 2020
*************** for both native and cross targets.
*** 91,99 ****
  <p>We use <var>srcdir</var> to refer to the toplevel source directory for
  GCC; we use <var>objdir</var> to refer to the toplevel build/object directory.
  </p>
! <p>If you obtained the sources via SVN, <var>srcdir</var> must refer to the top
! <samp>gcc</samp> directory, the one where the <samp>MAINTAINERS</samp> file can be
! found, and not its <samp>gcc</samp> subdirectory, otherwise the build will fail.
  </p>
  <p>If either <var>srcdir</var> or <var>objdir</var> is located on an automounted NFS
  file system, the shell&rsquo;s built-in <code>pwd</code> command will return
--- 91,100 ----
  <p>We use <var>srcdir</var> to refer to the toplevel source directory for
  GCC; we use <var>objdir</var> to refer to the toplevel build/object directory.
  </p>
! <p>If you obtained the sources by cloning the repository, <var>srcdir</var>
! must refer to the top <samp>gcc</samp> directory, the one where the
! <samp>MAINTAINERS</samp> file can be found, and not its <samp>gcc</samp>
! subdirectory, otherwise the build will fail.
  </p>
  <p>If either <var>srcdir</var> or <var>objdir</var> is located on an automounted NFS
  file system, the shell&rsquo;s built-in <code>pwd</code> command will return
*************** with <samp>--enable-bootstrap</samp>.
*** 1050,1056 ****
  <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 SVN development tree.  When building GCC from that development tree,
  or from one of our snapshots, those generated files are placed in your
  build directory, which allows for the source to be in a readonly
  directory.
--- 1051,1057 ----
  <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,
  or from one of our snapshots, those generated files are placed in your
  build directory, which allows for the source to be in a readonly
  directory.
*************** controlled by the Makefiles.
*** 1343,1384 ****
  </p>
  </dd>
  <dt><code>--enable-checking</code></dt>
  <dt><code>--enable-checking=<var>list</var></code></dt>
! <dd><p>When you specify this option, the compiler is built to perform internal
! consistency checks of the requested complexity.  This does not change the
! generated code, but adds error checking within the compiler.  This will
! slow down the compiler and may only work properly if you are building
! the compiler with GCC.  This is &lsquo;<samp>yes,extra</samp>&rsquo; by default when building
! from SVN or snapshots, but &lsquo;<samp>release</samp>&rsquo; for releases.  The default
! for building the stage1 compiler is &lsquo;<samp>yes</samp>&rsquo;.  More control
! over the checks may be had by specifying <var>list</var>.  The categories of
! checks available are &lsquo;<samp>yes</samp>&rsquo; (most common checks
! &lsquo;<samp>assert,misc,tree,gc,rtlflag,runtime</samp>&rsquo;), &lsquo;<samp>no</samp>&rsquo; (no checks at
! all), &lsquo;<samp>all</samp>&rsquo; (all but &lsquo;<samp>valgrind</samp>&rsquo;), &lsquo;<samp>release</samp>&rsquo; (cheapest
! checks &lsquo;<samp>assert,runtime</samp>&rsquo;) or &lsquo;<samp>none</samp>&rsquo; (same as &lsquo;<samp>no</samp>&rsquo;).
! Individual checks can be enabled with these flags &lsquo;<samp>assert</samp>&rsquo;,
! &lsquo;<samp>df</samp>&rsquo;, &lsquo;<samp>fold</samp>&rsquo;, &lsquo;<samp>gc</samp>&rsquo;, &lsquo;<samp>gcac</samp>&rsquo;, &lsquo;<samp>misc</samp>&rsquo;, &lsquo;<samp>rtl</samp>&rsquo;,
! &lsquo;<samp>rtlflag</samp>&rsquo;, &lsquo;<samp>runtime</samp>&rsquo;, &lsquo;<samp>tree</samp>&rsquo;, &lsquo;<samp>extra</samp>&rsquo; and &lsquo;<samp>valgrind</samp>&rsquo;.
! &lsquo;<samp>extra</samp>&rsquo; adds for &lsquo;<samp>misc</samp>&rsquo; checking extra checks that might affect
! code generation and should therefore not differ between stage1 and later
! stages.
  </p>
! <p>The &lsquo;<samp>valgrind</samp>&rsquo; check requires the external <code>valgrind</code>
! simulator, available from <a href="http://valgrind.org/">http://valgrind.org/</a>.  The
! &lsquo;<samp>df</samp>&rsquo;, &lsquo;<samp>rtl</samp>&rsquo;, &lsquo;<samp>gcac</samp>&rsquo; and &lsquo;<samp>valgrind</samp>&rsquo; checks are very expensive.
! To disable all checking, &lsquo;<samp>--disable-checking</samp>&rsquo; or
! &lsquo;<samp>--enable-checking=none</samp>&rsquo; must be explicitly requested.  Disabling
! assertions will make the compiler and runtime slightly faster but
! increase the risk of undetected internal errors causing wrong code to be
! generated.
  </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>If no <samp>--enable-checking</samp> option is specified the stage1
! compiler will be built with &lsquo;<samp>yes</samp>&rsquo; checking enabled, otherwise
! the stage1 checking flags are the same as specified by
  <samp>--enable-checking</samp>.  To build the stage1 compiler with
  different checking options use <samp>--enable-stage1-checking</samp>.
  The list of checking options is the same as for <samp>--enable-checking</samp>.
--- 1344,1394 ----
  </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
! properly if you are building the compiler with GCC.
  </p>
! <p>When the option is not specified, the active set of checks depends on context.
! Namely, bootstrap stage 1 defaults to &lsquo;<samp>--enable-checking=yes</samp>&rsquo;, builds
! from release branches or release archives default to
! &lsquo;<samp>--enable-checking=release</samp>&rsquo;, and otherwise
! &lsquo;<samp>--enable-checking=yes,extra</samp>&rsquo; is used.  When the option is
! specified without a <var>list</var>, the result is the same as
! &lsquo;<samp>--enable-checking=yes</samp>&rsquo;.  Likewise, &lsquo;<samp>--disable-checking</samp>&rsquo; is
! equivalent to &lsquo;<samp>--enable-checking=no</samp>&rsquo;.
! </p>
! <p>The categories of checks available in <var>list</var> are &lsquo;<samp>yes</samp>&rsquo; (most common
! checks &lsquo;<samp>assert,misc,gc,gimple,rtlflag,runtime,tree,types</samp>&rsquo;), &lsquo;<samp>no</samp>&rsquo;
! (no checks at all), &lsquo;<samp>all</samp>&rsquo; (all but &lsquo;<samp>valgrind</samp>&rsquo;), &lsquo;<samp>release</samp>&rsquo;
! (cheapest checks &lsquo;<samp>assert,runtime</samp>&rsquo;) or &lsquo;<samp>none</samp>&rsquo; (same as &lsquo;<samp>no</samp>&rsquo;).
! &lsquo;<samp>release</samp>&rsquo; checks are always on and to disable them
! &lsquo;<samp>--disable-checking</samp>&rsquo; or &lsquo;<samp>--enable-checking=no[,&lt;other checks&gt;]</samp>&rsquo;
! must be explicitly requested.  Disabling assertions makes the compiler and
! runtime slightly faster but increases the risk of undetected internal errors
! causing wrong code to be generated.
! </p>
! <p>Individual checks can be enabled with these flags: &lsquo;<samp>assert</samp>&rsquo;, &lsquo;<samp>df</samp>&rsquo;,
! &lsquo;<samp>extra</samp>&rsquo;, &lsquo;<samp>fold</samp>&rsquo;, &lsquo;<samp>gc</samp>&rsquo;, &lsquo;<samp>gcac</samp>&rsquo;, &lsquo;<samp>gimple</samp>&rsquo;,
! &lsquo;<samp>misc</samp>&rsquo;, &lsquo;<samp>rtl</samp>&rsquo;, &lsquo;<samp>rtlflag</samp>&rsquo;, &lsquo;<samp>runtime</samp>&rsquo;, &lsquo;<samp>tree</samp>&rsquo;,
! &lsquo;<samp>types</samp>&rsquo; and &lsquo;<samp>valgrind</samp>&rsquo;.  &lsquo;<samp>extra</samp>&rsquo; extends &lsquo;<samp>misc</samp>&rsquo;
! checking with extra checks that might affect code generation and should
! therefore not differ between stage1 and later stages in bootstrap.
! </p>
! <p>The &lsquo;<samp>valgrind</samp>&rsquo; check requires the external <code>valgrind</code> simulator,
! available from <a href="http://valgrind.org/">http://valgrind.org/</a>.  The &lsquo;<samp>rtl</samp>&rsquo; checks are
! expensive and the &lsquo;<samp>df</samp>&rsquo;, &lsquo;<samp>gcac</samp>&rsquo; and &lsquo;<samp>valgrind</samp>&rsquo; checks are very
! expensive.
  </p>
  </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
  <samp>--enable-checking</samp>.  To build the stage1 compiler with
  different checking options use <samp>--enable-stage1-checking</samp>.
  The list of checking options is the same as for <samp>--enable-checking</samp>.
diff -Nrcpad gcc-8.3.0/INSTALL/download.html gcc-8.4.0/INSTALL/download.html
*** gcc-8.3.0/INSTALL/download.html	Fri Feb 22 14:22:15 2019
--- gcc-8.4.0/INSTALL/download.html	Wed Mar  4 08:32:14 2020
*************** ul.no-bullet {list-style: none}
*** 83,91 ****
  <a name="index-Downloading-GCC"></a>
  <a name="index-Downloading-the-Source"></a>
  
! <p>GCC is distributed via <a href="http://gcc.gnu.org/svn.html">SVN</a> and FTP
! tarballs compressed with <code>gzip</code> or
! <code>bzip2</code>.
  </p>
  <p>Please refer to the <a href="http://gcc.gnu.org/releases.html">releases web page</a>
  for information on how to obtain GCC.
--- 83,90 ----
  <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>.
  </p>
  <p>Please refer to the <a href="http://gcc.gnu.org/releases.html">releases web page</a>
  for information on how to obtain GCC.
diff -Nrcpad gcc-8.3.0/INSTALL/prerequisites.html gcc-8.4.0/INSTALL/prerequisites.html
*** gcc-8.3.0/INSTALL/prerequisites.html	Fri Feb 22 14:22:15 2019
--- gcc-8.4.0/INSTALL/prerequisites.html	Wed Mar  4 08:32:14 2020
*************** and up works.
*** 193,200 ****
  <p>Necessary when regenerating <samp>Makefile</samp> dependencies in libiberty.
  Necessary when regenerating <samp>libiberty/functions.texi</samp>.
  Necessary when generating manpages from Texinfo manuals.
! Used by various scripts to generate some files included in SVN (mainly
! Unicode-related and rarely changing) from source tables.
  </p>
  <p>Used by <code>automake</code>.
  </p>
--- 193,201 ----
  <p>Necessary when regenerating <samp>Makefile</samp> dependencies in libiberty.
  Necessary when regenerating <samp>libiberty/functions.texi</samp>.
  Necessary when generating manpages from Texinfo manuals.
! Used by various scripts to generate some files included in the source
! repository (mainly Unicode-related and rarely changing) from source
! tables.
  </p>
  <p>Used by <code>automake</code>.
  </p>
*************** for more information.  This bug has been
*** 331,338 ****
  <p>Necessary when modifying <samp>*.l</samp> files.
  </p>
  <p>Necessary to build GCC during development because the generated output
! files are not included in the SVN repository.  They are included in
! releases.
  </p>
  </dd>
  <dt>Texinfo version 4.7 (or later)</dt>
--- 332,339 ----
  <p>Necessary when modifying <samp>*.l</samp> files.
  </p>
  <p>Necessary to build GCC during development because the generated output
! files are not included in the version-controlled source repository.
! They are included in releases.
  </p>
  </dd>
  <dt>Texinfo version 4.7 (or later)</dt>
*************** create printable documentation in DVI or
*** 345,351 ****
  4.8 or later is required for <code>make pdf</code>.
  </p>
  <p>Necessary to build GCC documentation during development because the
! generated output files are not included in the SVN repository.  They are
  included in releases.
  </p>
  </dd>
--- 346,352 ----
  4.8 or later is required for <code>make pdf</code>.
  </p>
  <p>Necessary to build GCC documentation during development because the
! generated output files are not included in the repository.  They are
  included in releases.
  </p>
  </dd>
*************** DVI or PDF files, respectively.
*** 362,372 ****
  files in the directories below <samp>jit/docs</samp>.
  </p>
  </dd>
! <dt>SVN (any version)</dt>
  <dt>SSH (any version)</dt>
  <dd>
! <p>Necessary to access the SVN repository.  Public releases and weekly
! snapshots of the development sources are also available via FTP.
  </p>
  </dd>
  <dt>GNU diffutils version 2.7 (or later)</dt>
--- 363,373 ----
  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>
diff -Nrcpad gcc-8.3.0/LAST_UPDATED gcc-8.4.0/LAST_UPDATED
*** gcc-8.3.0/LAST_UPDATED	Fri Feb 22 14:22:14 2019
--- gcc-8.4.0/LAST_UPDATED	Wed Mar  4 08:32:14 2020
***************
*** 1 ****
! Obtained from SVN: tags/gcc_8_3_0_release revision 269117
--- 1 ----
! Obtained from git: releases/gcc-8.4.0 revision 8cd3bffead2ed1d1998c190865694f920fbc93ab
diff -Nrcpad gcc-8.3.0/MD5SUMS gcc-8.4.0/MD5SUMS
*** gcc-8.3.0/MD5SUMS	Fri Feb 22 14:40:16 2019
--- gcc-8.4.0/MD5SUMS	Wed Mar  4 08:50:14 2020
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the 
! # gcc-8.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-8.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
*************** e399c6eed967a5699498feb798da61ee  .gitat
*** 17,50 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 939203428e4150fb65ff2d726d9cf350  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
  7a7920a778049383ad2cfa24950f828c  INSTALL/binaries.html
! 5526faac085bc50003a67bf7947044df  INSTALL/build.html
! 74f77a238297c67d099d1c725845acd1  INSTALL/configure.html
! 9eb204fccc53f9692cd335dba43a98f2  INSTALL/download.html
  ccfa0bb940fa7a0576ce85de83fc53d7  INSTALL/finalinstall.html
  631f316a14d9db82001443ac601bccdb  INSTALL/gfdl.html
  783d099b442557a878b7340e49e773e7  INSTALL/index.html
  c949aa9bf4aae3cb3ccd3c9aa7800a65  INSTALL/old.html
! 1cf76015ddd32a5da46b3f8b1ab8382a  INSTALL/prerequisites.html
  0301dbd0f16478a586444e6c652443c0  INSTALL/specific.html
  6df1bbd775d96043bac1e66c21fb56c8  INSTALL/test.html
! 456208cdbed1d21384d760f9c59e64ea  LAST_UPDATED
  9dd9f840026a28fd2ac8f123aa287829  MAINTAINERS
  620a4fc4c5e9dcffd0bafd38536651e2  Makefile.def
  a07d40fad9f7fe5dfc303895a00a1bbe  Makefile.in
  c810f503e2367f1389bb607f999d4239  Makefile.tpl
! e0f6d7c134c3a396960c3ecff14795f8  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  500b9244caa7a7ab23ece1db37efa76d  compile
  cb74b6c8a93f1e46388212f44c60afed  config-ml.in
  0f6ce63fd3db85c1f6cefec2bb848b41  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  0b16e97e0e2c87cb5ed8832950caf27e  config.sub
! 1611ac26793da4a0f35235536b84a601  config/ChangeLog
  0fcd4badfe2a2191778bdf5ab94aa40c  config/acinclude.m4
  2ea0edfde0ce5ce69b49317a5650f048  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
--- 17,50 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 64a6cd3229b2ea042dd6b497e9f0160f  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
  7a7920a778049383ad2cfa24950f828c  INSTALL/binaries.html
! 7fe74ad8024e84ab9ce0a8ab9ce3cd63  INSTALL/build.html
! 9ced82896272ecf91bebee3eb23eca2e  INSTALL/configure.html
! 6c28e73b4110dc6a65328663798a1c5f  INSTALL/download.html
  ccfa0bb940fa7a0576ce85de83fc53d7  INSTALL/finalinstall.html
  631f316a14d9db82001443ac601bccdb  INSTALL/gfdl.html
  783d099b442557a878b7340e49e773e7  INSTALL/index.html
  c949aa9bf4aae3cb3ccd3c9aa7800a65  INSTALL/old.html
! a061135fa25c7b53826f14e5058f872a  INSTALL/prerequisites.html
  0301dbd0f16478a586444e6c652443c0  INSTALL/specific.html
  6df1bbd775d96043bac1e66c21fb56c8  INSTALL/test.html
! b7e3e7c2885e101f204d5bca55bf122c  LAST_UPDATED
  9dd9f840026a28fd2ac8f123aa287829  MAINTAINERS
  620a4fc4c5e9dcffd0bafd38536651e2  Makefile.def
  a07d40fad9f7fe5dfc303895a00a1bbe  Makefile.in
  c810f503e2367f1389bb607f999d4239  Makefile.tpl
! 2d713e215690ec96fc4887b92215d7fa  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  500b9244caa7a7ab23ece1db37efa76d  compile
  cb74b6c8a93f1e46388212f44c60afed  config-ml.in
  0f6ce63fd3db85c1f6cefec2bb848b41  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  0b16e97e0e2c87cb5ed8832950caf27e  config.sub
! c7bb5a606f3fa05d78a5adc2097c04d0  config/ChangeLog
  0fcd4badfe2a2191778bdf5ab94aa40c  config/acinclude.m4
  2ea0edfde0ce5ce69b49317a5650f048  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 139,145 ****
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
  a2a274a8ee83e34774f7a8974c23e0cf  configure
  d6c493da635718ff62d768fc8ab5111f  configure.ac
! 9c3593117d1c513ac8c783410113b0e7  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  8498c0cdfe3f444ad6f540ec9e11cbec  contrib/analyze_brprob.py
--- 139,145 ----
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
  a2a274a8ee83e34774f7a8974c23e0cf  configure
  d6c493da635718ff62d768fc8ab5111f  configure.ac
! f7baec5d48a0aa9ae04960347b744522  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  8498c0cdfe3f444ad6f540ec9e11cbec  contrib/analyze_brprob.py
*************** db03e57377f9eb202b7b783eb81fe40d  contri
*** 166,177 ****
  b038940be99369232106ef9e9b15bee3  contrib/filter_params.py
  dfceb883caf21f3071f7309ee0ac8a6b  contrib/gcc.doxy
  55236e85d8087042189b701cd05d84be  contrib/gcc_build
! 348fbf0368812a48cf6f92e113b771cc  contrib/gcc_update
  61ad7a180a7895f83d32ef7b15cb8386  contrib/gen_autofdo_event.py
  81de5df29d666c99588d7fe2e7559687  contrib/gennews
  2d35f147fc45f270eb169156cf7550e0  contrib/gimple.vim
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! faa262624ae1e1aabc8767663dd18c15  contrib/header-tools/ChangeLog
  1ba821a1e480c2f8ac33b68ca1097770  contrib/header-tools/README
  05ef7fb87e90ba93ee04659be072a357  contrib/header-tools/count-headers
  ba0485a3c721bce9e32407ef996d2a9d  contrib/header-tools/gcc-order-headers
--- 166,177 ----
  b038940be99369232106ef9e9b15bee3  contrib/filter_params.py
  dfceb883caf21f3071f7309ee0ac8a6b  contrib/gcc.doxy
  55236e85d8087042189b701cd05d84be  contrib/gcc_build
! d90e815d97f44b60f8523792bd0e89d7  contrib/gcc_update
  61ad7a180a7895f83d32ef7b15cb8386  contrib/gen_autofdo_event.py
  81de5df29d666c99588d7fe2e7559687  contrib/gennews
  2d35f147fc45f270eb169156cf7550e0  contrib/gimple.vim
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! 27140d77e1a71e763c1fde55317008ef  contrib/header-tools/ChangeLog
  1ba821a1e480c2f8ac33b68ca1097770  contrib/header-tools/README
  05ef7fb87e90ba93ee04659be072a357  contrib/header-tools/count-headers
  ba0485a3c721bce9e32407ef996d2a9d  contrib/header-tools/gcc-order-headers
*************** a34668cfad9dec733354503fbc67fb24  contri
*** 194,200 ****
  87a19b40fbd220938cf6c23c42c255e2  contrib/prepare_patch.sh
  a6f2829359f65be5c182fd414e30fe8a  contrib/prerequisites.md5
  663d159a25cdcd62d1182f124f0dae82  contrib/prerequisites.sha512
! e853ef3f0955cb4a2896ac9db76c4324  contrib/reghunt/ChangeLog
  cf247a580e49d212518de409793db0a8  contrib/reghunt/bin/gcc-build-full
  724e70ea3e80f87f2a201bbe2f1eef37  contrib/reghunt/bin/gcc-build-simple
  3f2318bae7562a4ad1639e686916a545  contrib/reghunt/bin/gcc-cleanup
--- 194,200 ----
  87a19b40fbd220938cf6c23c42c255e2  contrib/prepare_patch.sh
  a6f2829359f65be5c182fd414e30fe8a  contrib/prerequisites.md5
  663d159a25cdcd62d1182f124f0dae82  contrib/prerequisites.sha512
! da46c0c42a0116da3adb629b2baa3d2e  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
*** 253,259 ****
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! c3f574b5661a61893872ed12e007240d  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
--- 253,259 ----
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! a4c3e058eed4fcd238d42149b8751603  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
*************** dc562ddb86567c65e82953825713dc4b  contri
*** 269,275 ****
  7f6418948396f8250447e3e6182322d8  contrib/repro_fail
  39442479834f1c02d6ce11eab6889b6e  contrib/test_installed
  2c2a06a23394c548bb4afba3c25aacce  contrib/test_recheck
! d4cd6e25d218d26c1eb5aca9e7b82de3  contrib/test_summary
  45bd745cf293127fa6b729c7b58cf11f  contrib/testsuite-management/validate_failures.py
  0202e4875fa43ec09cf5e8442c873a56  contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail
  2c5264fb1400a0a2408fd44a4e345fc6  contrib/texi2pod.pl
--- 269,275 ----
  7f6418948396f8250447e3e6182322d8  contrib/repro_fail
  39442479834f1c02d6ce11eab6889b6e  contrib/test_installed
  2c2a06a23394c548bb4afba3c25aacce  contrib/test_recheck
! c650e776de65a2de80bbfb0033641805  contrib/test_summary
  45bd745cf293127fa6b729c7b58cf11f  contrib/testsuite-management/validate_failures.py
  0202e4875fa43ec09cf5e8442c873a56  contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail
  2c5264fb1400a0a2408fd44a4e345fc6  contrib/texi2pod.pl
*************** a215e6682085a99499f7caeb741d06e5  contri
*** 278,284 ****
  45d4839f2ac702761b88d502311d47ef  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 598b92dcbc3157348b691e34ffa24255  fixincludes/ChangeLog
  6de190723745dc3f75080144dfa2215e  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
--- 278,284 ----
  45d4839f2ac702761b88d502311d47ef  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! aab0bd78608dcf801a8c93ea429c8d91  fixincludes/ChangeLog
  6de190723745dc3f75080144dfa2215e  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
*************** a047119816700b0c31847ca6f4f52aab  fixinc
*** 291,303 ****
  8a18294371ee69da33042b874d27b77e  fixincludes/fixinc.in
  1582ffd94ecc91318eebfb3b81e0bcb1  fixincludes/fixincl.c
  adf245e3714f799eafba40af16be8eb5  fixincludes/fixincl.tpl
! 221997491bff1cbeda6e439cb37e2bdb  fixincludes/fixincl.x
  545875b4fe1c26bc3e1befc75b34e9f5  fixincludes/fixlib.c
  620c770139fc32c75b975b614d3156e8  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  6df145c7cea1e2099cf97a0d83564aca  fixincludes/genfixes
! d4f06d1dd56dee1976b145a88c0da74a  fixincludes/inclhack.def
  44bfe955e0fad29af749b16cd12fa743  fixincludes/mkfixinc.sh
  5f9960cfe65b2e6bef658f770e52dfef  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
--- 291,303 ----
  8a18294371ee69da33042b874d27b77e  fixincludes/fixinc.in
  1582ffd94ecc91318eebfb3b81e0bcb1  fixincludes/fixincl.c
  adf245e3714f799eafba40af16be8eb5  fixincludes/fixincl.tpl
! 8c0a32dd23d25079a519d4fe5129977c  fixincludes/fixincl.x
  545875b4fe1c26bc3e1befc75b34e9f5  fixincludes/fixlib.c
  620c770139fc32c75b975b614d3156e8  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  6df145c7cea1e2099cf97a0d83564aca  fixincludes/genfixes
! a3f0f3e848052632ee5067bb93f2ae4b  fixincludes/inclhack.def
  44bfe955e0fad29af749b16cd12fa743  fixincludes/mkfixinc.sh
  5f9960cfe65b2e6bef658f770e52dfef  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
*************** ce39eed82f08475e7b77ba8f3cbd9e41  fixinc
*** 314,320 ****
  1345522e326f071aeb69b1c490fc8fc2  fixincludes/tests/base/ansi/math.h
  fb543bca7c73da85f944600810ef2171  fixincludes/tests/base/ansi/stdlib.h
  d6a40f191014042c3a1bf44086be6773  fixincludes/tests/base/arch/i960/archI960.h
! 7dc3902a9952707702003021370a1cc7  fixincludes/tests/base/architecture/ppc/math.h
  0344107d793447f3bd08f341f61633af  fixincludes/tests/base/assert.h
  0d12f925a64c4fbfb164737569788298  fixincludes/tests/base/bits/fenv.h
  06f1aca4509b42c45b0fcbe0042b88a8  fixincludes/tests/base/bits/huge_val.h
--- 314,320 ----
  1345522e326f071aeb69b1c490fc8fc2  fixincludes/tests/base/ansi/math.h
  fb543bca7c73da85f944600810ef2171  fixincludes/tests/base/ansi/stdlib.h
  d6a40f191014042c3a1bf44086be6773  fixincludes/tests/base/arch/i960/archI960.h
! 08a0e30001bbbf762503a3ac7b0f1ea1  fixincludes/tests/base/architecture/ppc/math.h
  0344107d793447f3bd08f341f61633af  fixincludes/tests/base/assert.h
  0d12f925a64c4fbfb164737569788298  fixincludes/tests/base/bits/fenv.h
  06f1aca4509b42c45b0fcbe0042b88a8  fixincludes/tests/base/bits/huge_val.h
*************** f067e3903c09c98db57bd84f7eaf8df5  fixinc
*** 326,331 ****
--- 326,332 ----
  69f7247dd4e4cf4af4aff6d92ae29999  fixincludes/tests/base/ctrl-quotes-def-1.h
  f1160d24e4253643c441ba3a4b227e43  fixincludes/tests/base/ctype.h
  7664d896c62ce0ef7874adff4ba21c96  fixincludes/tests/base/curses.h
+ 339892e95a87af44aed61c0cd1f7beb9  fixincludes/tests/base/dispatch/object.h
  1c654a39cf9704389beaac48967e4217  fixincludes/tests/base/errno.h
  099987dd3e705438dc51edcc5a202f45  fixincludes/tests/base/fcntl.h
  31a666eaf86d15fa19e6d1834f15ec38  fixincludes/tests/base/features.h
*************** f1160d24e4253643c441ba3a4b227e43  fixinc
*** 333,339 ****
  7e364ced80dd56f237390965aa7f15d0  fixincludes/tests/base/hsfs/hsfs_spec.h
  53be8accb111b5d7b7323bbfc52ed91f  fixincludes/tests/base/i386/setjmp.h
  bfb58e3983fc133c965e434e57aed732  fixincludes/tests/base/ia64/sys/getppdp.h
! 498c99de6daa94738d83e68ec4e0a295  fixincludes/tests/base/inttypes.h
  833e9408a49784184bee7981d665c911  fixincludes/tests/base/io-quotes-def-1.h
  a11561f51aa57e84e571f2073fb6bf60  fixincludes/tests/base/ioLib.h
  c8dd71b57c3a35b0c6760f7d38af6f42  fixincludes/tests/base/iso/math_c99.h
--- 334,340 ----
  7e364ced80dd56f237390965aa7f15d0  fixincludes/tests/base/hsfs/hsfs_spec.h
  53be8accb111b5d7b7323bbfc52ed91f  fixincludes/tests/base/i386/setjmp.h
  bfb58e3983fc133c965e434e57aed732  fixincludes/tests/base/ia64/sys/getppdp.h
! 4a2008b1ee18a83a9c19d7bdc9c7f960  fixincludes/tests/base/inttypes.h
  833e9408a49784184bee7981d665c911  fixincludes/tests/base/io-quotes-def-1.h
  a11561f51aa57e84e571f2073fb6bf60  fixincludes/tests/base/ioLib.h
  c8dd71b57c3a35b0c6760f7d38af6f42  fixincludes/tests/base/iso/math_c99.h
*************** a911f5fbb127353024e77149fcf90596  fixinc
*** 353,358 ****
--- 354,361 ----
  f690db296a82aeefa0bfe9ad74a2b71c  fixincludes/tests/base/netinet/in.h
  2649ccca3396541aeb5e612d4b4a3141  fixincludes/tests/base/netinet/ip.h
  f4a72388e98f34c098a3467dce9aa4e1  fixincludes/tests/base/obstack.h
+ c213736f179d8de08a09a9278e048d91  fixincludes/tests/base/os/availability.h
+ c3da2b1720112f2adb1c2bbf65563364  fixincludes/tests/base/os/base.h
  294cd5d0b36b2fc66737cc43cd46ed69  fixincludes/tests/base/os/trace.h
  c24d1be3b5afd871e9f78e1a67b9cb82  fixincludes/tests/base/pixrect/memvar.h
  1501a200fb392ae040545c7591f79498  fixincludes/tests/base/pthread.h
*************** a5e817d35ded04a0fb03999b50c0e89e  fixinc
*** 415,426 ****
  955462b555900ecd3934223c64e21fa7  fixincludes/tests/base/types/vxTypesBase.h
  c78e762f2c91f2af991feda7d3d7f4b2  fixincludes/tests/base/unistd.h
  1ee24522c0ca412fe52e980d97a14e74  gcc/ABOUT-GCC-NLS
! 221b09865301e0eddff63f3e7cf11b2c  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 9fb5f69650a3a5b745aa02ccd2625958  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 418,429 ----
  955462b555900ecd3934223c64e21fa7  fixincludes/tests/base/types/vxTypesBase.h
  c78e762f2c91f2af991feda7d3d7f4b2  fixincludes/tests/base/unistd.h
  1ee24522c0ca412fe52e980d97a14e74  gcc/ABOUT-GCC-NLS
! 736d2c7660f390c805e83cfbb3ecb25a  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! fb75e9771fd50cd6594a98f9620381af  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 450,467 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 95dc9e0b0c7669a0e7eb6d92b307616b  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  fd3c8bf53697d338b119daffaa28a665  gcc/LANGUAGES
! 3d61823af3fbda5cc7534bc7c5c27781  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  4bf0c70e571b9a6a48471723c6fd95c7  gcc/README.Portability
  4e17445717b172d487a1caa2f8300407  gcc/acinclude.m4
  9545fe83576dc99e441c64e268711730  gcc/aclocal.m4
! ae453402056812ed4e0dc16003e8946a  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
--- 453,470 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 5b40f8295199acf034129d37f84171a1  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  fd3c8bf53697d338b119daffaa28a665  gcc/LANGUAGES
! 8fe4b535bb48d67b2cfa97ae85748bd4  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  4bf0c70e571b9a6a48471723c6fd95c7  gcc/README.Portability
  4e17445717b172d487a1caa2f8300407  gcc/acinclude.m4
  9545fe83576dc99e441c64e268711730  gcc/aclocal.m4
! eebb5cabbde95407fb0e9161f4385223  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
*************** a8c58e6bc5892e52f93e8e7e7500934e  gcc/ad
*** 629,635 ****
  afee0bb5efcf10a2f9c8259a744da8b1  gcc/ada/exp_ch7.ads
  c0922097479555efdd0e41d0dbf56856  gcc/ada/exp_ch8.adb
  f3821bfe0f70be56c8a1aaf9f6723fda  gcc/ada/exp_ch8.ads
! 04898354035768d8f14a42f3759343e2  gcc/ada/exp_ch9.adb
  54e06f0e61cb6235041a417eb633e41b  gcc/ada/exp_ch9.ads
  a251e48041ce930f07fe60d4daec9a2b  gcc/ada/exp_code.adb
  46f17915b902ec2a2b643453d03e1676  gcc/ada/exp_code.ads
--- 632,638 ----
  afee0bb5efcf10a2f9c8259a744da8b1  gcc/ada/exp_ch7.ads
  c0922097479555efdd0e41d0dbf56856  gcc/ada/exp_ch8.adb
  f3821bfe0f70be56c8a1aaf9f6723fda  gcc/ada/exp_ch8.ads
! fb7db29efaea69d4de1639a5b7910f00  gcc/ada/exp_ch9.adb
  54e06f0e61cb6235041a417eb633e41b  gcc/ada/exp_ch9.ads
  a251e48041ce930f07fe60d4daec9a2b  gcc/ada/exp_code.adb
  46f17915b902ec2a2b643453d03e1676  gcc/ada/exp_code.ads
*************** f4d7aedee9c8cf8ef64ca6a1b3b11cb3  gcc/ad
*** 665,671 ****
  e4cf3b07fc834a03762c5b935586576a  gcc/ada/exp_util.ads
  ddf62c6849c389d453e5707a77ea44b0  gcc/ada/expander.adb
  f4807c67eb4f47f6f7c056b7f2f79977  gcc/ada/expander.ads
! b6421b6545cea43d0781412fd87f7d21  gcc/ada/expect.c
  d72760f80193283f9674a85d1edfbbfc  gcc/ada/fe.h
  e15366c453255f8f4d84e1caa1fb0614  gcc/ada/final.c
  80361954f6f11ae34c8de3ccdbd2881c  gcc/ada/fmap.adb
--- 668,674 ----
  e4cf3b07fc834a03762c5b935586576a  gcc/ada/exp_util.ads
  ddf62c6849c389d453e5707a77ea44b0  gcc/ada/expander.adb
  f4807c67eb4f47f6f7c056b7f2f79977  gcc/ada/expander.ads
! 9b9aa0fa263cc612ea4dfabc20fa9419  gcc/ada/expect.c
  d72760f80193283f9674a85d1edfbbfc  gcc/ada/fe.h
  e15366c453255f8f4d84e1caa1fb0614  gcc/ada/final.c
  80361954f6f11ae34c8de3ccdbd2881c  gcc/ada/fmap.adb
*************** afc4e22f2d981249d5da16dd5480c9a8  gcc/ad
*** 681,701 ****
  8c12f4e44d89584927ba1b596ca6555e  gcc/ada/frontend.adb
  873b04d6a203fcb76a7e6b7c2114e484  gcc/ada/frontend.ads
  71c402028086d8495d1c055f64892297  gcc/ada/gcc-interface/Make-lang.in
! e2fc2e586c98ee94cabd0eff35fe08c3  gcc/ada/gcc-interface/Makefile.in
  055be3d11fa6ccb53ffe7f8970a005ce  gcc/ada/gcc-interface/ada-tree.def
  91af834a131d212a8533dada32c52bf9  gcc/ada/gcc-interface/ada-tree.h
  51c95420b5900990141d2e5705582197  gcc/ada/gcc-interface/ada.h
  4cbfd794461da0feb1b8661ec623b6c6  gcc/ada/gcc-interface/config-lang.in
  9779c4debc13c6f1cfa1e4e6a6e6c638  gcc/ada/gcc-interface/cuintp.c
! bb087024cc7223edca88c2027110192d  gcc/ada/gcc-interface/decl.c
  c413d4d50e9563859f4d751a4404b705  gcc/ada/gcc-interface/gadaint.h
  79037745a5ad4eb13341f43896160ac0  gcc/ada/gcc-interface/gigi.h
  f2528ece7aa7e2ed8123de8fe434252a  gcc/ada/gcc-interface/lang-specs.h
  86e28c1ab2be02440b174f984633984c  gcc/ada/gcc-interface/lang.opt
  03dc38205b0a07a98b1ea605a3204eae  gcc/ada/gcc-interface/misc.c
  7bd3630f35c5ac7b5c6cfaf8b16e5723  gcc/ada/gcc-interface/targtyps.c
! c980d8b1122d57cc1c4c555654b10f42  gcc/ada/gcc-interface/trans.c
! ce969d924b13d628ff017e05b9798033  gcc/ada/gcc-interface/utils.c
  4776e3332d5b10a5915f26a92697aaa1  gcc/ada/gcc-interface/utils2.c
  a45c219685ae6ac76a079cae99c36c20  gcc/ada/get_scos.adb
  4e460bb021c0b86d52e8fc3557dedbd6  gcc/ada/get_scos.ads
--- 684,704 ----
  8c12f4e44d89584927ba1b596ca6555e  gcc/ada/frontend.adb
  873b04d6a203fcb76a7e6b7c2114e484  gcc/ada/frontend.ads
  71c402028086d8495d1c055f64892297  gcc/ada/gcc-interface/Make-lang.in
! e3933bd11b388baf0a7efbe33711404a  gcc/ada/gcc-interface/Makefile.in
  055be3d11fa6ccb53ffe7f8970a005ce  gcc/ada/gcc-interface/ada-tree.def
  91af834a131d212a8533dada32c52bf9  gcc/ada/gcc-interface/ada-tree.h
  51c95420b5900990141d2e5705582197  gcc/ada/gcc-interface/ada.h
  4cbfd794461da0feb1b8661ec623b6c6  gcc/ada/gcc-interface/config-lang.in
  9779c4debc13c6f1cfa1e4e6a6e6c638  gcc/ada/gcc-interface/cuintp.c
! 05c0cf1ca942240a3787f87853f841b1  gcc/ada/gcc-interface/decl.c
  c413d4d50e9563859f4d751a4404b705  gcc/ada/gcc-interface/gadaint.h
  79037745a5ad4eb13341f43896160ac0  gcc/ada/gcc-interface/gigi.h
  f2528ece7aa7e2ed8123de8fe434252a  gcc/ada/gcc-interface/lang-specs.h
  86e28c1ab2be02440b174f984633984c  gcc/ada/gcc-interface/lang.opt
  03dc38205b0a07a98b1ea605a3204eae  gcc/ada/gcc-interface/misc.c
  7bd3630f35c5ac7b5c6cfaf8b16e5723  gcc/ada/gcc-interface/targtyps.c
! b7dc39783f6480e5eb33eb654b805f38  gcc/ada/gcc-interface/trans.c
! 7119f197664045ed12838a130a43b701  gcc/ada/gcc-interface/utils.c
  4776e3332d5b10a5915f26a92697aaa1  gcc/ada/gcc-interface/utils2.c
  a45c219685ae6ac76a079cae99c36c20  gcc/ada/get_scos.adb
  4e460bb021c0b86d52e8fc3557dedbd6  gcc/ada/get_scos.ads
*************** f202eac0fe58728d025773bd04937b82  gcc/ad
*** 719,725 ****
  670cd3e724c6b64c7b322c6e75a0e7c4  gcc/ada/gnathtml.pl
  6fcef43a4eedf15f9c669aaf97c14961  gcc/ada/gnatkr.adb
  ea90549092c26c261b89b034c438b34f  gcc/ada/gnatkr.ads
! b7fa7a1a70254152b6ba51d235179d63  gcc/ada/gnatlink.adb
  2cfddc30e8732370a3afce2cf6d51a3b  gcc/ada/gnatlink.ads
  7f23839006e1d5c4bc2b1ade04d2a5a1  gcc/ada/gnatls.adb
  cbb111e0d378d94142c3b7ba1e9a91e3  gcc/ada/gnatls.ads
--- 722,728 ----
  670cd3e724c6b64c7b322c6e75a0e7c4  gcc/ada/gnathtml.pl
  6fcef43a4eedf15f9c669aaf97c14961  gcc/ada/gnatkr.adb
  ea90549092c26c261b89b034c438b34f  gcc/ada/gnatkr.ads
! e86aa9f8717db1af7b0c7c46be1b92d2  gcc/ada/gnatlink.adb
  2cfddc30e8732370a3afce2cf6d51a3b  gcc/ada/gnatlink.ads
  7f23839006e1d5c4bc2b1ade04d2a5a1  gcc/ada/gnatls.adb
  cbb111e0d378d94142c3b7ba1e9a91e3  gcc/ada/gnatls.ads
*************** dc9bcf0d23e819f28eb0636c651b893e  gcc/ad
*** 2238,2244 ****
  0f4c21401ad2531f8c5d4010537dc6d2  gcc/ada/libgnat/sequenio.ads
  c7ea319b29245129911a221db181e9e5  gcc/ada/libgnat/system-aix.ads
  40c25fa0de20aeeaa00288848dc307d9  gcc/ada/libgnat/system-darwin-arm.ads
! 58e0046a6ae4e6b77bc8da33ed0c38de  gcc/ada/libgnat/system-darwin-ppc.ads
  04080cfd1852dac606d6512bdd9b99d7  gcc/ada/libgnat/system-darwin-x86.ads
  40991badbee93e63146414baf49559e6  gcc/ada/libgnat/system-djgpp.ads
  7fcff2401f4d192d290adbb99539fd2f  gcc/ada/libgnat/system-dragonfly-x86_64.ads
--- 2241,2247 ----
  0f4c21401ad2531f8c5d4010537dc6d2  gcc/ada/libgnat/sequenio.ads
  c7ea319b29245129911a221db181e9e5  gcc/ada/libgnat/system-aix.ads
  40c25fa0de20aeeaa00288848dc307d9  gcc/ada/libgnat/system-darwin-arm.ads
! 66f9fcddaf74f3033b21faa1352161da  gcc/ada/libgnat/system-darwin-ppc.ads
  04080cfd1852dac606d6512bdd9b99d7  gcc/ada/libgnat/system-darwin-x86.ads
  40991badbee93e63146414baf49559e6  gcc/ada/libgnat/system-djgpp.ads
  7fcff2401f4d192d290adbb99539fd2f  gcc/ada/libgnat/system-dragonfly-x86_64.ads
*************** bddff8ef880c337b7fbdc59b59ae739b  gcc/ad
*** 2333,2340 ****
  1adbc160ea82fcbf5ad0247744eaafd4  gcc/ada/osint-l.ads
  52b218492d360505c0bda6a48ee117b1  gcc/ada/osint-m.adb
  3eae9e3edfb598a8817ad58f45b9198a  gcc/ada/osint-m.ads
! 052c08f48303e8391318232c56b9137c  gcc/ada/osint.adb
! b1f07448b33754ab54b8515a5457bc79  gcc/ada/osint.ads
  3be5fdc94e483fa86af57b5b6230549f  gcc/ada/output.adb
  956252bff10e71f2011c3e2b23ad3039  gcc/ada/output.ads
  389d8babf840660f42ba2f7c9591b7d6  gcc/ada/par-ch10.adb
--- 2336,2343 ----
  1adbc160ea82fcbf5ad0247744eaafd4  gcc/ada/osint-l.ads
  52b218492d360505c0bda6a48ee117b1  gcc/ada/osint-m.adb
  3eae9e3edfb598a8817ad58f45b9198a  gcc/ada/osint-m.ads
! a7c740b28ce7a52c1958a03e64550c18  gcc/ada/osint.adb
! 556626e3ee012d77ec1dd219940cc388  gcc/ada/osint.ads
  3be5fdc94e483fa86af57b5b6230549f  gcc/ada/output.adb
  956252bff10e71f2011c3e2b23ad3039  gcc/ada/output.ads
  389d8babf840660f42ba2f7c9591b7d6  gcc/ada/par-ch10.adb
*************** c5745397b07f10fa5464be4d9354f538  gcc/ad
*** 2427,2433 ****
  8d79ab188ecf8a9394c53603deeb71c9  gcc/ada/sem_ch6.ads
  7d2fc1e15396c9cd17dc7b038f67fe62  gcc/ada/sem_ch7.adb
  fa7bc8a457629b9e98171db9110a99ec  gcc/ada/sem_ch7.ads
! cbc442cbe0f0cde03fd79b4d3213ea5d  gcc/ada/sem_ch8.adb
  c766e01f41ff6fb17a55390250ca0342  gcc/ada/sem_ch8.ads
  b2a1b25562913c20071ce580132df31f  gcc/ada/sem_ch9.adb
  cb6ebb33d2db706c3ff65265c929a9a2  gcc/ada/sem_ch9.ads
--- 2430,2436 ----
  8d79ab188ecf8a9394c53603deeb71c9  gcc/ada/sem_ch6.ads
  7d2fc1e15396c9cd17dc7b038f67fe62  gcc/ada/sem_ch7.adb
  fa7bc8a457629b9e98171db9110a99ec  gcc/ada/sem_ch7.ads
! 56b328307517e4f051b55f07dcdf7a94  gcc/ada/sem_ch8.adb
  c766e01f41ff6fb17a55390250ca0342  gcc/ada/sem_ch8.ads
  b2a1b25562913c20071ce580132df31f  gcc/ada/sem_ch9.adb
  cb6ebb33d2db706c3ff65265c929a9a2  gcc/ada/sem_ch9.ads
*************** d51fece626cc19463cbd55ba9769d7b9  gcc/ad
*** 2437,2443 ****
  f5cf815dcd3de98742a2ac49c2929567  gcc/ada/sem_disp.ads
  56ee042f98391d71cd117cd7a1be909d  gcc/ada/sem_dist.adb
  3fe2e28ea1e92978704c4a2e408ebb51  gcc/ada/sem_dist.ads
! 9f90116e4c31e55046c06a9f038fa7b6  gcc/ada/sem_elab.adb
  c07c35a4a0cf8de9258b77bb435a0cd9  gcc/ada/sem_elab.ads
  02cf3a296155d51e7f6fb4f0813e5c8c  gcc/ada/sem_elim.adb
  194aa5ab139949b2f92a70a2a7a4a38c  gcc/ada/sem_elim.ads
--- 2440,2446 ----
  f5cf815dcd3de98742a2ac49c2929567  gcc/ada/sem_disp.ads
  56ee042f98391d71cd117cd7a1be909d  gcc/ada/sem_dist.adb
  3fe2e28ea1e92978704c4a2e408ebb51  gcc/ada/sem_dist.ads
! 9147e3e2f97c82454843fa33ddab1c33  gcc/ada/sem_elab.adb
  c07c35a4a0cf8de9258b77bb435a0cd9  gcc/ada/sem_elab.ads
  02cf3a296155d51e7f6fb4f0813e5c8c  gcc/ada/sem_elim.adb
  194aa5ab139949b2f92a70a2a7a4a38c  gcc/ada/sem_elim.ads
*************** e22fa549d93a0ebcbbd8e5dc76987344  gcc/ad
*** 2455,2466 ****
  16fab00ddb444a8d9993da314eb5e63e  gcc/ada/sem_scil.ads
  2d56888604f862cac74888844f6a1707  gcc/ada/sem_smem.adb
  7541ea89ec886fcb260d39ceaaf654e0  gcc/ada/sem_smem.ads
! 9fb353e3ab3b277b8d5d7f5c0a3b7cb0  gcc/ada/sem_spark.adb
  21d0d7b3347ef38a811200511a006c03  gcc/ada/sem_spark.ads
  cbb4ace58822e09cde57bfe26f2654d6  gcc/ada/sem_type.adb
  7db89f9e5e9f6ad281619641e4c29d21  gcc/ada/sem_type.ads
! 8be382ebb52e2121d5c8cb24def1c934  gcc/ada/sem_util.adb
! 7e31aa6b59f770e4a1d568ce6e9609e0  gcc/ada/sem_util.ads
  abf0651cccb1a746bdf2e22bdeb506ba  gcc/ada/sem_warn.adb
  4a9f9d4da59001608e956c77a11b5fa3  gcc/ada/sem_warn.ads
  60cec7e313c26824acef72ef58ecd7fb  gcc/ada/set_targ.adb
--- 2458,2469 ----
  16fab00ddb444a8d9993da314eb5e63e  gcc/ada/sem_scil.ads
  2d56888604f862cac74888844f6a1707  gcc/ada/sem_smem.adb
  7541ea89ec886fcb260d39ceaaf654e0  gcc/ada/sem_smem.ads
! 8878fa2167703037228618b68f986554  gcc/ada/sem_spark.adb
  21d0d7b3347ef38a811200511a006c03  gcc/ada/sem_spark.ads
  cbb4ace58822e09cde57bfe26f2654d6  gcc/ada/sem_type.adb
  7db89f9e5e9f6ad281619641e4c29d21  gcc/ada/sem_type.ads
! 166f45581edb69a5f2b91b4f8ec9f12b  gcc/ada/sem_util.adb
! 50bc81b76c3210deb32967847cd5b7e6  gcc/ada/sem_util.ads
  abf0651cccb1a746bdf2e22bdeb506ba  gcc/ada/sem_warn.adb
  4a9f9d4da59001608e956c77a11b5fa3  gcc/ada/sem_warn.ads
  60cec7e313c26824acef72ef58ecd7fb  gcc/ada/set_targ.adb
*************** c3dae1859d21f7c2f01b0f2510d20b64  gcc/ad
*** 2577,2589 ****
  289f9bd83af4724202e19c996d488139  gcc/ada/xutil.adb
  ee408c7af74a39cebe1a5a960b5398ad  gcc/ada/xutil.ads
  ccc8a6c89c70316fbf743387ad7e88b1  gcc/addresses.h
! 8853e2cddaaf5369714a2a3151746fd4  gcc/alias.c
  d87be372e6413268b6df997b6fbbecd9  gcc/alias.h
  43077afd2c2c7b5548033af6eff2ef37  gcc/alloc-pool.c
  c3d6da057bb08042c82e74bfe2691f41  gcc/alloc-pool.h
  cd831836371e584656dbb4ac46b2096f  gcc/asan.c
  59d0130b614af26cafcfa232abb98570  gcc/asan.h
! 1f252fe00caeea36cd235ce3b5109642  gcc/attribs.c
  6ec93b9c82f4f7c005de1809013859b5  gcc/attribs.h
  55ff3d7e690bdd078013434e72d9e5d9  gcc/auto-inc-dec.c
  32c5a204e510e5e4d08ae1d4e9920cc8  gcc/auto-profile.c
--- 2580,2592 ----
  289f9bd83af4724202e19c996d488139  gcc/ada/xutil.adb
  ee408c7af74a39cebe1a5a960b5398ad  gcc/ada/xutil.ads
  ccc8a6c89c70316fbf743387ad7e88b1  gcc/addresses.h
! e34bc1cb17e618db56b92da3daa4ef6c  gcc/alias.c
  d87be372e6413268b6df997b6fbbecd9  gcc/alias.h
  43077afd2c2c7b5548033af6eff2ef37  gcc/alloc-pool.c
  c3d6da057bb08042c82e74bfe2691f41  gcc/alloc-pool.h
  cd831836371e584656dbb4ac46b2096f  gcc/asan.c
  59d0130b614af26cafcfa232abb98570  gcc/asan.h
! 45a046ee4b1ebb68348028293a952546  gcc/attribs.c
  6ec93b9c82f4f7c005de1809013859b5  gcc/attribs.h
  55ff3d7e690bdd078013434e72d9e5d9  gcc/auto-inc-dec.c
  32c5a204e510e5e4d08ae1d4e9920cc8  gcc/auto-profile.c
*************** cf5cc84d6c8708c6b98fc5347eeaf9f5  gcc/ba
*** 2595,2601 ****
  3e2d1891aaf9c07b6f94d69355650960  gcc/bitmap.c
  0fc68a130796238f7c1d2cbf5c87d1e5  gcc/bitmap.h
  d434ffd5b0b9fcb3f672655d68c932e9  gcc/brig-builtins.def
! 86fd9800f208005baab0def55fadfe49  gcc/brig/ChangeLog
  d5124f715728b25bb9e7a6336ea748a3  gcc/brig/Make-lang.in
  e9fc01abc2e20427439c8df6e6da27fa  gcc/brig/brig-builtins.h
  fa6cff5049ae5807635cc0da6db14c7f  gcc/brig/brig-c.h
--- 2598,2604 ----
  3e2d1891aaf9c07b6f94d69355650960  gcc/bitmap.c
  0fc68a130796238f7c1d2cbf5c87d1e5  gcc/bitmap.h
  d434ffd5b0b9fcb3f672655d68c932e9  gcc/brig-builtins.def
! 599c0f5252bf42d62164dd486ee4f60b  gcc/brig/ChangeLog
  d5124f715728b25bb9e7a6336ea748a3  gcc/brig/Make-lang.in
  e9fc01abc2e20427439c8df6e6da27fa  gcc/brig/brig-builtins.h
  fa6cff5049ae5807635cc0da6db14c7f  gcc/brig/brig-c.h
*************** c0e66ae3f84286dbfd11fb1be986c7c7  gcc/br
*** 2639,2653 ****
  8d7d6d76f9bfaf43c295c94555cc3164  gcc/bt-load.c
  03a22772afa5699b769bede62b7b174e  gcc/builtin-attrs.def
  15372509e52613bd16188d9dd1ca63e3  gcc/builtin-types.def
! ef7b23b2cbcd738fd11b28c42c741403  gcc/builtins.c
  2a1b8021943e4daa431587f1471de494  gcc/builtins.def
  9bcb391dae5002d8996cf5045dd11878  gcc/builtins.h
! f6ff5fea9c7357a8ccd886ec4b07c7e1  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
! 147581098ea752b9a8dc4652287a7584  gcc/c-family/c-ada-spec.c
  b33c816f5ee940653cb0b68d462eef83  gcc/c-family/c-ada-spec.h
! 76dae446b694da096d31b83185aaf6d2  gcc/c-family/c-attribs.c
! 057772add5c3c601a208a190464263be  gcc/c-family/c-common.c
  40eb08cd95b3fc27115b899947f61b13  gcc/c-family/c-common.def
  5602734cc869c128c91d63297300a0ea  gcc/c-family/c-common.h
  986a325cd08532eb239af23ca67001f6  gcc/c-family/c-cppbuiltin.c
--- 2642,2656 ----
  8d7d6d76f9bfaf43c295c94555cc3164  gcc/bt-load.c
  03a22772afa5699b769bede62b7b174e  gcc/builtin-attrs.def
  15372509e52613bd16188d9dd1ca63e3  gcc/builtin-types.def
! e0d46084bb404aa170f800e4deb82c0b  gcc/builtins.c
  2a1b8021943e4daa431587f1471de494  gcc/builtins.def
  9bcb391dae5002d8996cf5045dd11878  gcc/builtins.h
! a0f8bd090abe7d5610330dc625348a5c  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
! d861c0e21c6f71c8cc98d0d1be4fc0a7  gcc/c-family/c-ada-spec.c
  b33c816f5ee940653cb0b68d462eef83  gcc/c-family/c-ada-spec.h
! 19674917d475ebc29e21ad8ee967b1be  gcc/c-family/c-attribs.c
! 39c76dd719ddd4d53dc7dd8fa0b54870  gcc/c-family/c-common.c
  40eb08cd95b3fc27115b899947f61b13  gcc/c-family/c-common.def
  5602734cc869c128c91d63297300a0ea  gcc/c-family/c-common.h
  986a325cd08532eb239af23ca67001f6  gcc/c-family/c-cppbuiltin.c
*************** a78c125312fd1a0a646b4fff13ec0eb3  gcc/c-
*** 2657,2665 ****
  f51dc5f31e37316a12af131fb404419a  gcc/c-family/c-gimplify.c
  32af1d89296e1700ec42ec18f59ab5fe  gcc/c-family/c-indentation.c
  03e17dd1c0a412af6173d0a7d8dd9e89  gcc/c-family/c-indentation.h
! b3fca1704741e75e8d979f3836e1cda7  gcc/c-family/c-lex.c
  1c1ec9bdcfa8a2968d6e3112bada0d1c  gcc/c-family/c-objc.h
! 4e300256ecbadc1e55bddb5eab72d0d9  gcc/c-family/c-omp.c
  05691df05e271e35c46a11915d7e7dde  gcc/c-family/c-opts.c
  7bdc8173b6e53053a7f661920d64550a  gcc/c-family/c-pch.c
  e43080a556d7887ec3dc20e1d2c6f1ef  gcc/c-family/c-ppoutput.c
--- 2660,2668 ----
  f51dc5f31e37316a12af131fb404419a  gcc/c-family/c-gimplify.c
  32af1d89296e1700ec42ec18f59ab5fe  gcc/c-family/c-indentation.c
  03e17dd1c0a412af6173d0a7d8dd9e89  gcc/c-family/c-indentation.h
! d5f7f1567aa313eb4d2705bc9db51613  gcc/c-family/c-lex.c
  1c1ec9bdcfa8a2968d6e3112bada0d1c  gcc/c-family/c-objc.h
! 2deef7d2c16da9a12033ceefbc0d9c7a  gcc/c-family/c-omp.c
  05691df05e271e35c46a11915d7e7dde  gcc/c-family/c-opts.c
  7bdc8173b6e53053a7f661920d64550a  gcc/c-family/c-pch.c
  e43080a556d7887ec3dc20e1d2c6f1ef  gcc/c-family/c-ppoutput.c
*************** dd1bbbd86496f36b545e0da0cbf6ad06  gcc/c-
*** 2682,2708 ****
  e5b1bb6f1ff65e7e00f9d027cd10f4c4  gcc/c-family/known-headers.h
  79a7dfe635c1dd847d9ddea3eea8bea6  gcc/c-family/name-hint.h
  6d2f8a9ee35c08c8901516bff5a43a2e  gcc/c-family/stub-objc.c
! aa9767210cec9c127a6122d6a4f1bdf7  gcc/c/ChangeLog
  d1ceae32515e69250a6935d030517330  gcc/c/Make-lang.in
  e1f5e7fe13ac52360bb6f9e248f9d127  gcc/c/c-aux-info.c
  5801f8debb74ecd55a547f0ee5ddec02  gcc/c/c-convert.c
! 8c6ffa9b11770f8dda58f07502db1227  gcc/c/c-decl.c
  6a28a334a8d75e8f92fc278c54453d18  gcc/c/c-errors.c
  38bdf384105f730adbafca3004419adc  gcc/c/c-fold.c
  6da033df357d25300bc215aced589b65  gcc/c/c-lang.c
  3cd4cbec82f1e50b679d9f0071551fa4  gcc/c/c-lang.h
  42fb711802a72f7bc3b2b3369131397f  gcc/c/c-objc-common.c
  b3aff9ee2e2aac84ae2c2249ddd34789  gcc/c/c-objc-common.h
! 77414aea43e15a26bc4c1d74df315050  gcc/c/c-parser.c
  824f36e75f8c378fe7ff07003330d845  gcc/c/c-parser.h
! cbca5f8afb1eeb5bc48a6b11f660e737  gcc/c/c-tree.h
! 2b910e99c060d4f490dec67512b1cd34  gcc/c/c-typeck.c
  7a54ef0822f5aac7800544dc084125a5  gcc/c/config-lang.in
  beac53471d0c7d0ea03adbda52d55cc7  gcc/c/gccspec.c
  4f1a884061f261846dbd7ddfb2af9cf1  gcc/c/gimple-parser.c
  9e299596ee007475dac537a212f8a1ff  gcc/c/gimple-parser.h
  42ca269ba8c51f829c2d82b7f774d150  gcc/caller-save.c
! bcaba3cfd959c8d3e47052ad6ca29a01  gcc/calls.c
  0dc3f2ca4f804ba8afb5fb67963b3a03  gcc/calls.h
  b3bcce62b541c99b6b0ec2edd16ff296  gcc/ccmp.c
  1e02efcbe838558db1033ca2ef0f04ae  gcc/ccmp.h
--- 2685,2711 ----
  e5b1bb6f1ff65e7e00f9d027cd10f4c4  gcc/c-family/known-headers.h
  79a7dfe635c1dd847d9ddea3eea8bea6  gcc/c-family/name-hint.h
  6d2f8a9ee35c08c8901516bff5a43a2e  gcc/c-family/stub-objc.c
! 71705d21c4c61fe485759b98533c990e  gcc/c/ChangeLog
  d1ceae32515e69250a6935d030517330  gcc/c/Make-lang.in
  e1f5e7fe13ac52360bb6f9e248f9d127  gcc/c/c-aux-info.c
  5801f8debb74ecd55a547f0ee5ddec02  gcc/c/c-convert.c
! 124734dfa1d6782b4412075f5e843a4c  gcc/c/c-decl.c
  6a28a334a8d75e8f92fc278c54453d18  gcc/c/c-errors.c
  38bdf384105f730adbafca3004419adc  gcc/c/c-fold.c
  6da033df357d25300bc215aced589b65  gcc/c/c-lang.c
  3cd4cbec82f1e50b679d9f0071551fa4  gcc/c/c-lang.h
  42fb711802a72f7bc3b2b3369131397f  gcc/c/c-objc-common.c
  b3aff9ee2e2aac84ae2c2249ddd34789  gcc/c/c-objc-common.h
! 980088008b98095e2175427ddf3156d8  gcc/c/c-parser.c
  824f36e75f8c378fe7ff07003330d845  gcc/c/c-parser.h
! f65d432228770018fd6fa25b5166923a  gcc/c/c-tree.h
! d87300d17c20140ef438692d5a3394e6  gcc/c/c-typeck.c
  7a54ef0822f5aac7800544dc084125a5  gcc/c/config-lang.in
  beac53471d0c7d0ea03adbda52d55cc7  gcc/c/gccspec.c
  4f1a884061f261846dbd7ddfb2af9cf1  gcc/c/gimple-parser.c
  9e299596ee007475dac537a212f8a1ff  gcc/c/gimple-parser.h
  42ca269ba8c51f829c2d82b7f774d150  gcc/caller-save.c
! d6570b27893491f25e70f9ca965d9a10  gcc/calls.c
  0dc3f2ca4f804ba8afb5fb67963b3a03  gcc/calls.h
  b3bcce62b541c99b6b0ec2edd16ff296  gcc/ccmp.c
  1e02efcbe838558db1033ca2ef0f04ae  gcc/ccmp.h
*************** b3bcce62b541c99b6b0ec2edd16ff296  gcc/cc
*** 2713,2735 ****
  8d8987ab58fe69913b12464570e9a42a  gcc/cfganal.h
  53dd3acf3b71350592b478b262fc3112  gcc/cfgbuild.c
  616fd63db83602c971a38b93ad7b09d7  gcc/cfgbuild.h
! dc347ac2c641bbff34969b73ccfce8c5  gcc/cfgcleanup.c
  81b37889d5c16bcb22fc34f33c0a0d68  gcc/cfgcleanup.h
! e479fa3424391d06c63ff51489c624fd  gcc/cfgexpand.c
  8458a678b3c43ee10a3cac7a01b3e1d3  gcc/cfgexpand.h
! ff7e45f1691ba973adbaf1616de70b99  gcc/cfghooks.c
! 995f6c5b7812276302a7635a7aefe152  gcc/cfghooks.h
  369c423b9ec828081c4b1a121b7057c4  gcc/cfgloop.c
! b04e52386ccef8053e33a987bb18566c  gcc/cfgloop.h
  5d265ebd20f3ebb24c8aca790d9b73e7  gcc/cfgloopanal.c
! 5898d0e99b11ce056c4aee0308ad9b8c  gcc/cfgloopmanip.c
  1512a9003560020ff76f56e7b55e4c99  gcc/cfgloopmanip.h
! 277f4cdf2693f2cae308c5bd5eb593ca  gcc/cfgrtl.c
  b0488edb95f2f9416f652f3e9198ee63  gcc/cfgrtl.h
! c4a3c26247ca27516f15c3b90ac04f65  gcc/cgraph.c
! 6d6cb0a0eabc707c56bca3c479abb212  gcc/cgraph.h
  13da26ea1e52a364f3f300aeea228f31  gcc/cgraphbuild.c
! 49ed7b4847148610dff63404b9b2f245  gcc/cgraphclones.c
  c8c79ef92e815d34f76a39580dbdc0c6  gcc/cgraphunit.c
  7f09e99e0c5f489619266c8ad7306fcd  gcc/chkp-builtins.def
  1ff9eb4acc4ab109b0f07e15d065a0a8  gcc/cif-code.def
--- 2716,2738 ----
  8d8987ab58fe69913b12464570e9a42a  gcc/cfganal.h
  53dd3acf3b71350592b478b262fc3112  gcc/cfgbuild.c
  616fd63db83602c971a38b93ad7b09d7  gcc/cfgbuild.h
! 1c98ce458905f7afa3eff892aed9a0db  gcc/cfgcleanup.c
  81b37889d5c16bcb22fc34f33c0a0d68  gcc/cfgcleanup.h
! dfca2b1edb372a330e76c880128c6a82  gcc/cfgexpand.c
  8458a678b3c43ee10a3cac7a01b3e1d3  gcc/cfgexpand.h
! 876fdd710f956aa3e284afa968337da0  gcc/cfghooks.c
! d5681f6fe5c63d2916afecd896b88308  gcc/cfghooks.h
  369c423b9ec828081c4b1a121b7057c4  gcc/cfgloop.c
! 344f881169147ff21b63e099c5a6e821  gcc/cfgloop.h
  5d265ebd20f3ebb24c8aca790d9b73e7  gcc/cfgloopanal.c
! db15e2b200efa9ea5b1042b9bc575292  gcc/cfgloopmanip.c
  1512a9003560020ff76f56e7b55e4c99  gcc/cfgloopmanip.h
! 07d9a34034f35219565866f5f74f22da  gcc/cfgrtl.c
  b0488edb95f2f9416f652f3e9198ee63  gcc/cfgrtl.h
! a6a039f4b2c911d6039fcfdd34ba0be1  gcc/cgraph.c
! 748344b9adcebc55f7ce36a53b82c13f  gcc/cgraph.h
  13da26ea1e52a364f3f300aeea228f31  gcc/cgraphbuild.c
! 848ef02c0f0ce99faeff5cbee991503c  gcc/cgraphclones.c
  c8c79ef92e815d34f76a39580dbdc0c6  gcc/cgraphunit.c
  7f09e99e0c5f489619266c8ad7306fcd  gcc/chkp-builtins.def
  1ff9eb4acc4ab109b0f07e15d065a0a8  gcc/cif-code.def
*************** ab69f866d1de3862080089a8bf154d3a  gcc/co
*** 2737,2747 ****
  b5774884834cfb021336f603b4cce3e6  gcc/collect-utils.h
  254e5c4c2639dbe63559a601815e3158  gcc/collect2-aix.c
  3bc1b6721859af7ec49445e97d91fc8d  gcc/collect2-aix.h
! bbd1af6e3a993fdf5707d2ca8c797d88  gcc/collect2.c
  171384e9891a99c6b5466ef0e270b9f7  gcc/collect2.h
  fd50d1c887135b80f3e968669d527eb7  gcc/color-macros.h
  88536e4ce55a7a74e7c2ed05aef98fe7  gcc/combine-stack-adj.c
! a42efd2a7185c121ee09891165e2c846  gcc/combine.c
  40809202743de319b1df2912dc2a38eb  gcc/common.md
  817d3ab8425f75d27b1d8e1042f0a586  gcc/common.opt
  61e2129e35e61d795f8842966dcd1b87  gcc/common/common-target-def.h
--- 2740,2750 ----
  b5774884834cfb021336f603b4cce3e6  gcc/collect-utils.h
  254e5c4c2639dbe63559a601815e3158  gcc/collect2-aix.c
  3bc1b6721859af7ec49445e97d91fc8d  gcc/collect2-aix.h
! 1d25813e9d3f2b5b1a4a90dbace4a364  gcc/collect2.c
  171384e9891a99c6b5466ef0e270b9f7  gcc/collect2.h
  fd50d1c887135b80f3e968669d527eb7  gcc/color-macros.h
  88536e4ce55a7a74e7c2ed05aef98fe7  gcc/combine-stack-adj.c
! 09ed7afa6761f4ee23d59fcfb5071b08  gcc/combine.c
  40809202743de319b1df2912dc2a38eb  gcc/common.md
  817d3ab8425f75d27b1d8e1042f0a586  gcc/common.opt
  61e2129e35e61d795f8842966dcd1b87  gcc/common/common-target-def.h
*************** a42efd2a7185c121ee09891165e2c846  gcc/co
*** 2749,2755 ****
  b616a6f6a8f3737014ff0a3455a00a36  gcc/common/common-target.h
  b8d83d8dcc1f442950f472eb350b9dde  gcc/common/common-targhooks.c
  5967c243c19a77cd76c1c4f327579130  gcc/common/common-targhooks.h
! e717913475f04542862cdfbb2515187d  gcc/common/config/aarch64/aarch64-common.c
  fe4095b9869f3711a3b1b375f4246cab  gcc/common/config/alpha/alpha-common.c
  7aea4f39daf8cdd777ce8ac31173a70f  gcc/common/config/arc/arc-common.c
  fd1ca8a352ecd787c6facfaf51237b5a  gcc/common/config/arm/arm-common.c
--- 2752,2758 ----
  b616a6f6a8f3737014ff0a3455a00a36  gcc/common/common-target.h
  b8d83d8dcc1f442950f472eb350b9dde  gcc/common/common-targhooks.c
  5967c243c19a77cd76c1c4f327579130  gcc/common/common-targhooks.h
! 84b679d28866383ab8f9b2e110ab1063  gcc/common/config/aarch64/aarch64-common.c
  fe4095b9869f3711a3b1b375f4246cab  gcc/common/config/alpha/alpha-common.c
  7aea4f39daf8cdd777ce8ac31173a70f  gcc/common/config/arc/arc-common.c
  fd1ca8a352ecd787c6facfaf51237b5a  gcc/common/config/arm/arm-common.c
*************** d5a4e89d0de230a05c92a31991a8c98d  gcc/co
*** 2798,2811 ****
  2e45b1421aca10361d488ef0bb6bf8cc  gcc/compare-elim.c
  fbfc5111d02e0a6cc644a2810b62a99f  gcc/conditions.h
  00815cec4a75bce05124c9658560119c  gcc/config.build
! 7750f2dc9a3e34f2674afe7019af21af  gcc/config.gcc
  8bed6e3e2c0a7b75810c4e8d8b05d3fd  gcc/config.host
  f32000a92132a8f7af2a7b087e7b0a16  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
  14f6549de29c5c79a27aa255075f5dbf  gcc/config/aarch64/aarch64-arches.def
  143289c4e32b49113e80d6e0bb2b7019  gcc/config/aarch64/aarch64-builtins.c
! e63d2ba5218ee62518fe9b93518cce41  gcc/config/aarch64/aarch64-c.c
! f7a8865576385a8f5c9f578b92b96716  gcc/config/aarch64/aarch64-cores.def
  29958c7b76c2964568d13ec211beb90e  gcc/config/aarch64/aarch64-cost-tables.h
  174f20ea3dd373eada9c28d735443d6d  gcc/config/aarch64/aarch64-elf-raw.h
  5236c224bc0df3af3cbb09caf75e7e17  gcc/config/aarch64/aarch64-elf.h
--- 2801,2814 ----
  2e45b1421aca10361d488ef0bb6bf8cc  gcc/compare-elim.c
  fbfc5111d02e0a6cc644a2810b62a99f  gcc/conditions.h
  00815cec4a75bce05124c9658560119c  gcc/config.build
! 5aec3370ff8108fd8578a47717e397ba  gcc/config.gcc
  8bed6e3e2c0a7b75810c4e8d8b05d3fd  gcc/config.host
  f32000a92132a8f7af2a7b087e7b0a16  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
  14f6549de29c5c79a27aa255075f5dbf  gcc/config/aarch64/aarch64-arches.def
  143289c4e32b49113e80d6e0bb2b7019  gcc/config/aarch64/aarch64-builtins.c
! 79d860615fb32a06e54730bf9a770953  gcc/config/aarch64/aarch64-c.c
! c5c278ad67137b726fcd4b0deca045f9  gcc/config/aarch64/aarch64-cores.def
  29958c7b76c2964568d13ec211beb90e  gcc/config/aarch64/aarch64-cost-tables.h
  174f20ea3dd373eada9c28d735443d6d  gcc/config/aarch64/aarch64-elf-raw.h
  5236c224bc0df3af3cbb09caf75e7e17  gcc/config/aarch64/aarch64-elf.h
*************** cf3b14279409694f8613348a3be70c78  gcc/co
*** 2814,2820 ****
  fb01001116b72130a60f94ba02fa3d4d  gcc/config/aarch64/aarch64-ldpstp.md
  8a331b7d1c3e1de0393d1d2085bbccd5  gcc/config/aarch64/aarch64-linux.h
  61fb789a696699d679ce64b7ddde416a  gcc/config/aarch64/aarch64-modes.def
! 4aa0b756bdc3191c1c6d4df20aa45394  gcc/config/aarch64/aarch64-option-extensions.def
  60133697bf62ad16676eb0334c1fe2ae  gcc/config/aarch64/aarch64-opts.h
  3b0d0f78993d2ed66cf6fa6a1673ccf3  gcc/config/aarch64/aarch64-passes.def
  45ea6b62cb1cbac24ce349e5fb24b0f6  gcc/config/aarch64/aarch64-protos.h
--- 2817,2823 ----
  fb01001116b72130a60f94ba02fa3d4d  gcc/config/aarch64/aarch64-ldpstp.md
  8a331b7d1c3e1de0393d1d2085bbccd5  gcc/config/aarch64/aarch64-linux.h
  61fb789a696699d679ce64b7ddde416a  gcc/config/aarch64/aarch64-modes.def
! a1114763555cfe7afebff4b8aae6dd7a  gcc/config/aarch64/aarch64-option-extensions.def
  60133697bf62ad16676eb0334c1fe2ae  gcc/config/aarch64/aarch64-opts.h
  3b0d0f78993d2ed66cf6fa6a1673ccf3  gcc/config/aarch64/aarch64-passes.def
  45ea6b62cb1cbac24ce349e5fb24b0f6  gcc/config/aarch64/aarch64-protos.h
*************** cedc4b0bdc01c8aeb01ef6c9841d7d2c  gcc/co
*** 2822,2846 ****
  9559baeeca4962c3477cc96e9e3a728e  gcc/config/aarch64/aarch64-simd-builtins.def
  c3e4296f82ba8c62eb5c8a53bf67db53  gcc/config/aarch64/aarch64-simd.md
  9d065c8e8d282f60bfd9123e10459729  gcc/config/aarch64/aarch64-sve.md
! 250bb83c199ee2685847641cc9ccc166  gcc/config/aarch64/aarch64-tune.md
  0ad444cd45c64bed6960af6fb54f127a  gcc/config/aarch64/aarch64-tuning-flags.def
! 898e83e08ce49ada13b6a5a85a5e1744  gcc/config/aarch64/aarch64.c
  915d4b38b8a1691c5937c591aa7f5cc3  gcc/config/aarch64/aarch64.h
! 88d6bd30ba9f2efa104db396966882e2  gcc/config/aarch64/aarch64.md
  9d058125f171acf3cb6b04cd49d94788  gcc/config/aarch64/aarch64.opt
  52218ac875d05428dd85f4c73747afe9  gcc/config/aarch64/arm_acle.h
  7ffaae1ad0bb75dd0041b0214c8f92c6  gcc/config/aarch64/arm_fp16.h
  62f858492d558aaec72bba031a211e9f  gcc/config/aarch64/arm_neon.h
! 51e69bbea20585d35d87898d99edfb10  gcc/config/aarch64/atomics.md
  538ad119d3978762bbee8f6bf1a743de  gcc/config/aarch64/biarchilp32.h
  b2b35f0c3bd669e9d87cb7fd18350eb4  gcc/config/aarch64/biarchlp64.h
  f47deb78fbf9608bac82becd21ae6f95  gcc/config/aarch64/constraints.md
  e3c9dd3caa2493bc9c7367fa97d75eb4  gcc/config/aarch64/cortex-a57-fma-steering.c
! 2d0dd82dd70fcae4332325735f79d573  gcc/config/aarch64/driver-aarch64.c
  e1c12f1d60b87b02fffc6bf6f30315ce  gcc/config/aarch64/falkor.md
  a3ae0821ff69ebbfc3bfd2453aae4532  gcc/config/aarch64/geniterators.sh
  45bab55b2dc9947f3fe8f8214897d5ad  gcc/config/aarch64/gentune.sh
! 68be3dd1a5252e4f46b81bf08c126cf5  gcc/config/aarch64/iterators.md
  9f0eefcb8488434bac00d3ac8803e79a  gcc/config/aarch64/predicates.md
  e461310d614c1d7e19a3c21dbaa72def  gcc/config/aarch64/rtems.h
  5e166d8b922621d3d2d62126930b8afc  gcc/config/aarch64/t-aarch64
--- 2825,2849 ----
  9559baeeca4962c3477cc96e9e3a728e  gcc/config/aarch64/aarch64-simd-builtins.def
  c3e4296f82ba8c62eb5c8a53bf67db53  gcc/config/aarch64/aarch64-simd.md
  9d065c8e8d282f60bfd9123e10459729  gcc/config/aarch64/aarch64-sve.md
! 39dd3f77c47644106b21075ad87d9555  gcc/config/aarch64/aarch64-tune.md
  0ad444cd45c64bed6960af6fb54f127a  gcc/config/aarch64/aarch64-tuning-flags.def
! 64aeec689c3dee3e5985c8e87dc9ae98  gcc/config/aarch64/aarch64.c
  915d4b38b8a1691c5937c591aa7f5cc3  gcc/config/aarch64/aarch64.h
! fe126ff97687b5347763fd410b079aa2  gcc/config/aarch64/aarch64.md
  9d058125f171acf3cb6b04cd49d94788  gcc/config/aarch64/aarch64.opt
  52218ac875d05428dd85f4c73747afe9  gcc/config/aarch64/arm_acle.h
  7ffaae1ad0bb75dd0041b0214c8f92c6  gcc/config/aarch64/arm_fp16.h
  62f858492d558aaec72bba031a211e9f  gcc/config/aarch64/arm_neon.h
! 7065f093af215693d004ac7eafc9c924  gcc/config/aarch64/atomics.md
  538ad119d3978762bbee8f6bf1a743de  gcc/config/aarch64/biarchilp32.h
  b2b35f0c3bd669e9d87cb7fd18350eb4  gcc/config/aarch64/biarchlp64.h
  f47deb78fbf9608bac82becd21ae6f95  gcc/config/aarch64/constraints.md
  e3c9dd3caa2493bc9c7367fa97d75eb4  gcc/config/aarch64/cortex-a57-fma-steering.c
! a2ba8776fe2c6bee80808a91b890741d  gcc/config/aarch64/driver-aarch64.c
  e1c12f1d60b87b02fffc6bf6f30315ce  gcc/config/aarch64/falkor.md
  a3ae0821ff69ebbfc3bfd2453aae4532  gcc/config/aarch64/geniterators.sh
  45bab55b2dc9947f3fe8f8214897d5ad  gcc/config/aarch64/gentune.sh
! 4193c7e1970775b93e2660a1321dd898  gcc/config/aarch64/iterators.md
  9f0eefcb8488434bac00d3ac8803e79a  gcc/config/aarch64/predicates.md
  e461310d614c1d7e19a3c21dbaa72def  gcc/config/aarch64/rtems.h
  5e166d8b922621d3d2d62126930b8afc  gcc/config/aarch64/t-aarch64
*************** e0c8643013b4df655b43cb06031dfdb4  gcc/co
*** 2852,2859 ****
  6c526972dd15e95f81a61aaa7188fc45  gcc/config/alpha/alpha-modes.def
  8db8da471eccbfd9935f0938a9152e46  gcc/config/alpha/alpha-passes.def
  33520ef4cf023103bc34deb03b6384de  gcc/config/alpha/alpha-protos.h
! 3a215ee5a2224ce2858ce5fff46d9f21  gcc/config/alpha/alpha.c
! 0e97f0bafe0a326fcf5566323fd0faa8  gcc/config/alpha/alpha.h
  e156d49ac0196170f95915709c18fc27  gcc/config/alpha/alpha.md
  8a683a5789f890567bd34d9909c8a616  gcc/config/alpha/alpha.opt
  d9f1ab5f2e20f0fdb971e6b835ef5119  gcc/config/alpha/constraints.md
--- 2855,2862 ----
  6c526972dd15e95f81a61aaa7188fc45  gcc/config/alpha/alpha-modes.def
  8db8da471eccbfd9935f0938a9152e46  gcc/config/alpha/alpha-passes.def
  33520ef4cf023103bc34deb03b6384de  gcc/config/alpha/alpha-protos.h
! 1db0cdb45b9c753e054d56889b9a2923  gcc/config/alpha/alpha.c
! 2d13ed6d19192d134212c9449d2e32e2  gcc/config/alpha/alpha.h
  e156d49ac0196170f95915709c18fc27  gcc/config/alpha/alpha.md
  8a683a5789f890567bd34d9909c8a616  gcc/config/alpha/alpha.opt
  d9f1ab5f2e20f0fdb971e6b835ef5119  gcc/config/alpha/constraints.md
*************** e4f3a77e7cfd4f59c2bc29511a55eeba  gcc/co
*** 2927,2941 ****
  76635bca9b02cbd4848e4de564c70524  gcc/config/arm/arm-simd-builtin-types.def
  3f5e3c37f748717e24ad4994e5020bde  gcc/config/arm/arm-tables.opt
  14dcd4986fb7d9cc87718686d40e3256  gcc/config/arm/arm-tune.md
! 5dab3f0181f6086fdd9ec1dfbc983c91  gcc/config/arm/arm.c
! fc82d7450ab7fdd2f43d8d9d910168ad  gcc/config/arm/arm.h
! e74102224656633c0c6c2a80d65e1856  gcc/config/arm/arm.md
  4b6807c98827e06bdc055b281bfcbfaa  gcc/config/arm/arm.opt
  afe78ae658ff4942c2605b0f557d67e4  gcc/config/arm/arm1020e.md
  7ae508721eef81f7ecdc77c6149d1277  gcc/config/arm/arm1026ejs.md
  2f3f1706468be20a230fb9e63695ac4f  gcc/config/arm/arm1136jfs.md
  e1b7260aa6f7705db298a50ff015f3c5  gcc/config/arm/arm926ejs.md
! 882f0f0ee9eca602bf8d89ac4291f422  gcc/config/arm/arm_acle.h
  69ba0680bd9a4364320cd5cbee68d755  gcc/config/arm/arm_acle_builtins.def
  789b08a1c5a04d3856a77eba71dc38a0  gcc/config/arm/arm_cmse.h
  614c8f14707a08f9d2819021921882f1  gcc/config/arm/arm_fp16.h
--- 2930,2944 ----
  76635bca9b02cbd4848e4de564c70524  gcc/config/arm/arm-simd-builtin-types.def
  3f5e3c37f748717e24ad4994e5020bde  gcc/config/arm/arm-tables.opt
  14dcd4986fb7d9cc87718686d40e3256  gcc/config/arm/arm-tune.md
! 913a0d2f7162dbca634e85b48bf68f23  gcc/config/arm/arm.c
! 3c857d03b1cde15dc3f07bdbab2b22ab  gcc/config/arm/arm.h
! 1be906b62000b763cc37f99325f25bbc  gcc/config/arm/arm.md
  4b6807c98827e06bdc055b281bfcbfaa  gcc/config/arm/arm.opt
  afe78ae658ff4942c2605b0f557d67e4  gcc/config/arm/arm1020e.md
  7ae508721eef81f7ecdc77c6149d1277  gcc/config/arm/arm1026ejs.md
  2f3f1706468be20a230fb9e63695ac4f  gcc/config/arm/arm1136jfs.md
  e1b7260aa6f7705db298a50ff015f3c5  gcc/config/arm/arm926ejs.md
! b38fb2c4d9bea438cefc525d32e9a29d  gcc/config/arm/arm_acle.h
  69ba0680bd9a4364320cd5cbee68d755  gcc/config/arm/arm_acle_builtins.def
  789b08a1c5a04d3856a77eba71dc38a0  gcc/config/arm/arm_cmse.h
  614c8f14707a08f9d2819021921882f1  gcc/config/arm/arm_fp16.h
*************** e1b7260aa6f7705db298a50ff015f3c5  gcc/co
*** 2943,2949 ****
  a18d8b003ebe0bf3c79b58e965ee8a15  gcc/config/arm/arm_neon_builtins.def
  85b0e6bf02c30940b4e46621351f1e6a  gcc/config/arm/arm_vfp_builtins.def
  8a36a9a593f44a992294173004f00bf4  gcc/config/arm/bpabi.h
! 0daa8f3b0e1eba2794bdac0e6ac0cd3a  gcc/config/arm/constraints.md
  2a1cbdea73f86f95a8213df3f5f461de  gcc/config/arm/cortex-a15-neon.md
  c2e46ffc490899b8f8132e6d79fb7b39  gcc/config/arm/cortex-a15.md
  026ab48825201a31822ef51c6602b8e7  gcc/config/arm/cortex-a17-neon.md
--- 2946,2952 ----
  a18d8b003ebe0bf3c79b58e965ee8a15  gcc/config/arm/arm_neon_builtins.def
  85b0e6bf02c30940b4e46621351f1e6a  gcc/config/arm/arm_vfp_builtins.def
  8a36a9a593f44a992294173004f00bf4  gcc/config/arm/bpabi.h
! b3dc6a2650687ae63acf2f50a77d4fda  gcc/config/arm/constraints.md
  2a1cbdea73f86f95a8213df3f5f461de  gcc/config/arm/cortex-a15-neon.md
  c2e46ffc490899b8f8132e6d79fb7b39  gcc/config/arm/cortex-a15.md
  026ab48825201a31822ef51c6602b8e7  gcc/config/arm/cortex-a17-neon.md
*************** d2ac1b4218d0d55db510891267c2c14d  gcc/co
*** 2984,2990 ****
  192846730ddf7042b30b71e5029093d5  gcc/config/arm/marvell-f-iwmmxt.md
  db7a4c97570d7fa5ca6b6e8b26c37ed9  gcc/config/arm/marvell-pj4.md
  03035888f43cedef25723a3f7a06023b  gcc/config/arm/mmintrin.h
! 34adceeaebe5bbfa91190c92dd279449  gcc/config/arm/neon.md
  30acc3bfdec5d353ce2a0daf96f427db  gcc/config/arm/netbsd-elf.h
  79c90d9508539d347d88183a27e048b4  gcc/config/arm/parsecpu.awk
  1ab8597247341cc25bc4fbc22ddee4e5  gcc/config/arm/predicates.md
--- 2987,2993 ----
  192846730ddf7042b30b71e5029093d5  gcc/config/arm/marvell-f-iwmmxt.md
  db7a4c97570d7fa5ca6b6e8b26c37ed9  gcc/config/arm/marvell-pj4.md
  03035888f43cedef25723a3f7a06023b  gcc/config/arm/mmintrin.h
! 6d70a8b5abcc3e44427f3cf45d0ce16d  gcc/config/arm/neon.md
  30acc3bfdec5d353ce2a0daf96f427db  gcc/config/arm/netbsd-elf.h
  79c90d9508539d347d88183a27e048b4  gcc/config/arm/parsecpu.awk
  1ab8597247341cc25bc4fbc22ddee4e5  gcc/config/arm/predicates.md
*************** e3950ec6bd159734835f8f8fb143efc6  gcc/co
*** 3002,3008 ****
  786f6616335780d3cff678ec73efe0e7  gcc/config/arm/t-multilib
  f4f2c51d925cf702d3c93f8dd6485fb1  gcc/config/arm/t-phoenix
  7c616045b2ccfb95fa3ff3b1d330bbfc  gcc/config/arm/t-rmprofile
! 97a51b616111594a4ecfb7b12d4757d9  gcc/config/arm/t-rtems
  774ac8d84b670b5ac91aa324884f4223  gcc/config/arm/t-symbian
  447f96fe8feb3c85ebc3c830e1fc2eb7  gcc/config/arm/t-vxworks
  4b60295cc55f16e4cfdfce2bc88271d8  gcc/config/arm/thumb1.md
--- 3005,3011 ----
  786f6616335780d3cff678ec73efe0e7  gcc/config/arm/t-multilib
  f4f2c51d925cf702d3c93f8dd6485fb1  gcc/config/arm/t-phoenix
  7c616045b2ccfb95fa3ff3b1d330bbfc  gcc/config/arm/t-rmprofile
! 6219db2eb3bceea962a45e9f1400f370  gcc/config/arm/t-rtems
  774ac8d84b670b5ac91aa324884f4223  gcc/config/arm/t-symbian
  447f96fe8feb3c85ebc3c830e1fc2eb7  gcc/config/arm/t-vxworks
  4b60295cc55f16e4cfdfce2bc88271d8  gcc/config/arm/thumb1.md
*************** f1552cfb276d6fafa6ec1e099453f559  gcc/co
*** 3019,3046 ****
  cceeb61ac82458920e6ee47d642291fb  gcc/config/arm/vxworks.opt
  a17a638dc98f3f18b0e13448c69e1e65  gcc/config/arm/x-arm
  0214a4f048a9f9c98e29d44feec81b58  gcc/config/arm/xgene1.md
! 52a3e7ac93f38de1f45e559953ccb076  gcc/config/avr/avr-arch.h
  82e2526dacaf7ecee31a536867115876  gcc/config/avr/avr-c.c
! 53eb668025e9f275b97ec0913279bfb5  gcc/config/avr/avr-devices.c
  a8f891a4ed13d01b288e3189d7158380  gcc/config/avr/avr-dimode.md
  e8f8ab1d6052482d392bf158ad13f54f  gcc/config/avr/avr-fixed.md
  9a3b299496f88e558bfb235a25e00957  gcc/config/avr/avr-log.c
! 5c64793fded4b3e321540f594b66bca0  gcc/config/avr/avr-mcus.def
  2577cd5c96201deecdd584b55a89fe9d  gcc/config/avr/avr-modes.def
  e3c604736a61df8e21d5acc2baf1a8a6  gcc/config/avr/avr-passes.def
  2bc10c858cf40e0c09d4f5ba230c360e  gcc/config/avr/avr-protos.h
  60fbcc1c156ff6d87815e3dfb9e944c4  gcc/config/avr/avr-stdint.h
! 1cdd60c92f0191d3d5c1480e2f9243ca  gcc/config/avr/avr.c
  7c74e9264ceb208ac97aa8d519711d65  gcc/config/avr/avr.h
  9a9539fd7208754c699c9fade26624db  gcc/config/avr/avr.md
! 717736dc35a8a003246a394e430dbfee  gcc/config/avr/avr.opt
  8e727a6d8aecf20fe626ba560f501a6c  gcc/config/avr/avrlibc.h
  b4ced6c7db3c36bf284c0d20d0232d0a  gcc/config/avr/builtins.def
  990866e2797f00152b8249f5e14df89b  gcc/config/avr/constraints.md
! 0281b3baa435acaaa6bbe2c9cab2f23f  gcc/config/avr/driver-avr.c
  17d34e9142b588f6ed0fbb66d2effef9  gcc/config/avr/elf.h
! 4759d11aca88ca4dbd46bdfb9ca4fce5  gcc/config/avr/gen-avr-mmcu-specs.c
! 9da00015bf60872e47c4ebf44c57c151  gcc/config/avr/gen-avr-mmcu-texi.c
  e3e6aa5c6f6a497b8c8b4e2635471713  gcc/config/avr/genmultilib.awk
  b13b13f0a479f51bd1414a6ee802f49d  gcc/config/avr/predicates.md
  b4111308eb62fb86aaa8e520d2ff397f  gcc/config/avr/specs.h
--- 3022,3049 ----
  cceeb61ac82458920e6ee47d642291fb  gcc/config/arm/vxworks.opt
  a17a638dc98f3f18b0e13448c69e1e65  gcc/config/arm/x-arm
  0214a4f048a9f9c98e29d44feec81b58  gcc/config/arm/xgene1.md
! 39ee59220961c02e0bdd8f7aceeb3b8a  gcc/config/avr/avr-arch.h
  82e2526dacaf7ecee31a536867115876  gcc/config/avr/avr-c.c
! 5e8b589647c2122e1f604d55cb3ba872  gcc/config/avr/avr-devices.c
  a8f891a4ed13d01b288e3189d7158380  gcc/config/avr/avr-dimode.md
  e8f8ab1d6052482d392bf158ad13f54f  gcc/config/avr/avr-fixed.md
  9a3b299496f88e558bfb235a25e00957  gcc/config/avr/avr-log.c
! 29420965a2ae463ca8e81ce5598ce491  gcc/config/avr/avr-mcus.def
  2577cd5c96201deecdd584b55a89fe9d  gcc/config/avr/avr-modes.def
  e3c604736a61df8e21d5acc2baf1a8a6  gcc/config/avr/avr-passes.def
  2bc10c858cf40e0c09d4f5ba230c360e  gcc/config/avr/avr-protos.h
  60fbcc1c156ff6d87815e3dfb9e944c4  gcc/config/avr/avr-stdint.h
! 86a39488f76347ee14129010e789984b  gcc/config/avr/avr.c
  7c74e9264ceb208ac97aa8d519711d65  gcc/config/avr/avr.h
  9a9539fd7208754c699c9fade26624db  gcc/config/avr/avr.md
! 4315cae00b7c7f18b50f293b5ed7de67  gcc/config/avr/avr.opt
  8e727a6d8aecf20fe626ba560f501a6c  gcc/config/avr/avrlibc.h
  b4ced6c7db3c36bf284c0d20d0232d0a  gcc/config/avr/builtins.def
  990866e2797f00152b8249f5e14df89b  gcc/config/avr/constraints.md
! 53827f00ef6d5c148e1a8d08b4b41531  gcc/config/avr/driver-avr.c
  17d34e9142b588f6ed0fbb66d2effef9  gcc/config/avr/elf.h
! 1e86f4d6ba7236fae4493cc2f5c9d782  gcc/config/avr/gen-avr-mmcu-specs.c
! 780d7080dd0f6228770d95f7dec73cff  gcc/config/avr/gen-avr-mmcu-texi.c
  e3e6aa5c6f6a497b8c8b4e2635471713  gcc/config/avr/genmultilib.awk
  b13b13f0a479f51bd1414a6ee802f49d  gcc/config/avr/predicates.md
  b4111308eb62fb86aaa8e520d2ff397f  gcc/config/avr/specs.h
*************** c0b587dd94eab122f75f86ded2771210  gcc/co
*** 3114,3131 ****
  ac5a39c723254ca092ef409cb4a76b20  gcc/config/cris/t-cris
  540f72cd9c3369cac8c6090158bd3454  gcc/config/cris/t-elfmulti
  5657034355d2720466dad6b98f794a8f  gcc/config/cris/t-linux
! e57403738d6206360237f487bda629e6  gcc/config/darwin-c.c
! d7a57a644431fc24e3ac8ba4a699352f  gcc/config/darwin-driver.c
  6917dc4379d905e365c33f0df44d948b  gcc/config/darwin-f.c
  830ae6aecd271b468c7c4f6060484c54  gcc/config/darwin-ppc-ldouble-patch.def
! 42ab3b6faaf7ca0beac47a6f387bcc7a  gcc/config/darwin-protos.h
  5ce3a62ccb092afbae3b17b6b8f4f156  gcc/config/darwin-sections.def
! a3394d47ff5823f7bc5a43a481a94b7a  gcc/config/darwin.c
! 3ff412118adcf02f1392a213f7611446  gcc/config/darwin.h
! 7d8e26ef51b64708c1b6d74bb51a05d8  gcc/config/darwin.opt
! 251bc516b1b1a62f7a7b53cf7560991f  gcc/config/darwin10.h
  5412cfe6ac1da6d87f89bcc4e00a036c  gcc/config/darwin12.h
! b3f5c7ab2128a2e63f6eec2e13ddb97b  gcc/config/darwin9.h
  259694c85979612db8ed70a4541ec78f  gcc/config/dbx.h
  8ff63e80b316c6bc99c62e1e2b81c144  gcc/config/dbxcoff.h
  1f3bd29e7e9de13099a3658e64cc47a4  gcc/config/dbxelf.h
--- 3117,3134 ----
  ac5a39c723254ca092ef409cb4a76b20  gcc/config/cris/t-cris
  540f72cd9c3369cac8c6090158bd3454  gcc/config/cris/t-elfmulti
  5657034355d2720466dad6b98f794a8f  gcc/config/cris/t-linux
! cc13845969cd870e9bbce7ef8bcaf129  gcc/config/darwin-c.c
! cc3cd106691ceb542c3dce2b3e80a4fa  gcc/config/darwin-driver.c
  6917dc4379d905e365c33f0df44d948b  gcc/config/darwin-f.c
  830ae6aecd271b468c7c4f6060484c54  gcc/config/darwin-ppc-ldouble-patch.def
! 623a3295ef96a80d974c763fabdcf120  gcc/config/darwin-protos.h
  5ce3a62ccb092afbae3b17b6b8f4f156  gcc/config/darwin-sections.def
! ebf885bb59beb2fe62210d61fc539cb3  gcc/config/darwin.c
! 2955a8afae4bb18c0f29ef26973903bc  gcc/config/darwin.h
! 8c3b0bd023d0007ae1aa40fd4a3856bc  gcc/config/darwin.opt
! 9252ff255774c226e5cc9171a125fde6  gcc/config/darwin10.h
  5412cfe6ac1da6d87f89bcc4e00a036c  gcc/config/darwin12.h
! 10af34f495440bf5e7345886d7c6e72f  gcc/config/darwin9.h
  259694c85979612db8ed70a4541ec78f  gcc/config/dbx.h
  8ff63e80b316c6bc99c62e1e2b81c144  gcc/config/dbxcoff.h
  1f3bd29e7e9de13099a3658e64cc47a4  gcc/config/dbxelf.h
*************** a29577fda6a70af775e90d8e9632b3df  gcc/co
*** 3216,3225 ****
  f3be3ee5181359209c74ace46d5f05ea  gcc/config/i386/athlon.md
  255d08915845ffd0e0bac05bbcfb006c  gcc/config/i386/atom.md
  81cbc6b11b5b0b6f52e0a10aba993b2f  gcc/config/i386/att.h
! f4693321823871c4dee7eec22f5fca28  gcc/config/i386/avx2intrin.h
  eb8ed620824417d2c7958d76c605b2c8  gcc/config/i386/avx5124fmapsintrin.h
  442ba84d1964652112ceaeadd65fb1bb  gcc/config/i386/avx5124vnniwintrin.h
! 4e740f3142e270682449859dd01916eb  gcc/config/i386/avx512bitalgintrin.h
  256d09298d57989540af3d7b3963c822  gcc/config/i386/avx512bwintrin.h
  bb5d8573766a03ad02abbecae8af2732  gcc/config/i386/avx512cdintrin.h
  041a3b27ffb1d36cdb52ec57fd54991d  gcc/config/i386/avx512dqintrin.h
--- 3219,3228 ----
  f3be3ee5181359209c74ace46d5f05ea  gcc/config/i386/athlon.md
  255d08915845ffd0e0bac05bbcfb006c  gcc/config/i386/atom.md
  81cbc6b11b5b0b6f52e0a10aba993b2f  gcc/config/i386/att.h
! c9e64b0e0cd523ad74f5ce18e5971117  gcc/config/i386/avx2intrin.h
  eb8ed620824417d2c7958d76c605b2c8  gcc/config/i386/avx5124fmapsintrin.h
  442ba84d1964652112ceaeadd65fb1bb  gcc/config/i386/avx5124vnniwintrin.h
! 477063627c953ce1be0702fe902c9441  gcc/config/i386/avx512bitalgintrin.h
  256d09298d57989540af3d7b3963c822  gcc/config/i386/avx512bwintrin.h
  bb5d8573766a03ad02abbecae8af2732  gcc/config/i386/avx512cdintrin.h
  041a3b27ffb1d36cdb52ec57fd54991d  gcc/config/i386/avx512dqintrin.h
*************** c97115a50ffb5d77aeef3c807b6d5ead  gcc/co
*** 3228,3235 ****
  75a8d02b8eed76602ffdc82633dafcd4  gcc/config/i386/avx512ifmaintrin.h
  964a5aaff516c4c87140133b5afec6ed  gcc/config/i386/avx512ifmavlintrin.h
  3a98d3531f48bbd9684b74570a11cc83  gcc/config/i386/avx512pfintrin.h
! fe1ceddb654c20987eb59a3d5642907f  gcc/config/i386/avx512vbmi2intrin.h
! 549d2bb7215eb5f0b95e240b79e07853  gcc/config/i386/avx512vbmi2vlintrin.h
  b6fb5740d167285152e08dfaf4b79cd9  gcc/config/i386/avx512vbmiintrin.h
  2d89a8cbd411da65e4de3b06715acfd7  gcc/config/i386/avx512vbmivlintrin.h
  e2ff9f5fd5bcc32de0ec4a45814b9adb  gcc/config/i386/avx512vlbwintrin.h
--- 3231,3238 ----
  75a8d02b8eed76602ffdc82633dafcd4  gcc/config/i386/avx512ifmaintrin.h
  964a5aaff516c4c87140133b5afec6ed  gcc/config/i386/avx512ifmavlintrin.h
  3a98d3531f48bbd9684b74570a11cc83  gcc/config/i386/avx512pfintrin.h
! 50a78adbe3ce03bb811b52359e157606  gcc/config/i386/avx512vbmi2intrin.h
! 4f01006f62f02d299d04ab948f03e612  gcc/config/i386/avx512vbmi2vlintrin.h
  b6fb5740d167285152e08dfaf4b79cd9  gcc/config/i386/avx512vbmiintrin.h
  2d89a8cbd411da65e4de3b06715acfd7  gcc/config/i386/avx512vbmivlintrin.h
  e2ff9f5fd5bcc32de0ec4a45814b9adb  gcc/config/i386/avx512vlbwintrin.h
*************** b5b9bb00324fe7966ea0fa8f098f020b  gcc/co
*** 3237,3245 ****
  7d06b0e3e34aa408c2dc5074b696b2a5  gcc/config/i386/avx512vlintrin.h
  6d0970d382ca4120a4eb992cd8872544  gcc/config/i386/avx512vnniintrin.h
  243143dca2ce0575bd58ee17b8906354  gcc/config/i386/avx512vnnivlintrin.h
! a9268adb7f0513e13971021eb302760c  gcc/config/i386/avx512vpopcntdqintrin.h
! c4f33f51ef65ff15593c78cd9682301f  gcc/config/i386/avx512vpopcntdqvlintrin.h
! 1fa9fcd7fdde602c4ef8ba7f48aa93de  gcc/config/i386/avxintrin.h
  0b92d1c8eaccd4fd3c7a3f5df2b6b40b  gcc/config/i386/avxmath.h
  9982bfd94cd89aa48752e8f8164c837c  gcc/config/i386/bdver1.md
  241362e4b90e08a688ddbdefce7267f3  gcc/config/i386/bdver3.md
--- 3240,3248 ----
  7d06b0e3e34aa408c2dc5074b696b2a5  gcc/config/i386/avx512vlintrin.h
  6d0970d382ca4120a4eb992cd8872544  gcc/config/i386/avx512vnniintrin.h
  243143dca2ce0575bd58ee17b8906354  gcc/config/i386/avx512vnnivlintrin.h
! 65e354b7b4ef902c851aa1cb971d69bb  gcc/config/i386/avx512vpopcntdqintrin.h
! 30cbb8759c9c005df65026d2efc665c0  gcc/config/i386/avx512vpopcntdqvlintrin.h
! 373e62255a289d5e4f368e2e1d4bae79  gcc/config/i386/avxintrin.h
  0b92d1c8eaccd4fd3c7a3f5df2b6b40b  gcc/config/i386/avxmath.h
  9982bfd94cd89aa48752e8f8164c837c  gcc/config/i386/bdver1.md
  241362e4b90e08a688ddbdefce7267f3  gcc/config/i386/bdver3.md
*************** b1d49e4485027cab9bbecc6f21a72cdb  gcc/co
*** 3258,3264 ****
  85d0f7cd0abb5196ad436b4be8b5245e  gcc/config/i386/clzerointrin.h
  002a13f0bfc874d7e9da37289d56d87b  gcc/config/i386/constraints.md
  b733b5cf79894c920d2ee1e128f8aca7  gcc/config/i386/core2.md
! 83264babd4a1ed63f6258823a1a33ab5  gcc/config/i386/cpuid.h
  5b1bfee52590196c940b0e2013d0fb02  gcc/config/i386/cross-stdarg.h
  375e6e8e8704949687afcc319a60226b  gcc/config/i386/crtdll.h
  99cb3a163cfefe58d375bce2d2691c60  gcc/config/i386/cygming.h
--- 3261,3267 ----
  85d0f7cd0abb5196ad436b4be8b5245e  gcc/config/i386/clzerointrin.h
  002a13f0bfc874d7e9da37289d56d87b  gcc/config/i386/constraints.md
  b733b5cf79894c920d2ee1e128f8aca7  gcc/config/i386/core2.md
! ced7747008105f3c6a53b149e6cdcbb1  gcc/config/i386/cpuid.h
  5b1bfee52590196c940b0e2013d0fb02  gcc/config/i386/cross-stdarg.h
  375e6e8e8704949687afcc319a60226b  gcc/config/i386/crtdll.h
  99cb3a163cfefe58d375bce2d2691c60  gcc/config/i386/cygming.h
*************** ad8afcdfb159e221a13ae5b4ac0c90cc  gcc/co
*** 3267,3274 ****
  267105275d60e8e2beb4c562cacd474c  gcc/config/i386/cygwin-w64.h
  60a98b6c5ea78ab3fe27bfc9e35b1d00  gcc/config/i386/cygwin.h
  822dcd0ea36bc4391fcecfdcb8e8683f  gcc/config/i386/cygwin.opt
! 7ea61551575d3f06dc80321264792177  gcc/config/i386/darwin.h
! 33bb82a955dc6baf3e4f0f13e18a0700  gcc/config/i386/darwin64.h
  7539a1a18dad410589dc81def9e9eecc  gcc/config/i386/djgpp-stdint.h
  56c6541a0584b788a56fb0965d51aa43  gcc/config/i386/djgpp.c
  9be46fdb60171a9ff6d818f0040370ac  gcc/config/i386/djgpp.h
--- 3270,3278 ----
  267105275d60e8e2beb4c562cacd474c  gcc/config/i386/cygwin-w64.h
  60a98b6c5ea78ab3fe27bfc9e35b1d00  gcc/config/i386/cygwin.h
  822dcd0ea36bc4391fcecfdcb8e8683f  gcc/config/i386/cygwin.opt
! aa9961e863b0f99552ff54013b312ee8  gcc/config/i386/darwin.h
! 8256997a20c204a0527b521ac183cfc2  gcc/config/i386/darwin32-biarch.h
! cf642b6e9bac4617209f4bf91245d902  gcc/config/i386/darwin64-biarch.h
  7539a1a18dad410589dc81def9e9eecc  gcc/config/i386/djgpp-stdint.h
  56c6541a0584b788a56fb0965d51aa43  gcc/config/i386/djgpp.c
  9be46fdb60171a9ff6d818f0040370ac  gcc/config/i386/djgpp.h
*************** ad8afcdfb159e221a13ae5b4ac0c90cc  gcc/co
*** 3276,3287 ****
  618f3c3a515ea355387b5126cc7479a6  gcc/config/i386/dragonfly.h
  da49a228f6a114545dd359590600bb15  gcc/config/i386/driver-i386.c
  f43004343ae4ffae7df4b8b541465c6d  gcc/config/i386/driver-mingw32.c
! 9bede3822b10a0d6c086fb9f9808e4ee  gcc/config/i386/emmintrin.h
  2856a76a7205b8395b39096c05adb056  gcc/config/i386/f16cintrin.h
  269d5c806a761a10898d44ffd5f608d8  gcc/config/i386/fma4intrin.h
  261de8a6de123a87e0a9f6a3de8f57e5  gcc/config/i386/fmaintrin.h
  cf25ae8b13672c4cf7cb2a92fbdb40ad  gcc/config/i386/freebsd.h
! 295845c13e80cda19ed75abbaa80d24d  gcc/config/i386/freebsd64.h
  cfbf44938d72b85fc77aeebd9f7fc612  gcc/config/i386/fxsrintrin.h
  3412e498955cd03fdacbc5f4393af04a  gcc/config/i386/gas.h
  d87f5906e5cee04c568119528636e1c2  gcc/config/i386/gcc-auto-profile
--- 3280,3291 ----
  618f3c3a515ea355387b5126cc7479a6  gcc/config/i386/dragonfly.h
  da49a228f6a114545dd359590600bb15  gcc/config/i386/driver-i386.c
  f43004343ae4ffae7df4b8b541465c6d  gcc/config/i386/driver-mingw32.c
! 997294be94003f2e6a4140ca2177adae  gcc/config/i386/emmintrin.h
  2856a76a7205b8395b39096c05adb056  gcc/config/i386/f16cintrin.h
  269d5c806a761a10898d44ffd5f608d8  gcc/config/i386/fma4intrin.h
  261de8a6de123a87e0a9f6a3de8f57e5  gcc/config/i386/fmaintrin.h
  cf25ae8b13672c4cf7cb2a92fbdb40ad  gcc/config/i386/freebsd.h
! 2aa2c03968663bbf18c3c08fd1fdedea  gcc/config/i386/freebsd64.h
  cfbf44938d72b85fc77aeebd9f7fc612  gcc/config/i386/fxsrintrin.h
  3412e498955cd03fdacbc5f4393af04a  gcc/config/i386/gas.h
  d87f5906e5cee04c568119528636e1c2  gcc/config/i386/gcc-auto-profile
*************** fcc4e84abb760f447c59660d15cb4094  gcc/co
*** 3298,3318 ****
  1e836a821b3c47ed7a17d401c8fcfdc1  gcc/config/i386/host-mingw32.c
  4c7303a05532c22c898cd100aff04da2  gcc/config/i386/i386-builtin-types.awk
  2fd1e39abb43aba80fe53c72da353aca  gcc/config/i386/i386-builtin-types.def
! 7e0150cd0e988dadc673469aaa75c33e  gcc/config/i386/i386-builtin.def
  28c1709c39edb6c6d98757be65d6714b  gcc/config/i386/i386-c.c
  69c87e6daa81bb738dbd8f554c77b592  gcc/config/i386/i386-modes.def
  5bafb9d86cd0531b346e4639efc86356  gcc/config/i386/i386-opts.h
  585a48de3fb8cf98c23ebac00c2238a5  gcc/config/i386/i386-passes.def
  e7f855ddccfb8128c224798748386a63  gcc/config/i386/i386-protos.h
! 686463c5a50eccae4a928fa2fb7a5949  gcc/config/i386/i386.c
! 95eac45da3449cebe3adad27aeead8c1  gcc/config/i386/i386.h
! 27c118c33ad57a1addeaf0b9453e2ef0  gcc/config/i386/i386.md
  fedeca0d943923d2b1e8a23dac70402e  gcc/config/i386/i386.opt
  64cf08bf31bf2f4dc57c5612fbf545cb  gcc/config/i386/i386elf.h
  f750ed2033bbe36f306b115907b76b57  gcc/config/i386/ia32intrin.h
  6782ac930a259e666c7152a4e32eb686  gcc/config/i386/iamcu.h
  eeab54f2bf97fae2a0af1cf9b037ccea  gcc/config/i386/immintrin.h
! 164c868bea724e5992522a74f1a5f185  gcc/config/i386/intelmic-mkoffload.c
  9bfe0e611910a8e53992edc7cfb23ce0  gcc/config/i386/intelmic-offload.h
  0a2c437fc8d98c80b876dba7f26931e3  gcc/config/i386/k6.md
  3cb0c3eae259b179d9a51eed273d041b  gcc/config/i386/kfreebsd-gnu.h
--- 3302,3322 ----
  1e836a821b3c47ed7a17d401c8fcfdc1  gcc/config/i386/host-mingw32.c
  4c7303a05532c22c898cd100aff04da2  gcc/config/i386/i386-builtin-types.awk
  2fd1e39abb43aba80fe53c72da353aca  gcc/config/i386/i386-builtin-types.def
! 9809e984dd7c52e954ecf19678738807  gcc/config/i386/i386-builtin.def
  28c1709c39edb6c6d98757be65d6714b  gcc/config/i386/i386-c.c
  69c87e6daa81bb738dbd8f554c77b592  gcc/config/i386/i386-modes.def
  5bafb9d86cd0531b346e4639efc86356  gcc/config/i386/i386-opts.h
  585a48de3fb8cf98c23ebac00c2238a5  gcc/config/i386/i386-passes.def
  e7f855ddccfb8128c224798748386a63  gcc/config/i386/i386-protos.h
! b98c5fcdaaa4e0c0587c6428958e6690  gcc/config/i386/i386.c
! 348053f6c259516b273ade1abe52fa60  gcc/config/i386/i386.h
! baa0d0b4969974f1548bba1f29e7fe58  gcc/config/i386/i386.md
  fedeca0d943923d2b1e8a23dac70402e  gcc/config/i386/i386.opt
  64cf08bf31bf2f4dc57c5612fbf545cb  gcc/config/i386/i386elf.h
  f750ed2033bbe36f306b115907b76b57  gcc/config/i386/ia32intrin.h
  6782ac930a259e666c7152a4e32eb686  gcc/config/i386/iamcu.h
  eeab54f2bf97fae2a0af1cf9b037ccea  gcc/config/i386/immintrin.h
! aa4246261bf82d100c35d136fdf5ba29  gcc/config/i386/intelmic-mkoffload.c
  9bfe0e611910a8e53992edc7cfb23ce0  gcc/config/i386/intelmic-offload.h
  0a2c437fc8d98c80b876dba7f26931e3  gcc/config/i386/k6.md
  3cb0c3eae259b179d9a51eed273d041b  gcc/config/i386/kfreebsd-gnu.h
*************** f86373165daed8a9aa27e68d587ec642  gcc/co
*** 3332,3338 ****
  b6501938462cb4b80d19b3512b0f0235  gcc/config/i386/mingw32.h
  6687f6843381ac40aa88f5e4387bf0f1  gcc/config/i386/mm3dnow.h
  c623eb248c8a9342e0ed39a96fb0c6e1  gcc/config/i386/mmintrin.h
! d0aeed93f731e458f74a8659e8f87432  gcc/config/i386/mmx.md
  8f5ad56d4106f7cd5a44445baf71a0e6  gcc/config/i386/movdirintrin.h
  6fc1236da27f836d925b4559deae34b1  gcc/config/i386/msformat-c.c
  c00c0f388b18bfc68c1367570ac21c13  gcc/config/i386/mwaitxintrin.h
--- 3336,3342 ----
  b6501938462cb4b80d19b3512b0f0235  gcc/config/i386/mingw32.h
  6687f6843381ac40aa88f5e4387bf0f1  gcc/config/i386/mm3dnow.h
  c623eb248c8a9342e0ed39a96fb0c6e1  gcc/config/i386/mmintrin.h
! f1b1230b2ef9465290ef843bee07cae3  gcc/config/i386/mmx.md
  8f5ad56d4106f7cd5a44445baf71a0e6  gcc/config/i386/movdirintrin.h
  6fc1236da27f836d925b4559deae34b1  gcc/config/i386/msformat-c.c
  c00c0f388b18bfc68c1367570ac21c13  gcc/config/i386/mwaitxintrin.h
*************** ef8890ab5009549b7f4a9d0a11c0b5e1  gcc/co
*** 3361,3367 ****
  1450602f2a26403ed2ddc18e73a0abcd  gcc/config/i386/slm.md
  428436d4157bf13d814afdcf184d8b7d  gcc/config/i386/smmintrin.h
  7583a092bb2058652012105a09af0d17  gcc/config/i386/sol2.h
! 844f87445d669b246c3c4f3a80bf4992  gcc/config/i386/sse.md
  fc3b94b276976b0fe533ac436414f6bc  gcc/config/i386/ssemath.h
  ae961d16d446d661830906f88c08f196  gcc/config/i386/stringop.def
  05a37b469e0de5f550131f2f43046252  gcc/config/i386/subst.md
--- 3365,3371 ----
  1450602f2a26403ed2ddc18e73a0abcd  gcc/config/i386/slm.md
  428436d4157bf13d814afdcf184d8b7d  gcc/config/i386/smmintrin.h
  7583a092bb2058652012105a09af0d17  gcc/config/i386/sol2.h
! 0180c2e57434e533e0cc9225f535ea75  gcc/config/i386/sse.md
  fc3b94b276976b0fe533ac436414f6bc  gcc/config/i386/ssemath.h
  ae961d16d446d661830906f88c08f196  gcc/config/i386/stringop.def
  05a37b469e0de5f550131f2f43046252  gcc/config/i386/subst.md
*************** ef660aa614157434780cef171fc42c55  gcc/co
*** 3370,3378 ****
  6efd2b81feecd9d4b75ddf5b9c142127  gcc/config/i386/t-cet
  0876fe4a21d4ada33787b86aaa13145b  gcc/config/i386/t-cygming
  d5339d6e5a09a02383903f617230e19e  gcc/config/i386/t-cygwin-w64
! 98d94861be252f8541038afee279417f  gcc/config/i386/t-darwin
! 8f92133cb94c59e2939cd65dc5fc8cb4  gcc/config/i386/t-darwin64
  4c5d6e2fe993d41a182cdd83904065d4  gcc/config/i386/t-djgpp
  3a1c0dac7740fd9ef48c7bdf5f313c9d  gcc/config/i386/t-gmm_malloc
  d5939c6bccbf8957206c63308ce628a6  gcc/config/i386/t-gnu
  cd837ed161f1e869c697ad12ac345674  gcc/config/i386/t-i386
--- 3374,3383 ----
  6efd2b81feecd9d4b75ddf5b9c142127  gcc/config/i386/t-cet
  0876fe4a21d4ada33787b86aaa13145b  gcc/config/i386/t-cygming
  d5339d6e5a09a02383903f617230e19e  gcc/config/i386/t-cygwin-w64
! 98d94861be252f8541038afee279417f  gcc/config/i386/t-darwin32-biarch
! 8f92133cb94c59e2939cd65dc5fc8cb4  gcc/config/i386/t-darwin64-biarch
  4c5d6e2fe993d41a182cdd83904065d4  gcc/config/i386/t-djgpp
+ 0e6cc16572f654fd2d63196a3ba3102f  gcc/config/i386/t-freebsd64
  3a1c0dac7740fd9ef48c7bdf5f313c9d  gcc/config/i386/t-gmm_malloc
  d5939c6bccbf8957206c63308ce628a6  gcc/config/i386/t-gnu
  cd837ed161f1e869c697ad12ac345674  gcc/config/i386/t-i386
*************** d3970ea90839dc5e5f82de5e2464e84c  gcc/co
*** 3622,3630 ****
  977c4f62ae50ceafb5866f0df04ecbd2  gcc/config/mips/mips-protos.h
  4460cfa5c224c98a10dd966058b273c7  gcc/config/mips/mips-ps-3d.md
  7eebc68d59fccfedc66378c88af82988  gcc/config/mips/mips-tables.opt
! 60908653841dc264d1b60e94ae90180c  gcc/config/mips/mips.c
  f6570a77acd7612e32159fa659e0d834  gcc/config/mips/mips.h
! 459492919c9ce92760004ceef67ecd50  gcc/config/mips/mips.md
  0bf4e4b4917fb943cc94b1fc1516793b  gcc/config/mips/mips.opt
  0b607da461fe0e2553f8961acfca2603  gcc/config/mips/msa.h
  34601028461e6dc96f72bcdce4cc91df  gcc/config/mips/mti-elf.h
--- 3627,3635 ----
  977c4f62ae50ceafb5866f0df04ecbd2  gcc/config/mips/mips-protos.h
  4460cfa5c224c98a10dd966058b273c7  gcc/config/mips/mips-ps-3d.md
  7eebc68d59fccfedc66378c88af82988  gcc/config/mips/mips-tables.opt
! e84605dc5881b68137ae74cec2791099  gcc/config/mips/mips.c
  f6570a77acd7612e32159fa659e0d834  gcc/config/mips/mips.h
! 28d9d61e03007dabb58c4dc47d20566f  gcc/config/mips/mips.md
  0bf4e4b4917fb943cc94b1fc1516793b  gcc/config/mips/mips.opt
  0b607da461fe0e2553f8961acfca2603  gcc/config/mips/msa.h
  34601028461e6dc96f72bcdce4cc91df  gcc/config/mips/mti-elf.h
*************** d835d08884a2846e70bef505767bd3f1  gcc/co
*** 3773,3779 ****
  9999e0f5e040c506a656b88182bfe128  gcc/config/nvptx/mkoffload.c
  c2aabf1e8738380511a66426506fe906  gcc/config/nvptx/nvptx-modes.def
  cf6afd6e66196a63cff72f8f4103f2e3  gcc/config/nvptx/nvptx-protos.h
! de3e2635aaa7a4d8f2d5b89f8518aa01  gcc/config/nvptx/nvptx.c
  9c28d59833b8c66542a24c37928678a2  gcc/config/nvptx/nvptx.h
  ebc715cb9ed58ce18cd0925fd8cdc6f0  gcc/config/nvptx/nvptx.md
  4c5703010962b9b7aa29775f7cdc7b8d  gcc/config/nvptx/nvptx.opt
--- 3778,3784 ----
  9999e0f5e040c506a656b88182bfe128  gcc/config/nvptx/mkoffload.c
  c2aabf1e8738380511a66426506fe906  gcc/config/nvptx/nvptx-modes.def
  cf6afd6e66196a63cff72f8f4103f2e3  gcc/config/nvptx/nvptx-protos.h
! 1f5a21e372bb3df15cec4e7d2e87efa8  gcc/config/nvptx/nvptx.c
  9c28d59833b8c66542a24c37928678a2  gcc/config/nvptx/nvptx.h
  ebc715cb9ed58ce18cd0925fd8cdc6f0  gcc/config/nvptx/nvptx.md
  4c5703010962b9b7aa29775f7cdc7b8d  gcc/config/nvptx/nvptx.opt
*************** b618c9b884f78ed041a9000a7e2848fa  gcc/co
*** 3797,3811 ****
  a7a18454ea8e20abea0987299b179374  gcc/config/pa/pa-hpux1111.opt
  3d2ee56c35ff78d7dfcd41ba3cb89051  gcc/config/pa/pa-hpux1131.h
  9b5dcd7f3770f0cb685743e52c1a5285  gcc/config/pa/pa-hpux1131.opt
! 1d8045dd7f587b60af4250805ca49fd0  gcc/config/pa/pa-linux.h
  7792b9b6c6fb4714e27d72c171139650  gcc/config/pa/pa-modes.def
  2f447d057c80970e98a0e5bff4156264  gcc/config/pa/pa-openbsd.h
  878fe335d079c0655b69d2d053f2045b  gcc/config/pa/pa-opts.h
! 425639b4b75ab27417ae117721b1e6b8  gcc/config/pa/pa-protos.h
! daca355056e6f539942bf6494cd4ce3d  gcc/config/pa/pa.c
! b9eacf94e24894a35ee842f49fbf7b00  gcc/config/pa/pa.h
! 99cbf3733929333bb98ee0fa50661ff0  gcc/config/pa/pa.md
! 492d54774394fa0ab4ac0c026eaebaac  gcc/config/pa/pa.opt
  91f85ad55deb8b853e7564cae70f1fee  gcc/config/pa/pa32-linux.h
  3de55e8c03212e88b39a5c5049f268fc  gcc/config/pa/pa32-openbsd.h
  c3efbff4395d6048661485fbd826a9cd  gcc/config/pa/pa32-regs.h
--- 3802,3816 ----
  a7a18454ea8e20abea0987299b179374  gcc/config/pa/pa-hpux1111.opt
  3d2ee56c35ff78d7dfcd41ba3cb89051  gcc/config/pa/pa-hpux1131.h
  9b5dcd7f3770f0cb685743e52c1a5285  gcc/config/pa/pa-hpux1131.opt
! 6f056c57147d1c6a7cff1cd4d06b197e  gcc/config/pa/pa-linux.h
  7792b9b6c6fb4714e27d72c171139650  gcc/config/pa/pa-modes.def
  2f447d057c80970e98a0e5bff4156264  gcc/config/pa/pa-openbsd.h
  878fe335d079c0655b69d2d053f2045b  gcc/config/pa/pa-opts.h
! 3d7caada5db69252e8eefe132dbe517f  gcc/config/pa/pa-protos.h
! 6d2048f245508c751fd7f4d46bb0b949  gcc/config/pa/pa.c
! 4f2705cbe0e3a9e4df46cc3d5af01a7e  gcc/config/pa/pa.h
! a150b0c5c17fd60a6603860f1eff3c74  gcc/config/pa/pa.md
! 4b04435840f4fbcdba5013e1bbea2d13  gcc/config/pa/pa.opt
  91f85ad55deb8b853e7564cae70f1fee  gcc/config/pa/pa32-linux.h
  3de55e8c03212e88b39a5c5049f268fc  gcc/config/pa/pa32-openbsd.h
  c3efbff4395d6048661485fbd826a9cd  gcc/config/pa/pa32-regs.h
*************** d68eeb6f936b9e4f7780448d8a3cf6e4  gcc/co
*** 3814,3821 ****
  0c22f63b1a5050b2893817db5a60880d  gcc/config/pa/pa64-linux.h
  c6570b2163bffc07668c71eeab8950a5  gcc/config/pa/pa64-regs.h
  a9a6afd79b827565ffb8de8330b4cfe6  gcc/config/pa/pa64-start.h
! 0552d7b225011009ca6e4001f87be0bf  gcc/config/pa/predicates.md
! 5129f15576b7cf477572623664be3f60  gcc/config/pa/som.h
  4104beb84cb7f3a8a5915652c3da66c5  gcc/config/pa/t-dce-thr
  6fd25f8c665d2d7390ea94c01dcb8e34  gcc/config/pa/t-linux
  307714ce1ea688eab99afac964472807  gcc/config/pdp11/constraints.md
--- 3819,3826 ----
  0c22f63b1a5050b2893817db5a60880d  gcc/config/pa/pa64-linux.h
  c6570b2163bffc07668c71eeab8950a5  gcc/config/pa/pa64-regs.h
  a9a6afd79b827565ffb8de8330b4cfe6  gcc/config/pa/pa64-start.h
! 9454f22cfda51507025a45435729869f  gcc/config/pa/predicates.md
! 7b9053b12b458885952c2741d3cc5629  gcc/config/pa/som.h
  4104beb84cb7f3a8a5915652c3da66c5  gcc/config/pa/t-dce-thr
  6fd25f8c665d2d7390ea94c01dcb8e34  gcc/config/pa/t-linux
  307714ce1ea688eab99afac964472807  gcc/config/pdp11/constraints.md
*************** cc71bd4920e54f5b2c8d0594399bfaac  gcc/co
*** 3990,3996 ****
  c1293b5c74cf0466a0c151f9669eaef1  gcc/config/riscv/riscv-modes.def
  c1d836d57d2c1d5b906302aaa5bf4b93  gcc/config/riscv/riscv-opts.h
  54ec65225abe3f20c7c39b8e1a1ef18d  gcc/config/riscv/riscv-protos.h
! 1fea9e30d4830f1b30fd8c21546520e4  gcc/config/riscv/riscv.c
  919b02a0567628ccdfe1097e2116ba4a  gcc/config/riscv/riscv.h
  90318599fedfc7f7c8324f1e8f273b0b  gcc/config/riscv/riscv.md
  ad6308b0af4d5ad16c571cd25bf22b4d  gcc/config/riscv/riscv.opt
--- 3995,4001 ----
  c1293b5c74cf0466a0c151f9669eaef1  gcc/config/riscv/riscv-modes.def
  c1d836d57d2c1d5b906302aaa5bf4b93  gcc/config/riscv/riscv-opts.h
  54ec65225abe3f20c7c39b8e1a1ef18d  gcc/config/riscv/riscv-protos.h
! 92029cfe45059edce8930320f126dd60  gcc/config/riscv/riscv.c
  919b02a0567628ccdfe1097e2116ba4a  gcc/config/riscv/riscv.h
  90318599fedfc7f7c8324f1e8f273b0b  gcc/config/riscv/riscv.md
  ad6308b0af4d5ad16c571cd25bf22b4d  gcc/config/riscv/riscv.opt
*************** a740672e11194097b7079bc14f770029  gcc/co
*** 4038,4056 ****
  dcae54b5112b4a35de3fee24152c08b6  gcc/config/rs6000/aix64.opt
  6de3e4e157ade9ff0333b8e956d4539c  gcc/config/rs6000/aix71.h
  71e6a687bca5495bca460bdd25e28c7c  gcc/config/rs6000/aix72.h
! 4d2fa3ecc3644ed539775b751a9b197c  gcc/config/rs6000/altivec.h
! bb8c856c9d0ff6489125845e382b4fd4  gcc/config/rs6000/altivec.md
  9f9485a0668e9f02dd1ddd921e8db540  gcc/config/rs6000/amo.h
  b5c0d31db75d05e19a5a74e12deee5c2  gcc/config/rs6000/biarch64.h
  d24bfc688852ea2817f920c09cc312e0  gcc/config/rs6000/bmi2intrin.h
  33a5f4f7292b1bb3ad8f66a4e3773c7e  gcc/config/rs6000/bmiintrin.h
  7292692fc7483600be11240cb2a1c118  gcc/config/rs6000/cell.md
  6bdc2b3f07ed0adb0d140b7f6ba6aece  gcc/config/rs6000/constraints.md
! ff5233f615d6c5818780f20b908405f7  gcc/config/rs6000/crypto.md
! 1e94caf4a8b0bc5e9663c1eb878f15e3  gcc/config/rs6000/darwin.h
! 3f74f48326d9253c04d38910eb754fcb  gcc/config/rs6000/darwin.md
  4ca90b03f871f9f94d714b3f7de5c299  gcc/config/rs6000/darwin.opt
! 02cde662e31624a94372cd3f24ff9c2a  gcc/config/rs6000/darwin64.h
  6e15cbbb2cb2cc3c36582884ce832f1c  gcc/config/rs6000/darwin7.h
  4ab65ef9b15ad703cff18793652a4ceb  gcc/config/rs6000/darwin8.h
  d21b5b5b85a33095db1d7b774c71b610  gcc/config/rs6000/default64.h
--- 4043,4062 ----
  dcae54b5112b4a35de3fee24152c08b6  gcc/config/rs6000/aix64.opt
  6de3e4e157ade9ff0333b8e956d4539c  gcc/config/rs6000/aix71.h
  71e6a687bca5495bca460bdd25e28c7c  gcc/config/rs6000/aix72.h
! b88aac221badfdc1acb72cf745d36341  gcc/config/rs6000/altivec.h
! 9a645725e31293158bc33418ee451956  gcc/config/rs6000/altivec.md
  9f9485a0668e9f02dd1ddd921e8db540  gcc/config/rs6000/amo.h
  b5c0d31db75d05e19a5a74e12deee5c2  gcc/config/rs6000/biarch64.h
  d24bfc688852ea2817f920c09cc312e0  gcc/config/rs6000/bmi2intrin.h
  33a5f4f7292b1bb3ad8f66a4e3773c7e  gcc/config/rs6000/bmiintrin.h
  7292692fc7483600be11240cb2a1c118  gcc/config/rs6000/cell.md
  6bdc2b3f07ed0adb0d140b7f6ba6aece  gcc/config/rs6000/constraints.md
! 9a01cd51276752b5d20859a3d7fbf25a  gcc/config/rs6000/crypto.md
! da9aa1dfff07a7041fdc1eb206b9f037  gcc/config/rs6000/darwin.h
! e6f0713613fd939175cceb41275691be  gcc/config/rs6000/darwin.md
  4ca90b03f871f9f94d714b3f7de5c299  gcc/config/rs6000/darwin.opt
! e2442f7a7d39c650b30c87274f59db87  gcc/config/rs6000/darwin32-biarch.h
! 3aeaaf4c43f3df11b4fac94ff932c8c1  gcc/config/rs6000/darwin64-biarch.h
  6e15cbbb2cb2cc3c36582884ce832f1c  gcc/config/rs6000/darwin7.h
  4ab65ef9b15ad703cff18793652a4ceb  gcc/config/rs6000/darwin8.h
  d21b5b5b85a33095db1d7b774c71b610  gcc/config/rs6000/default64.h
*************** e3b8239e4864950ba2a1eaeb687af8e2  gcc/co
*** 4080,4086 ****
  56e7905cd5d58cdaa4e54fa40dc3e354  gcc/config/rs6000/lynx.h
  0cc3c5f9101501b8253ce3176c3ffce4  gcc/config/rs6000/milli.exp
  92042d90d894f0691bc6844d63191748  gcc/config/rs6000/mm_malloc.h
! 3839b136fcb75590b540609bbc23b537  gcc/config/rs6000/mmintrin.h
  aee964d61fb1cbb5db2240e07d7dd96b  gcc/config/rs6000/mpc.md
  ea90cbc50976c4e72a24cb87e8083dc1  gcc/config/rs6000/netbsd.h
  3cb692c6d6947ea872988e948aa1b96c  gcc/config/rs6000/option-defaults.h
--- 4086,4092 ----
  56e7905cd5d58cdaa4e54fa40dc3e354  gcc/config/rs6000/lynx.h
  0cc3c5f9101501b8253ce3176c3ffce4  gcc/config/rs6000/milli.exp
  92042d90d894f0691bc6844d63191748  gcc/config/rs6000/mm_malloc.h
! cc6b584b6e27a45de81abebd3a3df7cb  gcc/config/rs6000/mmintrin.h
  aee964d61fb1cbb5db2240e07d7dd96b  gcc/config/rs6000/mpc.md
  ea90cbc50976c4e72a24cb87e8083dc1  gcc/config/rs6000/netbsd.h
  3cb692c6d6947ea872988e948aa1b96c  gcc/config/rs6000/option-defaults.h
*************** de6d25a053b9994a26e8ecc7f8bcfeba  gcc/co
*** 4091,4116 ****
  8a578e104cee146ba9a310e94fa808ba  gcc/config/rs6000/power6.md
  4fc18c5f5a51b83b90b58a40b447c35d  gcc/config/rs6000/power7.md
  abb23b23f2af6700d170086290f9c573  gcc/config/rs6000/power8.md
! 7b5379645b265c19ce58c23337ed48bc  gcc/config/rs6000/power9.md
  58b4ce015d00b9f5a28de026ae54cc7b  gcc/config/rs6000/ppc-asm.h
  0f9854421ac50b66adc14397f453bbe9  gcc/config/rs6000/ppc-auxv.h
  342969245a87fc2fa15e020a788bcb14  gcc/config/rs6000/ppu_intrinsics.h
! f5977a893ce90afe80a8ec3f3b558096  gcc/config/rs6000/predicates.md
! 10acad59175bb40efa42f19544e52092  gcc/config/rs6000/rs6000-builtin.def
! 97a829b0e33c40f0492ff4087d27767a  gcc/config/rs6000/rs6000-c.c
  74e1470f36d1513602e0d9ed52cf1e01  gcc/config/rs6000/rs6000-cpus.def
  8ec6d7b8eabe3794bf1ab38f06e84cfc  gcc/config/rs6000/rs6000-linux.c
  cc8cab98b7b59159fd7ae579ccfe9cba  gcc/config/rs6000/rs6000-modes.def
  43d68f14972a9a3b58a3a7900cf47151  gcc/config/rs6000/rs6000-modes.h
  4fe4357d2b59d1f1209721000b626cfd  gcc/config/rs6000/rs6000-opts.h
! a2eb09a57e0113267a500e881c8b6652  gcc/config/rs6000/rs6000-p8swap.c
  5f7c6215ba96134b2dc6ca6179606f8e  gcc/config/rs6000/rs6000-passes.def
  8d838167331b51f25ad138b4eb70004f  gcc/config/rs6000/rs6000-protos.h
  132a9f6c8de853eeee05712551d45e28  gcc/config/rs6000/rs6000-string.c
  643b9b3fa5815b6fbb2dc9b4458a3bdd  gcc/config/rs6000/rs6000-tables.opt
! 3d5eba4210dc9824efcf44fa568a5eb1  gcc/config/rs6000/rs6000.c
  de299d9cfb9159d426dcd0ae91746410  gcc/config/rs6000/rs6000.h
! aeefe30777e5ac33f915a58261d20e6d  gcc/config/rs6000/rs6000.md
  824001b2d686a4122decd64938e7f46d  gcc/config/rs6000/rs6000.opt
  3a5a1641a5dd900f925b623e02fca183  gcc/config/rs6000/rs64.md
  cc2ed391efb97e77a30227662d8dfc38  gcc/config/rs6000/rtems.h
--- 4097,4122 ----
  8a578e104cee146ba9a310e94fa808ba  gcc/config/rs6000/power6.md
  4fc18c5f5a51b83b90b58a40b447c35d  gcc/config/rs6000/power7.md
  abb23b23f2af6700d170086290f9c573  gcc/config/rs6000/power8.md
! 3be51ddd882505787de4e3624f79f4c9  gcc/config/rs6000/power9.md
  58b4ce015d00b9f5a28de026ae54cc7b  gcc/config/rs6000/ppc-asm.h
  0f9854421ac50b66adc14397f453bbe9  gcc/config/rs6000/ppc-auxv.h
  342969245a87fc2fa15e020a788bcb14  gcc/config/rs6000/ppu_intrinsics.h
! 5ad11b0fce3971e50616027287591d8d  gcc/config/rs6000/predicates.md
! 894beabda77f69f8c6ebe5790d57a707  gcc/config/rs6000/rs6000-builtin.def
! f9b7873f5b28e6bf8bc9763f098fe8ff  gcc/config/rs6000/rs6000-c.c
  74e1470f36d1513602e0d9ed52cf1e01  gcc/config/rs6000/rs6000-cpus.def
  8ec6d7b8eabe3794bf1ab38f06e84cfc  gcc/config/rs6000/rs6000-linux.c
  cc8cab98b7b59159fd7ae579ccfe9cba  gcc/config/rs6000/rs6000-modes.def
  43d68f14972a9a3b58a3a7900cf47151  gcc/config/rs6000/rs6000-modes.h
  4fe4357d2b59d1f1209721000b626cfd  gcc/config/rs6000/rs6000-opts.h
! 052ebc5de7af94bbac6998d42cd5a179  gcc/config/rs6000/rs6000-p8swap.c
  5f7c6215ba96134b2dc6ca6179606f8e  gcc/config/rs6000/rs6000-passes.def
  8d838167331b51f25ad138b4eb70004f  gcc/config/rs6000/rs6000-protos.h
  132a9f6c8de853eeee05712551d45e28  gcc/config/rs6000/rs6000-string.c
  643b9b3fa5815b6fbb2dc9b4458a3bdd  gcc/config/rs6000/rs6000-tables.opt
! 3843af864c5717e40aeb790894a4e009  gcc/config/rs6000/rs6000.c
  de299d9cfb9159d426dcd0ae91746410  gcc/config/rs6000/rs6000.h
! 508c61e780d66bf437a9fb69251f2d5c  gcc/config/rs6000/rs6000.md
  824001b2d686a4122decd64938e7f46d  gcc/config/rs6000/rs6000.opt
  3a5a1641a5dd900f925b623e02fca183  gcc/config/rs6000/rs64.md
  cc2ed391efb97e77a30227662d8dfc38  gcc/config/rs6000/rtems.h
*************** f9d1e30c3a4ecafd9023b44f03a49fc8  gcc/co
*** 4124,4134 ****
  f053f8229694372d55ea78dd4f0c5c28  gcc/config/rs6000/sysv4le.h
  56aec008c6e4a879c06afbe3660efdae  gcc/config/rs6000/t-aix43
  c059d4a16085cad58f34946aabe2cc11  gcc/config/rs6000/t-aix52
! f3250b9720d1149346f1ef8e21b52ea9  gcc/config/rs6000/t-darwin64
! 636250eb91fc5dada4804efcd525fc02  gcc/config/rs6000/t-darwin8
  0f970d99602398f4e297682f8a2bc0f7  gcc/config/rs6000/t-fprules
  52a22f94153362807c445e9976a570a5  gcc/config/rs6000/t-freebsd64
! ff51a8b999a109af125ed5678ca7cc91  gcc/config/rs6000/t-linux
  2b84eba4ca3f13506e28ddc14d567433  gcc/config/rs6000/t-linux64
  71c0a0470047f0171a3bb4c483eb2b72  gcc/config/rs6000/t-linux64bele
  489699b655594f05bae0b429fd261edb  gcc/config/rs6000/t-linux64le
--- 4130,4140 ----
  f053f8229694372d55ea78dd4f0c5c28  gcc/config/rs6000/sysv4le.h
  56aec008c6e4a879c06afbe3660efdae  gcc/config/rs6000/t-aix43
  c059d4a16085cad58f34946aabe2cc11  gcc/config/rs6000/t-aix52
! 636250eb91fc5dada4804efcd525fc02  gcc/config/rs6000/t-darwin32-biarch
! f3250b9720d1149346f1ef8e21b52ea9  gcc/config/rs6000/t-darwin64-biarch
  0f970d99602398f4e297682f8a2bc0f7  gcc/config/rs6000/t-fprules
  52a22f94153362807c445e9976a570a5  gcc/config/rs6000/t-freebsd64
! 40e5cd20542141b80d5fcf1a7b10b3fd  gcc/config/rs6000/t-linux
  2b84eba4ca3f13506e28ddc14d567433  gcc/config/rs6000/t-linux64
  71c0a0470047f0171a3bb4c483eb2b72  gcc/config/rs6000/t-linux64bele
  489699b655594f05bae0b429fd261edb  gcc/config/rs6000/t-linux64le
*************** b64a846190ec96ed1399a0ff634abb57  gcc/co
*** 4148,4154 ****
  dcf9f40ff97e1293f070b8dc3aa06400  gcc/config/rs6000/titan.md
  c46036b4cccd7f4737b8b30dbe9c479e  gcc/config/rs6000/vec_types.h
  62e755c1d65b4a0bf915d6cb1ab048f7  gcc/config/rs6000/vector.md
! ae03742c84e63e0c40b90cec5a19d396  gcc/config/rs6000/vsx.md
  f3ae66c0a97e2993dbb57c3ad3c14de1  gcc/config/rs6000/vxworks.h
  5e707e69636b23d3f1076bb71fb1bc99  gcc/config/rs6000/vxworksae.h
  565d57378339556706f36508c7ca8916  gcc/config/rs6000/vxworksmils.h
--- 4154,4160 ----
  dcf9f40ff97e1293f070b8dc3aa06400  gcc/config/rs6000/titan.md
  c46036b4cccd7f4737b8b30dbe9c479e  gcc/config/rs6000/vec_types.h
  62e755c1d65b4a0bf915d6cb1ab048f7  gcc/config/rs6000/vector.md
! 32562a5a5dbdf620600c6ec92fae301c  gcc/config/rs6000/vsx.md
  f3ae66c0a97e2993dbb57c3ad3c14de1  gcc/config/rs6000/vxworks.h
  5e707e69636b23d3f1076bb71fb1bc99  gcc/config/rs6000/vxworksae.h
  565d57378339556706f36508c7ca8916  gcc/config/rs6000/vxworksmils.h
*************** d7bac9c32038aa1a14b9a4834bdb2153  gcc/co
*** 4188,4201 ****
  106230506016171b71ab07ecbcdddd8a  gcc/config/s390/htmxlintrin.h
  342e7ff485f151fe5b55406594f4be39  gcc/config/s390/linux.h
  2d669e9dff9320233b7f216038499af2  gcc/config/s390/predicates.md
! 1b9b4548e3c648b75b1a9971c099621e  gcc/config/s390/s390-builtin-types.def
! 0d6abd4d4d8068513952dd50478573e6  gcc/config/s390/s390-builtins.def
  2e5820f6c953cd38503c01405236734a  gcc/config/s390/s390-builtins.h
! 94bb9801f7c21b9abfbf99383d7911de  gcc/config/s390/s390-c.c
  8ffd07333cf5c87efee0637e396bd149  gcc/config/s390/s390-modes.def
  dd581ffe9a17b11126b5923183e1b110  gcc/config/s390/s390-opts.h
  74939e1d57f01659100c31d3d3943788  gcc/config/s390/s390-protos.h
! de9c2beaffd1f60be3a9da9eacc3abea  gcc/config/s390/s390.c
  5dfe87b70fe97c47a9c40b06b7662115  gcc/config/s390/s390.h
  540c0b6b23c8aef0d6211156e4aa6ccf  gcc/config/s390/s390.md
  f991258a0a930bd79a1d406221cecf17  gcc/config/s390/s390.opt
--- 4194,4207 ----
  106230506016171b71ab07ecbcdddd8a  gcc/config/s390/htmxlintrin.h
  342e7ff485f151fe5b55406594f4be39  gcc/config/s390/linux.h
  2d669e9dff9320233b7f216038499af2  gcc/config/s390/predicates.md
! 041e55f0511e1be4da0b7bc1a83143b4  gcc/config/s390/s390-builtin-types.def
! b3184b60dd1e2849c9b33e6936d4faad  gcc/config/s390/s390-builtins.def
  2e5820f6c953cd38503c01405236734a  gcc/config/s390/s390-builtins.h
! b6b33d059d68d3980e1a109974c59311  gcc/config/s390/s390-c.c
  8ffd07333cf5c87efee0637e396bd149  gcc/config/s390/s390-modes.def
  dd581ffe9a17b11126b5923183e1b110  gcc/config/s390/s390-opts.h
  74939e1d57f01659100c31d3d3943788  gcc/config/s390/s390-protos.h
! df7c3f0690fdc622dfea8f4cdbb0ebe4  gcc/config/s390/s390.c
  5dfe87b70fe97c47a9c40b06b7662115  gcc/config/s390/s390.h
  540c0b6b23c8aef0d6211156e4aa6ccf  gcc/config/s390/s390.md
  f991258a0a930bd79a1d406221cecf17  gcc/config/s390/s390.opt
*************** f991258a0a930bd79a1d406221cecf17  gcc/co
*** 4208,4214 ****
  f17c7212b2cbc12f07ec94830f8b7eac  gcc/config/s390/tpf.md
  bf78833b73ed4695a1e55fbb94967b66  gcc/config/s390/tpf.opt
  f1dea21d1255ead60a637fbe52e1274f  gcc/config/s390/vecintrin.h
! f0a8abd792b2744828da6315571d6b25  gcc/config/s390/vector.md
  7ede31e10a18c5a54a6c080b421a1e92  gcc/config/s390/vx-builtins.md
  19876f77a242921272972ac5b8bd32d0  gcc/config/s390/x-native
  962dc9c4a3dad735e979eefee574c450  gcc/config/sh/constraints.md
--- 4214,4220 ----
  f17c7212b2cbc12f07ec94830f8b7eac  gcc/config/s390/tpf.md
  bf78833b73ed4695a1e55fbb94967b66  gcc/config/s390/tpf.opt
  f1dea21d1255ead60a637fbe52e1274f  gcc/config/s390/vecintrin.h
! 0f8ee5ae421e4c8f110e83cdfc1f0868  gcc/config/s390/vector.md
  7ede31e10a18c5a54a6c080b421a1e92  gcc/config/s390/vx-builtins.md
  19876f77a242921272972ac5b8bd32d0  gcc/config/s390/x-native
  962dc9c4a3dad735e979eefee574c450  gcc/config/sh/constraints.md
*************** e60c11102da3006a2ea94f6c6770389e  gcc/co
*** 4230,4238 ****
  79155b89b25ea22f9edff508c0d58027  gcc/config/sh/sh-mem.cc
  8bf2b464e12ab2e2af256628ffb2bb3c  gcc/config/sh/sh-modes.def
  506cac6fb163e58099b09e43cc4a0a8d  gcc/config/sh/sh-protos.h
! 41d5b9902dc8da9038c24195a4bb27df  gcc/config/sh/sh.c
! 0cad9562ee917168d4e6b83a90bfc118  gcc/config/sh/sh.h
! e9407274d6a21c2a652a9c6ea84c2f73  gcc/config/sh/sh.md
  2d2a751ad14145bcff8c4c7f1039880a  gcc/config/sh/sh.opt
  a0e95d3c3f266053c6934b12b145dae8  gcc/config/sh/sh1.md
  a2f4d0437330a0164fce4cfa3d795db0  gcc/config/sh/sh4-300.md
--- 4236,4244 ----
  79155b89b25ea22f9edff508c0d58027  gcc/config/sh/sh-mem.cc
  8bf2b464e12ab2e2af256628ffb2bb3c  gcc/config/sh/sh-modes.def
  506cac6fb163e58099b09e43cc4a0a8d  gcc/config/sh/sh-protos.h
! 9920e7158f45733ad05fd0047f7ab62f  gcc/config/sh/sh.c
! c541545e0d21465a702f3e2967ff8011  gcc/config/sh/sh.h
! ea35689a0148bb551c5a0484b0d4029c  gcc/config/sh/sh.md
  2d2a751ad14145bcff8c4c7f1039880a  gcc/config/sh/sh.opt
  a0e95d3c3f266053c6934b12b145dae8  gcc/config/sh/sh1.md
  a2f4d0437330a0164fce4cfa3d795db0  gcc/config/sh/sh4-300.md
*************** d2d75159dbb3673877a99dbb45a730e8  gcc/co
*** 4285,4294 ****
  3e73f3b298504f4739c6a005c86bfa94  gcc/config/sparc/sparc-modes.def
  7ce792f7bc14ea47fe92381d8b7b7400  gcc/config/sparc/sparc-opts.h
  c05adeef9d811893755284314d7e5f31  gcc/config/sparc/sparc-passes.def
! f50ca0df113a1d1486d71588af1f34c9  gcc/config/sparc/sparc-protos.h
! 9bf70a74175cdb6eaaf0925bac9ec86d  gcc/config/sparc/sparc.c
! 4cfe5c2e3cf2751f5fabfa3f920e5fe4  gcc/config/sparc/sparc.h
! 669d8bb9f5faa7f0d5e39cd8502c9519  gcc/config/sparc/sparc.md
  497f3da0646b51525092463f232911fb  gcc/config/sparc/sparc.opt
  1fb3c7f03aa54b786f780eb9c9ed005e  gcc/config/sparc/sparclet.md
  4191c81a0c4b3020ec97f61a9bd952b1  gcc/config/sparc/supersparc.md
--- 4291,4300 ----
  3e73f3b298504f4739c6a005c86bfa94  gcc/config/sparc/sparc-modes.def
  7ce792f7bc14ea47fe92381d8b7b7400  gcc/config/sparc/sparc-opts.h
  c05adeef9d811893755284314d7e5f31  gcc/config/sparc/sparc-passes.def
! a18e12cbcf9484911bb3e0288863ba0e  gcc/config/sparc/sparc-protos.h
! 392624ec71398920e82cac2aa4e53f5f  gcc/config/sparc/sparc.c
! 6eb755468c6d1240ce58037786d1c99a  gcc/config/sparc/sparc.h
! d2987a0a4d1eb5aff85e10841f18aeab  gcc/config/sparc/sparc.md
  497f3da0646b51525092463f232911fb  gcc/config/sparc/sparc.opt
  1fb3c7f03aa54b786f780eb9c9ed005e  gcc/config/sparc/sparclet.md
  4191c81a0c4b3020ec97f61a9bd952b1  gcc/config/sparc/supersparc.md
*************** c2f41d409d10f10c06a0de4501553910  gcc/co
*** 4472,4491 ****
  850d2459d6c32d677d50747787635ecc  gcc/config/xtensa/uclinux.h
  469a9a76ba51e0f1b25fbf760a831c7a  gcc/config/xtensa/uclinux.opt
  63481accf82403836ce83a79185b9226  gcc/config/xtensa/xtensa-protos.h
! 1287b18f578d82691c6c9bc086ae5b31  gcc/config/xtensa/xtensa.c
  97c2e5f153dabd85c063122e7c2912db  gcc/config/xtensa/xtensa.h
  132c6f6dd01b2db6164f3abdb0b3c2ff  gcc/config/xtensa/xtensa.md
  be32e55d84ad27ad2692d9d344b8cf12  gcc/config/xtensa/xtensa.opt
! 81831aef763d745ed90dc500e423aee0  gcc/configure
! 0805205386bf8688f9fbb5de8c35a433  gcc/configure.ac
  f9c1a015d346b30fdc7192725778646b  gcc/context.c
  09941917d194790bc9f86359ea14cd47  gcc/context.h
! 13ed0366356631a4d59eb7f945040428  gcc/convert.c
  9fe3da26819f2429b0e35192b8962054  gcc/convert.h
  c0c049d064942d75d95822a6849d16fe  gcc/coretypes.h
  609dd9bc60db748cac9a719b04dbbb32  gcc/coverage.c
  7019a0a1a14eb1207414a6e0be21131b  gcc/coverage.h
! e78a237975733ad0d74ff1fbaef4b132  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
--- 4478,4497 ----
  850d2459d6c32d677d50747787635ecc  gcc/config/xtensa/uclinux.h
  469a9a76ba51e0f1b25fbf760a831c7a  gcc/config/xtensa/uclinux.opt
  63481accf82403836ce83a79185b9226  gcc/config/xtensa/xtensa-protos.h
! 05c81eb42504dbd5a0decd12ba75f77e  gcc/config/xtensa/xtensa.c
  97c2e5f153dabd85c063122e7c2912db  gcc/config/xtensa/xtensa.h
  132c6f6dd01b2db6164f3abdb0b3c2ff  gcc/config/xtensa/xtensa.md
  be32e55d84ad27ad2692d9d344b8cf12  gcc/config/xtensa/xtensa.opt
! 57603f5c5c8e0662f73aafd0112f3227  gcc/configure
! 3ec5c7eac29d9ec8807f0865076dca18  gcc/configure.ac
  f9c1a015d346b30fdc7192725778646b  gcc/context.c
  09941917d194790bc9f86359ea14cd47  gcc/context.h
! 2cc05dc98383bba768f83f17c6f034bc  gcc/convert.c
  9fe3da26819f2429b0e35192b8962054  gcc/convert.h
  c0c049d064942d75d95822a6849d16fe  gcc/coretypes.h
  609dd9bc60db748cac9a719b04dbbb32  gcc/coverage.c
  7019a0a1a14eb1207414a6e0be21131b  gcc/coverage.h
! db449154c41cdb5326f290eeade1b989  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
*************** c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp
*** 4515,4570 ****
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  44c35d63af02e8fa5641989b2f0820f9  gcc/cp/Make-lang.in
  a13b72c2be1f0d58cf692cafb78ff106  gcc/cp/NEWS
! 86bc718ab447af5dd379155beb7623d1  gcc/cp/call.c
  9abe2d1b127f2761a9b52b97fbdb9ec1  gcc/cp/cfns.gperf
  5389e5fd89452259352383e7f7ce3fff  gcc/cp/cfns.h
! 60298a335f192923e664b4bed14e119e  gcc/cp/class.c
! f6634d3dd25b744d80b6463d153f29ac  gcc/cp/config-lang.in
! ecb93abe3fff92bb749b5546b77f1ca1  gcc/cp/constexpr.c
  89f593e8c98278d8ad700aee95665a89  gcc/cp/constraint.cc
! 86b70720dd4960761569ac38b6f46788  gcc/cp/cp-gimplify.c
  8d11cb46ceb32e0717a862a5ec754374  gcc/cp/cp-lang.c
  1171638dfce063f3a25c42780e2b2c1f  gcc/cp/cp-objcp-common.c
  a913da461b6f1a49b31023d0ebbdf67b  gcc/cp/cp-objcp-common.h
  ad49e45ec2343c757ed3b1ea1069d661  gcc/cp/cp-tree.def
! 276945345fd26a06d7ea690bb09ef680  gcc/cp/cp-tree.h
  33972c71f6c6035e636c350ae6e6e5fd  gcc/cp/cp-ubsan.c
  4150394f21e19f4fe78302d7871e7a72  gcc/cp/cvt.c
  ef76fbbf5f9d145103970055ffd84d01  gcc/cp/cxx-pretty-print.c
  13262d34ab67984f1c386024e953d217  gcc/cp/cxx-pretty-print.h
! df39e9aabad81cc9b9cb186ae27986b4  gcc/cp/decl.c
  5501a00d10aa487d402cc2f1afd87c18  gcc/cp/decl.h
! 1bb02bfed345467524779fb2ee765f32  gcc/cp/decl2.c
  91ecc2454d3e0d78bff70abecff1d521  gcc/cp/dump.c
  68b5ffb4460da3acbd339922da430b3e  gcc/cp/error.c
  0174f4e12f4f7e6c2639ee79e26dd503  gcc/cp/except.c
  699761d65baf9e3f9c91035ebc3618c6  gcc/cp/expr.c
  9f7faeecf3bf945c3786f3edf962c580  gcc/cp/friend.c
  5d579a9172a514e43539f964dee83eba  gcc/cp/g++spec.c
! 78f850f8674a1e68b664371da13aacdc  gcc/cp/init.c
! 99ba243774ed8a1be4c0aac649850b5f  gcc/cp/lambda.c
  233a5981c3f13caa280c5bba26cfbe28  gcc/cp/lang-specs.h
  22372b2ef4cf97357a48de1a73244743  gcc/cp/lex.c
  eca62cf53f871aa6913e2c734fc94bfb  gcc/cp/logic.cc
! 866237c3e8e5327884ce528fddba5db1  gcc/cp/mangle.c
! 06305e59f376b6935a738d48f3890dc2  gcc/cp/method.c
! 62d72b8a9eec20fee2507e8df1a52820  gcc/cp/name-lookup.c
  7aca3f7e71336fb86bb9397fe5c98fd0  gcc/cp/name-lookup.h
  7999d8537059142826bf293be832a171  gcc/cp/operators.def
  aa4ace6d38cf4c2d30c2617fbefaf108  gcc/cp/optimize.c
! 1d2fa64eff365c69b0d18b89d8be7095  gcc/cp/parser.c
  4bb2c293d71dc0d59b6363d58c197b7b  gcc/cp/parser.h
! 1439387929a7c8dc4acb13bd55d16e8a  gcc/cp/pt.c
  eac77f6c1d074e5e5e5d94962b8e03de  gcc/cp/ptree.c
  e1f9d5051218958fa8b08dedb3510c09  gcc/cp/repo.c
  1caf25d6209863e9f6bae25615b7835a  gcc/cp/rtti.c
  ef3e5af8501bf80b5fba0e171aa85ec6  gcc/cp/search.c
! 56c97435003dad953c687b8d6d8aed7a  gcc/cp/semantics.c
! 884340f8d2ba2ce0f34325110678a007  gcc/cp/tree.c
  6936db73722ddbe991df180715229427  gcc/cp/type-utils.h
! 21b21a0cb75fcf6df7c26972bddd85c5  gcc/cp/typeck.c
! 691425d82082c6de270e9649dea49c49  gcc/cp/typeck2.c
! 5136c07637d5ae7fd14f5e96253c9258  gcc/cp/vtable-class-hierarchy.c
  a2eabba8fbb748371d4bbab5a475552d  gcc/cppbuiltin.c
  5d962b5c9c79b2351c67f54a8b0c870d  gcc/cppbuiltin.h
  61d20262bb57f6ca88b1cf254a5d174c  gcc/cppdefault.c
--- 4521,4576 ----
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  44c35d63af02e8fa5641989b2f0820f9  gcc/cp/Make-lang.in
  a13b72c2be1f0d58cf692cafb78ff106  gcc/cp/NEWS
! 19498319a0c320656990fea9a6d003e5  gcc/cp/call.c
  9abe2d1b127f2761a9b52b97fbdb9ec1  gcc/cp/cfns.gperf
  5389e5fd89452259352383e7f7ce3fff  gcc/cp/cfns.h
! 41929645e4ac35bfdfae9541ea186454  gcc/cp/class.c
! 6c0fb70085423cc515e52965ea029fc9  gcc/cp/config-lang.in
! d1174bf5db015fbc1cd08084dd5db06e  gcc/cp/constexpr.c
  89f593e8c98278d8ad700aee95665a89  gcc/cp/constraint.cc
! e02d44916c5fc89e7745b1fe6276ca9f  gcc/cp/cp-gimplify.c
  8d11cb46ceb32e0717a862a5ec754374  gcc/cp/cp-lang.c
  1171638dfce063f3a25c42780e2b2c1f  gcc/cp/cp-objcp-common.c
  a913da461b6f1a49b31023d0ebbdf67b  gcc/cp/cp-objcp-common.h
  ad49e45ec2343c757ed3b1ea1069d661  gcc/cp/cp-tree.def
! 03dec7ca5e0d953b1416e54b81d0dea7  gcc/cp/cp-tree.h
  33972c71f6c6035e636c350ae6e6e5fd  gcc/cp/cp-ubsan.c
  4150394f21e19f4fe78302d7871e7a72  gcc/cp/cvt.c
  ef76fbbf5f9d145103970055ffd84d01  gcc/cp/cxx-pretty-print.c
  13262d34ab67984f1c386024e953d217  gcc/cp/cxx-pretty-print.h
! 0664e5e8f65c3993debccbaea9742d59  gcc/cp/decl.c
  5501a00d10aa487d402cc2f1afd87c18  gcc/cp/decl.h
! f30091de971dcbf658c2e21c628be941  gcc/cp/decl2.c
  91ecc2454d3e0d78bff70abecff1d521  gcc/cp/dump.c
  68b5ffb4460da3acbd339922da430b3e  gcc/cp/error.c
  0174f4e12f4f7e6c2639ee79e26dd503  gcc/cp/except.c
  699761d65baf9e3f9c91035ebc3618c6  gcc/cp/expr.c
  9f7faeecf3bf945c3786f3edf962c580  gcc/cp/friend.c
  5d579a9172a514e43539f964dee83eba  gcc/cp/g++spec.c
! 576d6c3db557e4cc31cbc0dccfad6a06  gcc/cp/init.c
! 47c756ec81e7ff8327d4c9384c049229  gcc/cp/lambda.c
  233a5981c3f13caa280c5bba26cfbe28  gcc/cp/lang-specs.h
  22372b2ef4cf97357a48de1a73244743  gcc/cp/lex.c
  eca62cf53f871aa6913e2c734fc94bfb  gcc/cp/logic.cc
! cf616997a806a853e1adc0ad1e943ad2  gcc/cp/mangle.c
! 80f885bcb2f55c067e07fae76ed3c7cc  gcc/cp/method.c
! a1def62674bed993c3c05d7b25473938  gcc/cp/name-lookup.c
  7aca3f7e71336fb86bb9397fe5c98fd0  gcc/cp/name-lookup.h
  7999d8537059142826bf293be832a171  gcc/cp/operators.def
  aa4ace6d38cf4c2d30c2617fbefaf108  gcc/cp/optimize.c
! 42de608fdcd65acc6d4bd6e6fe3e44d3  gcc/cp/parser.c
  4bb2c293d71dc0d59b6363d58c197b7b  gcc/cp/parser.h
! f91a8715bf932aeae4541f0177010bcc  gcc/cp/pt.c
  eac77f6c1d074e5e5e5d94962b8e03de  gcc/cp/ptree.c
  e1f9d5051218958fa8b08dedb3510c09  gcc/cp/repo.c
  1caf25d6209863e9f6bae25615b7835a  gcc/cp/rtti.c
  ef3e5af8501bf80b5fba0e171aa85ec6  gcc/cp/search.c
! d5bf0d36876d83b11b5253f825d0bc94  gcc/cp/semantics.c
! 45bec25ccabbd0cd997322d5ca4ebbac  gcc/cp/tree.c
  6936db73722ddbe991df180715229427  gcc/cp/type-utils.h
! 958b364a54d781cf9c09e22667d688cb  gcc/cp/typeck.c
! ef3e3a0e17706f4b537c3e8a10e7820c  gcc/cp/typeck2.c
! ac7905d8eec1d4376410b3c461060519  gcc/cp/vtable-class-hierarchy.c
  a2eabba8fbb748371d4bbab5a475552d  gcc/cppbuiltin.c
  5d962b5c9c79b2351c67f54a8b0c870d  gcc/cppbuiltin.h
  61d20262bb57f6ca88b1cf254a5d174c  gcc/cppdefault.c
*************** e856dbd81fa4a9ecce4e761d62767738  gcc/db
*** 4583,4596 ****
  9b39ff7c950a2d234633560242b8fb78  gcc/dbgcnt.h
  b019ee858ac23dc8956f07d217189fc3  gcc/dbxout.c
  cb156d97d13532b0c6274979bb48a21b  gcc/dbxout.h
! 6f29884ba00b6e6c4122b74cb5abac21  gcc/dce.c
  6ff53f1bd0646a9f82c69d21bab36f45  gcc/dce.h
  f8a2cd292b30e2a2de3c6e69756f0a2a  gcc/ddg.c
  43fc774c972174af68c11a16a97854ab  gcc/ddg.h
  96742d983b626db85a7ee70c6d9c4ea5  gcc/debug.c
  a7513661cee5f0fe6d12aeb65f39c67b  gcc/debug.h
  256716fa4b996434e3feb9143b30ee1a  gcc/defaults.h
! e6291d6003e187efe72d90b1650526ba  gcc/df-core.c
  b9ccf22b2d893950319cd090bf8d9850  gcc/df-problems.c
  05c8a7b23cbf21a241e3ee788184083d  gcc/df-scan.c
  1ecf7570d635a072ee254435a51c5138  gcc/df.h
--- 4589,4602 ----
  9b39ff7c950a2d234633560242b8fb78  gcc/dbgcnt.h
  b019ee858ac23dc8956f07d217189fc3  gcc/dbxout.c
  cb156d97d13532b0c6274979bb48a21b  gcc/dbxout.h
! 927ddacc9242b0c0e9f02b3f1e26d52e  gcc/dce.c
  6ff53f1bd0646a9f82c69d21bab36f45  gcc/dce.h
  f8a2cd292b30e2a2de3c6e69756f0a2a  gcc/ddg.c
  43fc774c972174af68c11a16a97854ab  gcc/ddg.h
  96742d983b626db85a7ee70c6d9c4ea5  gcc/debug.c
  a7513661cee5f0fe6d12aeb65f39c67b  gcc/debug.h
  256716fa4b996434e3feb9143b30ee1a  gcc/defaults.h
! 48538e1514bca5f443016eeb9b4b3274  gcc/df-core.c
  b9ccf22b2d893950319cd090bf8d9850  gcc/df-problems.c
  05c8a7b23cbf21a241e3ee788184083d  gcc/df-scan.c
  1ecf7570d635a072ee254435a51c5138  gcc/df.h
*************** e0bffe4a2d45e48aef29de6113dee546  gcc/di
*** 4603,4609 ****
  db08a19390a12fc433fcf9b5f74c1b69  gcc/diagnostic.c
  34ff34e70ee21994b32ed6f8797dbb70  gcc/diagnostic.def
  a50eb519ba69860eee90586f0554cfa4  gcc/diagnostic.h
! 5cba0d3fc5a052bd2241bfef8a593757  gcc/doc/avr-mmcu.texi
  a03612cca367b5ecbb5192f605e806f1  gcc/doc/bugreport.texi
  1fe0ba7429ac86615aa75bf6815612f3  gcc/doc/cfg.texi
  b7905f4ade67d1968ab1fcce3bad3480  gcc/doc/collect2.texi
--- 4609,4615 ----
  db08a19390a12fc433fcf9b5f74c1b69  gcc/diagnostic.c
  34ff34e70ee21994b32ed6f8797dbb70  gcc/diagnostic.def
  a50eb519ba69860eee90586f0554cfa4  gcc/diagnostic.h
! 9ef6463fe70e55e96586327c5b2523df  gcc/doc/avr-mmcu.texi
  a03612cca367b5ecbb5192f605e806f1  gcc/doc/bugreport.texi
  1fe0ba7429ac86615aa75bf6815612f3  gcc/doc/cfg.texi
  b7905f4ade67d1968ab1fcce3bad3480  gcc/doc/collect2.texi
*************** a23535c7db0c6f475054ba2cb1d438c1  gcc/do
*** 4611,4618 ****
  700782ba93176aa1ac7dfee603911bcb  gcc/doc/configfiles.texi
  cff2e685f1a9f6f4ce0070fb9c1a0620  gcc/doc/configterms.texi
  12de3a3dd491517501344c465ad0ef84  gcc/doc/contrib.texi
! e199d603e49f05735eee3939926e7cd6  gcc/doc/contribute.texi
! 9e53003a91dd4518fbf36c81fbf5e227  gcc/doc/cpp.1
  ed7e6dae7e3cf77daaf3d5070e094771  gcc/doc/cpp.info
  1e3db4df621db13a0b39f924c8f278eb  gcc/doc/cpp.texi
  7c02324cc006f220459805063014518a  gcc/doc/cppdiropts.texi
--- 4617,4624 ----
  700782ba93176aa1ac7dfee603911bcb  gcc/doc/configfiles.texi
  cff2e685f1a9f6f4ce0070fb9c1a0620  gcc/doc/configterms.texi
  12de3a3dd491517501344c465ad0ef84  gcc/doc/contrib.texi
! 05586e3e969e66c7bec57532d58252c3  gcc/doc/contribute.texi
! 565697f35b4519066b604c369e7e1051  gcc/doc/cpp.1
  ed7e6dae7e3cf77daaf3d5070e094771  gcc/doc/cpp.info
  1e3db4df621db13a0b39f924c8f278eb  gcc/doc/cpp.texi
  7c02324cc006f220459805063014518a  gcc/doc/cppdiropts.texi
*************** b2084efddf7328253f4224f392c92a4c  gcc/do
*** 4621,4649 ****
  556b73e670042539fbdc022a731bb105  gcc/doc/cppinternals.texi
  db073af8991f4e1229389381b3d6dd85  gcc/doc/cppopts.texi
  82446e76de3ab1bef723ebd97912a632  gcc/doc/cppwarnopts.texi
! ba3b16bcc43d4cc6560aa46867cfb6d6  gcc/doc/extend.texi
  c1e11bb67ed686b1affe2cc477f70550  gcc/doc/fragments.texi
  cf06864101b61455759a16faca3e70cd  gcc/doc/frontends.texi
! c6d06effec013d9052d79589dd7524c1  gcc/doc/fsf-funding.7
! f907433e3006107ea4526f1c8ab4ee42  gcc/doc/g++.1
! f907433e3006107ea4526f1c8ab4ee42  gcc/doc/gcc.1
! ba931364d8bf2fea01cbee2516e633ae  gcc/doc/gcc.info
  71873939d138f16b52e7053f4d7d3f77  gcc/doc/gcc.texi
! c1255ee8ce656fd7da01867c18d35a79  gcc/doc/gccinstall.info
! 5570e989a792f0fe2033aa7f64b1b495  gcc/doc/gccint.info
  8cf490d8be79f659c8ba8c27dada6c8d  gcc/doc/gccint.texi
! 061196563b8a55c46a3972af3597c23b  gcc/doc/gcov-dump.1
  ce533f1bf4a49f9eb606882e58f0a414  gcc/doc/gcov-dump.texi
! e775319549b621da4bd076990704ecb8  gcc/doc/gcov-tool.1
  ecc3e7352f48a2b6553e89c1c0f6b9bc  gcc/doc/gcov-tool.texi
! 8193bcb79372f9a0b21c35e4712807c9  gcc/doc/gcov.1
  d5f5ff645ec6e3380f60f13a1633b105  gcc/doc/gcov.texi
  8b699a7b687444171cc61644be51e3e0  gcc/doc/generic.texi
! 6bf5601638de1d21acadb13993ccb8ce  gcc/doc/gfdl.7
! 38f8db01ab542e618c5b35cba928ffc3  gcc/doc/gfortran.1
  b3610e4a79ea6cdf06f44fccf1f934af  gcc/doc/gimple.texi
  290370669f02bef1502ada9273e5261f  gcc/doc/gnu.texi
! 4879b79cf1e109c3142068fabc0aeb51  gcc/doc/gpl.7
  0d41af709032cd77cccb7972c03fa712  gcc/doc/gty.texi
  317e73b5e45097060cfe6be2186b531a  gcc/doc/headerdirs.texi
  f5b492a2f1fb4916502cc396c21ee275  gcc/doc/hostconfig.texi
--- 4627,4655 ----
  556b73e670042539fbdc022a731bb105  gcc/doc/cppinternals.texi
  db073af8991f4e1229389381b3d6dd85  gcc/doc/cppopts.texi
  82446e76de3ab1bef723ebd97912a632  gcc/doc/cppwarnopts.texi
! e3f27b067faab6144a839b75c7ff56df  gcc/doc/extend.texi
  c1e11bb67ed686b1affe2cc477f70550  gcc/doc/fragments.texi
  cf06864101b61455759a16faca3e70cd  gcc/doc/frontends.texi
! 492c9ea9dc61bb6b5a5436d2b8a22c94  gcc/doc/fsf-funding.7
! d7766f6c7e01dc4016b3897e62d4c8d0  gcc/doc/g++.1
! d7766f6c7e01dc4016b3897e62d4c8d0  gcc/doc/gcc.1
! e057ff8c38f4cd6f7accba13f0e146ff  gcc/doc/gcc.info
  71873939d138f16b52e7053f4d7d3f77  gcc/doc/gcc.texi
! 01f87523fd80d971bcf3d8ba6fcd3228  gcc/doc/gccinstall.info
! 18d214e8932667d57869262f5792e0fb  gcc/doc/gccint.info
  8cf490d8be79f659c8ba8c27dada6c8d  gcc/doc/gccint.texi
! 35318dee7362e7aef4dfe6b8733bb2f3  gcc/doc/gcov-dump.1
  ce533f1bf4a49f9eb606882e58f0a414  gcc/doc/gcov-dump.texi
! 92276559435bc2145139ec712a8d7517  gcc/doc/gcov-tool.1
  ecc3e7352f48a2b6553e89c1c0f6b9bc  gcc/doc/gcov-tool.texi
! a6048a2946db4bcaf55de22cff0b7675  gcc/doc/gcov.1
  d5f5ff645ec6e3380f60f13a1633b105  gcc/doc/gcov.texi
  8b699a7b687444171cc61644be51e3e0  gcc/doc/generic.texi
! 28658dcabc9725b74612b3739c28e594  gcc/doc/gfdl.7
! 1f6c3157c7664ca1920d77e4f28c0056  gcc/doc/gfortran.1
  b3610e4a79ea6cdf06f44fccf1f934af  gcc/doc/gimple.texi
  290370669f02bef1502ada9273e5261f  gcc/doc/gnu.texi
! 52e8b8432d6c45d483153cd921c54b1c  gcc/doc/gpl.7
  0d41af709032cd77cccb7972c03fa712  gcc/doc/gty.texi
  317e73b5e45097060cfe6be2186b531a  gcc/doc/headerdirs.texi
  f5b492a2f1fb4916502cc396c21ee275  gcc/doc/hostconfig.texi
*************** b476484399f312392032b166c2e042bf  gcc/do
*** 4655,4671 ****
  5f5adc2c6c4ebdcf03cc0125250f5995  gcc/doc/include/gpl_v3.texi
  73819b3930a3d4be5d6234070d02386a  gcc/doc/include/texinfo.tex
  a8ef8aaffff076cac48e316bf7a1719a  gcc/doc/install-old.texi
! 82313b77d44895b7e66e681a4974f6ab  gcc/doc/install.texi
  1ab54698a1001c2304a579a19b2aa1a3  gcc/doc/install.texi2html
  607379a18f52f449cac65d16265a9076  gcc/doc/interface.texi
! 3fffb48dceb80be0cf480b93eb49d2de  gcc/doc/invoke.texi
  99ffcf94b1906902e750ad39db855775  gcc/doc/languages.texi
  f13c954a47504e1577bb0e79be3db556  gcc/doc/libgcc.texi
  b66f6bc3378f4edaf1851c2c46f26d65  gcc/doc/loop.texi
  4d3e7bc856d2aecaad7786848e0806c5  gcc/doc/lto.texi
  b19d360bcce7bf2aff8a335a11efdcef  gcc/doc/makefile.texi
  beb96df4321f5cbef95821074798b6ca  gcc/doc/match-and-simplify.texi
! 71490555d6f2621a75e1a468d9864d0d  gcc/doc/md.texi
  9893d33f34132bdb792d592d1df70111  gcc/doc/objc.texi
  a4f6e07928e13a6c410f7e8b39ec5eb8  gcc/doc/optinfo.texi
  685eb978dc4b9a4361c062631100142d  gcc/doc/options.texi
--- 4661,4677 ----
  5f5adc2c6c4ebdcf03cc0125250f5995  gcc/doc/include/gpl_v3.texi
  73819b3930a3d4be5d6234070d02386a  gcc/doc/include/texinfo.tex
  a8ef8aaffff076cac48e316bf7a1719a  gcc/doc/install-old.texi
! a1cedf2f636cf25109ee30c620979e41  gcc/doc/install.texi
  1ab54698a1001c2304a579a19b2aa1a3  gcc/doc/install.texi2html
  607379a18f52f449cac65d16265a9076  gcc/doc/interface.texi
! d8834db290b92de1aeb5c901d572fd45  gcc/doc/invoke.texi
  99ffcf94b1906902e750ad39db855775  gcc/doc/languages.texi
  f13c954a47504e1577bb0e79be3db556  gcc/doc/libgcc.texi
  b66f6bc3378f4edaf1851c2c46f26d65  gcc/doc/loop.texi
  4d3e7bc856d2aecaad7786848e0806c5  gcc/doc/lto.texi
  b19d360bcce7bf2aff8a335a11efdcef  gcc/doc/makefile.texi
  beb96df4321f5cbef95821074798b6ca  gcc/doc/match-and-simplify.texi
! 51e4dad9b66ce61d1382efd1bf7bf9d4  gcc/doc/md.texi
  9893d33f34132bdb792d592d1df70111  gcc/doc/objc.texi
  a4f6e07928e13a6c410f7e8b39ec5eb8  gcc/doc/optinfo.texi
  685eb978dc4b9a4361c062631100142d  gcc/doc/options.texi
*************** c612fa291f7cb113bfea54f024123363  gcc/do
*** 4689,4706 ****
  e3159104bcf8fa02d17ebd8fdef1d601  gcc/domwalk.h
  e46a0678cd58056e1ad2bccc1f1767a9  gcc/double-int.c
  3014d385a35cb8c0f86f4c8d55ed9c7c  gcc/double-int.h
! d14581702e7f559a575f2c2dd54b25cb  gcc/dse.c
  27d2c31d370f7348c76c3e0d1e104abd  gcc/dumpfile.c
  a6ac033ab207e2db558b953e2b86f763  gcc/dumpfile.h
  5180a42afcab61545fa230784fe1a143  gcc/dwarf2asm.c
  a3b5fe42438f913189aa4613c0f0f2d9  gcc/dwarf2asm.h
! 4394f733fed8a69985296868cc4f6c12  gcc/dwarf2cfi.c
! c892b1c2868c7a87dd2f2fa260d4b918  gcc/dwarf2out.c
  0101e0a5ea82db816cd96a515204bf62  gcc/dwarf2out.h
  14418ad02a37c7f769973c7f8bf2d390  gcc/early-remat.c
  a3ebe63cea199a03023109bc8d558db4  gcc/edit-context.c
  0d19d40813a11f9fe3a1139fa5d44b52  gcc/edit-context.h
! 96dceb72f62035c2527f79cff10075d1  gcc/emit-rtl.c
  1547fc041ebc5c1ae718a3fb86379f48  gcc/emit-rtl.h
  025bf76a01355414d0a9a80594bd870d  gcc/errors.c
  cb73326ed478016ad34331dbdf8ca68a  gcc/errors.h
--- 4695,4712 ----
  e3159104bcf8fa02d17ebd8fdef1d601  gcc/domwalk.h
  e46a0678cd58056e1ad2bccc1f1767a9  gcc/double-int.c
  3014d385a35cb8c0f86f4c8d55ed9c7c  gcc/double-int.h
! d4311e3ad18d7105393218ab6f997d0f  gcc/dse.c
  27d2c31d370f7348c76c3e0d1e104abd  gcc/dumpfile.c
  a6ac033ab207e2db558b953e2b86f763  gcc/dumpfile.h
  5180a42afcab61545fa230784fe1a143  gcc/dwarf2asm.c
  a3b5fe42438f913189aa4613c0f0f2d9  gcc/dwarf2asm.h
! d7bb1605992bc0a4ff08f3b45b309fc9  gcc/dwarf2cfi.c
! 11e2094f276ad97a67c6d212cbd64fd4  gcc/dwarf2out.c
  0101e0a5ea82db816cd96a515204bf62  gcc/dwarf2out.h
  14418ad02a37c7f769973c7f8bf2d390  gcc/early-remat.c
  a3ebe63cea199a03023109bc8d558db4  gcc/edit-context.c
  0d19d40813a11f9fe3a1139fa5d44b52  gcc/edit-context.h
! 92b81fd78845ee1e782d60eb19aa4d2c  gcc/emit-rtl.c
  1547fc041ebc5c1ae718a3fb86379f48  gcc/emit-rtl.h
  025bf76a01355414d0a9a80594bd870d  gcc/errors.c
  cb73326ed478016ad34331dbdf8ca68a  gcc/errors.h
*************** de6560abcac90b6c2b6390150efde7a6  gcc/et
*** 4709,4719 ****
  2f38eda7544d27a9e5f993b3c73a7d1e  gcc/except.c
  47ff89ab5845c8bd353b51040c08dc2c  gcc/except.h
  f4f32d5d7df51a89d6ad7806abb093b8  gcc/exec-tool.in
! 766208a1d9661cbd7241f536dec0f908  gcc/explow.c
  fad9690ce289d164035f3edb225a2691  gcc/explow.h
! dbd6ce660975d7e37ea84d69683b3168  gcc/expmed.c
  343179acb2dc99a656f3b7df79d1523a  gcc/expmed.h
! b4116bfe1ab79cf241514fd5f72e426f  gcc/expr.c
  919ddcb1719614ffb43b72d9f32c9bc3  gcc/expr.h
  c4b60a613a78dc2f2c8ecd587d9ed598  gcc/fibonacci_heap.c
  a7a89c2476c5141b06d51d92b607e5bd  gcc/fibonacci_heap.h
--- 4715,4725 ----
  2f38eda7544d27a9e5f993b3c73a7d1e  gcc/except.c
  47ff89ab5845c8bd353b51040c08dc2c  gcc/except.h
  f4f32d5d7df51a89d6ad7806abb093b8  gcc/exec-tool.in
! 329ba4cc460f9c9b4b3fc072c0b16468  gcc/explow.c
  fad9690ce289d164035f3edb225a2691  gcc/explow.h
! af0570b7b1924f334136b9e15c7de746  gcc/expmed.c
  343179acb2dc99a656f3b7df79d1523a  gcc/expmed.h
! d25012b67058c80e72c1ff995872b712  gcc/expr.c
  919ddcb1719614ffb43b72d9f32c9bc3  gcc/expr.h
  c4b60a613a78dc2f2c8ecd587d9ed598  gcc/fibonacci_heap.c
  a7a89c2476c5141b06d51d92b607e5bd  gcc/fibonacci_heap.h
*************** a3d5d540b846b06a0ac04a444d49591e  gcc/fl
*** 4728,4736 ****
  c21cc83079a7c945decf177bc2f6fb77  gcc/flags.h
  5f39cb799fd3316c3c09575a766d9c5f  gcc/fold-const-call.c
  a35f203fc68fd7cc82e04c0bafb0de01  gcc/fold-const-call.h
! 4120f59aa5ccdba9b9448631b9e24516  gcc/fold-const.c
  3b871f8513fcc4a84fd9fb9d6596dccb  gcc/fold-const.h
! 4dcc87482d4e264a339ee368b3267c58  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
--- 4734,4742 ----
  c21cc83079a7c945decf177bc2f6fb77  gcc/flags.h
  5f39cb799fd3316c3c09575a766d9c5f  gcc/fold-const-call.c
  a35f203fc68fd7cc82e04c0bafb0de01  gcc/fold-const-call.h
! f8a139b317e886151869116005414fd6  gcc/fold-const.c
  3b871f8513fcc4a84fd9fb9d6596dccb  gcc/fold-const.h
! 455fa8273232732f140f17ec1854ba67  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
*************** a71efd3e199a80ee07c7f350cc8fcf91  gcc/fo
*** 4749,4760 ****
  1ee95f47d9685043c09a7b41933d263b  gcc/fortran/ChangeLog-2017
  9e0636f92243fb9b3480e27cefc96749  gcc/fortran/ChangeLog.ptr
  b09b9dd0a6487a5cc7c24c368ef23324  gcc/fortran/Make-lang.in
! 2bcae8bb25feda8a96cef68dd69efdb0  gcc/fortran/arith.c
  aa8d69581095289ab399d7918671b1e5  gcc/fortran/arith.h
! a4260188a9c28eee8dd122e4f7ca4b58  gcc/fortran/array.c
  d615344312412ebd7dc61d519ef3ec5e  gcc/fortran/bbt.c
! 98ddecf28326fc730db199ec90aa0170  gcc/fortran/check.c
! 3cd85b099dc60ad560d99686bb5c6a27  gcc/fortran/class.c
  20fb365ff3aae3dd5dd1bc5609bcb216  gcc/fortran/config-lang.in
  8ffccc64b1dc0ee747167a692d6a921b  gcc/fortran/constructor.c
  8b30afec649d4328c8c1286ffd99f281  gcc/fortran/constructor.h
--- 4755,4766 ----
  1ee95f47d9685043c09a7b41933d263b  gcc/fortran/ChangeLog-2017
  9e0636f92243fb9b3480e27cefc96749  gcc/fortran/ChangeLog.ptr
  b09b9dd0a6487a5cc7c24c368ef23324  gcc/fortran/Make-lang.in
! 0633313d71c81f104b1f6d572821cb29  gcc/fortran/arith.c
  aa8d69581095289ab399d7918671b1e5  gcc/fortran/arith.h
! 67a63bd2c430e4d83014247fba14f9a7  gcc/fortran/array.c
  d615344312412ebd7dc61d519ef3ec5e  gcc/fortran/bbt.c
! b09f8506d47e74e8d8181970751031f4  gcc/fortran/check.c
! 3dc0403baf147536d6796d2ab941ae91  gcc/fortran/class.c
  20fb365ff3aae3dd5dd1bc5609bcb216  gcc/fortran/config-lang.in
  8ffccc64b1dc0ee747167a692d6a921b  gcc/fortran/constructor.c
  8b30afec649d4328c8c1286ffd99f281  gcc/fortran/constructor.h
*************** bc309294f544921aa641807107fd57af  gcc/fo
*** 4763,4834 ****
  d4f427b9efe267b545337325c27a4893  gcc/fortran/cpp.h
  3b797ba3f4fb4a321c04306c01d48828  gcc/fortran/data.c
  d5b5f00f5c8a84a40bbba39841db18cf  gcc/fortran/data.h
! 7afb32842248a61223b72f92b763b6dd  gcc/fortran/decl.c
  21a18b695c25d865ae6a64bf71e6f5fe  gcc/fortran/dependency.c
  05ec93c9bdaabcca73284894c616ba09  gcc/fortran/dependency.h
  e3dee91ab219979c305ba36b745488d0  gcc/fortran/dump-parse-tree.c
  d0348f441ed81aa75649d1f553e01b0a  gcc/fortran/error.c
! d95b0312688b36b5a16823487d56266e  gcc/fortran/expr.c
  33a998bb76f277bd3a0787f05532a487  gcc/fortran/f95-lang.c
! c2677368d552c77df70683c89cf4b830  gcc/fortran/frontend-passes.c
  28798906693f1520c4d4379c9fc6782b  gcc/fortran/gfc-diagnostic.def
  5de5695bff65d5964be1401432f63785  gcc/fortran/gfc-internals.texi
! 77ae736e3646437c35b822cf4f92837c  gcc/fortran/gfortran.h
! c05402e69a0c428d27086dbccab7e485  gcc/fortran/gfortran.info
  6c3a3b5a0d26926cd20ec51d26f61b85  gcc/fortran/gfortran.texi
  1e357492be9d4ed58ca379e6fe1cab80  gcc/fortran/gfortranspec.c
! 8ac0a08fd75c7970acb8f69301cbd874  gcc/fortran/interface.c
  8e562f5a268a16da954f23a7cee79680  gcc/fortran/intrinsic.c
  6a6a8cf6a58da021aa3f6d50121e5dce  gcc/fortran/intrinsic.h
! 3972b5e867799c7ba3b9d3d68a381b64  gcc/fortran/intrinsic.texi
! 1e7074d5c2db29b0218f86ca351119b9  gcc/fortran/invoke.texi
  f2ce470fb4dde74e682cfc5dd3a7b928  gcc/fortran/io.c
  ac973a8ce27833cbfd1a3303f29fc342  gcc/fortran/ioparm.def
! ba0904334200ab6288538051dd45f10a  gcc/fortran/iresolve.c
  23f4daf3c2cba1374556fee61f403e11  gcc/fortran/iso-c-binding.def
  6b2d8be92136037049db739735220da1  gcc/fortran/iso-fortran-env.def
  b7f1acea296ac135f718fdf3ad9a9f88  gcc/fortran/lang-specs.h
! 2bab1ea90ced392079eed5ff0a1e3803  gcc/fortran/lang.opt
  985ea603e7ad50000d307d5ff4105658  gcc/fortran/libgfortran.h
! f7aa1a2beb7d8dfea73ec0ce0040c1bd  gcc/fortran/match.c
  a16faa9094c5d5858efc6ecb52acec74  gcc/fortran/match.h
  8689bb8258e5dbc3a0cc25f65c5a8085  gcc/fortran/matchexp.c
  510536be0c63050f8b7cd5808c699f5a  gcc/fortran/mathbuiltins.def
  622fcbcc760c0d714be13a3cd82ba88f  gcc/fortran/misc.c
  21cd121001ae628ca95a80979a0d184a  gcc/fortran/module.c
! 92044a843e26399583671705e6360b68  gcc/fortran/openmp.c
  37006b7cb2eb9504e8ff5c68cf871ca8  gcc/fortran/options.c
! 7f1d88be9c45510ab81deb30afb9ef6d  gcc/fortran/parse.c
  db6cbb81135a427023887b2bfea92dd3  gcc/fortran/parse.h
  20eac2be6f84aa05dfcf5dd5ae8a4a35  gcc/fortran/primary.c
! 851a652f84c335ee27e6d55e0fd04aa7  gcc/fortran/resolve.c
  552b4507d3c688303c7eab6a39c6e0e8  gcc/fortran/scanner.c
  e4b095e58e67805737af0ad040a5d5ca  gcc/fortran/scanner.h
! 39697877553dce10a5208777a8ec3f1b  gcc/fortran/simplify.c
  ea668bc8c5f2d6f9fd47f633f5a28881  gcc/fortran/st.c
! 732180151824b8c7fbdfdeb3f2d904c3  gcc/fortran/symbol.c
! cf8f27fa40866d96bdbc979152f20597  gcc/fortran/target-memory.c
! eb6fc82bfe5fe7d340c04ca0cb0ad54e  gcc/fortran/target-memory.h
! b7e5797553e0c0d0b496bf92e4257fb7  gcc/fortran/trans-array.c
  f81eb76e9097dd73d4a96df8118dd066  gcc/fortran/trans-array.h
  517ba40f58618eb2c3b62ab5c6831d36  gcc/fortran/trans-common.c
  db451afc134c956148dc69030b5db653  gcc/fortran/trans-const.c
  ceefba4f9055aa156f0f42c030e08208  gcc/fortran/trans-const.h
! 1732779872e3d2e16a855ed5b6ab2d9f  gcc/fortran/trans-decl.c
! fba75f3ddef2dd4199c0eb849e9b84d0  gcc/fortran/trans-expr.c
! d6904e09be8507496665dd5a53d3ed53  gcc/fortran/trans-intrinsic.c
! 93cb594dcc588a98371f709ddad27bd3  gcc/fortran/trans-io.c
! f22fb20c906cd06e23948197114ade2d  gcc/fortran/trans-openmp.c
! a679353d85b48079d708d0eb09c8303c  gcc/fortran/trans-stmt.c
  d19cc5b6923723784e9b631f618ee61f  gcc/fortran/trans-stmt.h
! 2bcf935ca16935748cad6904027aabf9  gcc/fortran/trans-types.c
! 7e8ab5c526d85a6852efb786e598ddfb  gcc/fortran/trans-types.h
  201672c09cefb3c2a054df09e3bf8e94  gcc/fortran/trans.c
! 3d1840965b498f2eacfa022aec6106b4  gcc/fortran/trans.h
  8d03eab72b0ce9c8fdf2489dc4f6e4bf  gcc/fortran/types.def
  7e3386bd2b915caa7677cda411c9d836  gcc/fp-test.c
  8f15f2e8c041de9bcdea98bca453682e  gcc/function-tests.c
! 94a47bbbeb5bc1d30f74f6a76a66e83e  gcc/function.c
  58fb1f54e423018cbc2a9456e83aaffa  gcc/function.h
  1aceb05c089c01e5c0c72c2a5b28da19  gcc/fwprop.c
  8e19055be3c6435d916a651f6c59ef38  gcc/gcc-ar.c
--- 4769,4840 ----
  d4f427b9efe267b545337325c27a4893  gcc/fortran/cpp.h
  3b797ba3f4fb4a321c04306c01d48828  gcc/fortran/data.c
  d5b5f00f5c8a84a40bbba39841db18cf  gcc/fortran/data.h
! 78cc3b2a45eb2bd6766c6422732a6c9e  gcc/fortran/decl.c
  21a18b695c25d865ae6a64bf71e6f5fe  gcc/fortran/dependency.c
  05ec93c9bdaabcca73284894c616ba09  gcc/fortran/dependency.h
  e3dee91ab219979c305ba36b745488d0  gcc/fortran/dump-parse-tree.c
  d0348f441ed81aa75649d1f553e01b0a  gcc/fortran/error.c
! 02c87f9a8f1ef0c57efb4b5d2d8683d8  gcc/fortran/expr.c
  33a998bb76f277bd3a0787f05532a487  gcc/fortran/f95-lang.c
! e6900c185ec770e9b8b1a77765fa5ba7  gcc/fortran/frontend-passes.c
  28798906693f1520c4d4379c9fc6782b  gcc/fortran/gfc-diagnostic.def
  5de5695bff65d5964be1401432f63785  gcc/fortran/gfc-internals.texi
! a3986d0bc1830958a4412ada1c9a8e0b  gcc/fortran/gfortran.h
! 91cee62d96d2c7cd25574fe1a2d25236  gcc/fortran/gfortran.info
  6c3a3b5a0d26926cd20ec51d26f61b85  gcc/fortran/gfortran.texi
  1e357492be9d4ed58ca379e6fe1cab80  gcc/fortran/gfortranspec.c
! 8c5b9b60e42b24f4e5fb2a9e476c61ec  gcc/fortran/interface.c
  8e562f5a268a16da954f23a7cee79680  gcc/fortran/intrinsic.c
  6a6a8cf6a58da021aa3f6d50121e5dce  gcc/fortran/intrinsic.h
! add5cfdd8a3f62d960750df336096235  gcc/fortran/intrinsic.texi
! 012eb5842d592b4ba357af324b6e331d  gcc/fortran/invoke.texi
  f2ce470fb4dde74e682cfc5dd3a7b928  gcc/fortran/io.c
  ac973a8ce27833cbfd1a3303f29fc342  gcc/fortran/ioparm.def
! b4b34e729a72dbe1309ed2a81f2848f4  gcc/fortran/iresolve.c
  23f4daf3c2cba1374556fee61f403e11  gcc/fortran/iso-c-binding.def
  6b2d8be92136037049db739735220da1  gcc/fortran/iso-fortran-env.def
  b7f1acea296ac135f718fdf3ad9a9f88  gcc/fortran/lang-specs.h
! 808f025fe93c1bcd5e0cc084f16af617  gcc/fortran/lang.opt
  985ea603e7ad50000d307d5ff4105658  gcc/fortran/libgfortran.h
! b838ec9bed8d9a401d615c5953dce079  gcc/fortran/match.c
  a16faa9094c5d5858efc6ecb52acec74  gcc/fortran/match.h
  8689bb8258e5dbc3a0cc25f65c5a8085  gcc/fortran/matchexp.c
  510536be0c63050f8b7cd5808c699f5a  gcc/fortran/mathbuiltins.def
  622fcbcc760c0d714be13a3cd82ba88f  gcc/fortran/misc.c
  21cd121001ae628ca95a80979a0d184a  gcc/fortran/module.c
! 7cdc6b533cf62458f73139c12ddea0bb  gcc/fortran/openmp.c
  37006b7cb2eb9504e8ff5c68cf871ca8  gcc/fortran/options.c
! 756a2654242612b924a8709d74559a11  gcc/fortran/parse.c
  db6cbb81135a427023887b2bfea92dd3  gcc/fortran/parse.h
  20eac2be6f84aa05dfcf5dd5ae8a4a35  gcc/fortran/primary.c
! 188e7e26437816322013074861d7edd1  gcc/fortran/resolve.c
  552b4507d3c688303c7eab6a39c6e0e8  gcc/fortran/scanner.c
  e4b095e58e67805737af0ad040a5d5ca  gcc/fortran/scanner.h
! bcce5974c4e0ab501b5a1923de67e9cc  gcc/fortran/simplify.c
  ea668bc8c5f2d6f9fd47f633f5a28881  gcc/fortran/st.c
! d37993d4b51328c14f5690c5a3a14ba8  gcc/fortran/symbol.c
! 309d2077c6cafaabf240f77f4babd289  gcc/fortran/target-memory.c
! db923dd3edf7aafdb13c3fd20ab138e3  gcc/fortran/target-memory.h
! ad4d51716959b20166f49586dc384b55  gcc/fortran/trans-array.c
  f81eb76e9097dd73d4a96df8118dd066  gcc/fortran/trans-array.h
  517ba40f58618eb2c3b62ab5c6831d36  gcc/fortran/trans-common.c
  db451afc134c956148dc69030b5db653  gcc/fortran/trans-const.c
  ceefba4f9055aa156f0f42c030e08208  gcc/fortran/trans-const.h
! 7406e03022c6c859b1aaad35b965dd17  gcc/fortran/trans-decl.c
! 025a9d422dfe014a8ab35029aba59ce6  gcc/fortran/trans-expr.c
! 7dbef958dfafad45b6fbfd0fa02231fc  gcc/fortran/trans-intrinsic.c
! 2c6a778d9388c712b72868088e4fbb94  gcc/fortran/trans-io.c
! 24745fbd1437722ba0ceaa15a558881a  gcc/fortran/trans-openmp.c
! 9d2876678569b453679d603b6c4ee9b1  gcc/fortran/trans-stmt.c
  d19cc5b6923723784e9b631f618ee61f  gcc/fortran/trans-stmt.h
! 787abd7a2449cba0d4c68ba2bfbbdc96  gcc/fortran/trans-types.c
! 28f0964936e6f54203672ad65d25b955  gcc/fortran/trans-types.h
  201672c09cefb3c2a054df09e3bf8e94  gcc/fortran/trans.c
! 18d678771f6a660a179c5e759b9ec118  gcc/fortran/trans.h
  8d03eab72b0ce9c8fdf2489dc4f6e4bf  gcc/fortran/types.def
  7e3386bd2b915caa7677cda411c9d836  gcc/fp-test.c
  8f15f2e8c041de9bcdea98bca453682e  gcc/function-tests.c
! b91b3e13d59b6a533e42d2c9888305b2  gcc/function.c
  58fb1f54e423018cbc2a9456e83aaffa  gcc/function.h
  1aceb05c089c01e5c0c72c2a5b28da19  gcc/fwprop.c
  8e19055be3c6435d916a651f6c59ef38  gcc/gcc-ar.c
*************** af843170035d689d110c04da707cf8aa  gcc/gc
*** 4845,4854 ****
  684f64d8b5a5676b5c1bfc339a108788  gcc/gcov-io.h
  0c88bd339d2e52b298a33052248884b2  gcc/gcov-iov.c
  e811693e591ca37f156560117f6121a1  gcc/gcov-tool.c
! 510e6c5c806741b5208a2b939b66ee0a  gcc/gcov.c
  71a73b0546631aa618b3c00677d57650  gcc/gcse-common.c
  e6bc6d5304282a4cf05a626941fed245  gcc/gcse-common.h
! 057b46fa560f8a04a8924b272628ba27  gcc/gcse.c
  4a3b79b37639c436dfccdbfca76e1476  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
  99bcf12968c4344883d815f1b65517ef  gcc/gdbhooks.py
--- 4851,4860 ----
  684f64d8b5a5676b5c1bfc339a108788  gcc/gcov-io.h
  0c88bd339d2e52b298a33052248884b2  gcc/gcov-iov.c
  e811693e591ca37f156560117f6121a1  gcc/gcov-tool.c
! 1efa43f5b42e304a17e8cc9020261bd6  gcc/gcov.c
  71a73b0546631aa618b3c00677d57650  gcc/gcse-common.c
  e6bc6d5304282a4cf05a626941fed245  gcc/gcse-common.h
! a42356b36e98a9e2b8326e28e3f3e52f  gcc/gcse.c
  4a3b79b37639c436dfccdbfca76e1476  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
  99bcf12968c4344883d815f1b65517ef  gcc/gdbhooks.py
*************** ca498ebfbf5575a37f9642593487f6bf  gcc/ge
*** 4872,4878 ****
  b01b6419766d41c25d38794d4f32dfb7  gcc/genextract.c
  92f953de889d59c02d7c25c238be540e  gcc/genflags.c
  7b30ae499731e8256998caf0912209a9  gcc/gengenrtl.c
! 82d6042efa3c8e22f1386c3b04f1f1b3  gcc/gengtype-lex.c
  3d4c619fadb5870852dbc187182c474c  gcc/gengtype-lex.l
  d6a29975bf7d91bd496e075f5e470e75  gcc/gengtype-parse.c
  64e6e992a250fb71e455de19cd155c53  gcc/gengtype-state.c
--- 4878,4884 ----
  b01b6419766d41c25d38794d4f32dfb7  gcc/genextract.c
  92f953de889d59c02d7c25c238be540e  gcc/genflags.c
  7b30ae499731e8256998caf0912209a9  gcc/gengenrtl.c
! ac62a4b763d0a7d3a3f8f7895784c104  gcc/gengtype-lex.c
  3d4c619fadb5870852dbc187182c474c  gcc/gengtype-lex.l
  d6a29975bf7d91bd496e075f5e470e75  gcc/gengtype-parse.c
  64e6e992a250fb71e455de19cd155c53  gcc/gengtype-state.c
*************** df9bf6e47826e29c4f3c01acf3afcb98  gcc/ge
*** 4895,4908 ****
  3c88215e14c083e4c5d4237418c17031  gcc/ggc-common.c
  4c614192cb18bbdaaacdd0aa977d8975  gcc/ggc-internal.h
  109284dad98a29c2f241c0cc3be8e160  gcc/ggc-none.c
! 5b5840ac61ae815fef0ca90fbba15b0e  gcc/ggc-page.c
  f539fa97e3352bb2713159d7cd57f6d9  gcc/ggc-tests.c
  e0cc73b3b635f520872a6c9d21588338  gcc/ggc.h
  9bfb81e5206c1ccc9f090f2f6be9d991  gcc/gimple-builder.c
  cdf7412c306a686af61815bb09b2f94c  gcc/gimple-builder.h
  e4c51cb35fd3db8dbf8b9d6b7e7f2b9d  gcc/gimple-expr.c
  8efde36a406c63492e1a2b9a0699ae2b  gcc/gimple-expr.h
! efa26943ca39db316b8af78f7eea1add  gcc/gimple-fold.c
  e6788267702b4eb503be8a95ff28a071  gcc/gimple-fold.h
  cbde4efda211952b48286a1b80a48175  gcc/gimple-iterator.c
  59063f384ac4735d4c342e7834b5080f  gcc/gimple-iterator.h
--- 4901,4914 ----
  3c88215e14c083e4c5d4237418c17031  gcc/ggc-common.c
  4c614192cb18bbdaaacdd0aa977d8975  gcc/ggc-internal.h
  109284dad98a29c2f241c0cc3be8e160  gcc/ggc-none.c
! 24af75090e941bf44837254299f7379b  gcc/ggc-page.c
  f539fa97e3352bb2713159d7cd57f6d9  gcc/ggc-tests.c
  e0cc73b3b635f520872a6c9d21588338  gcc/ggc.h
  9bfb81e5206c1ccc9f090f2f6be9d991  gcc/gimple-builder.c
  cdf7412c306a686af61815bb09b2f94c  gcc/gimple-builder.h
  e4c51cb35fd3db8dbf8b9d6b7e7f2b9d  gcc/gimple-expr.c
  8efde36a406c63492e1a2b9a0699ae2b  gcc/gimple-expr.h
! b801d048e317ade3e7343edeebaf47df  gcc/gimple-fold.c
  e6788267702b4eb503be8a95ff28a071  gcc/gimple-fold.h
  cbde4efda211952b48286a1b80a48175  gcc/gimple-iterator.c
  59063f384ac4735d4c342e7834b5080f  gcc/gimple-iterator.h
*************** d8fbec638f57c0e32ab16d9e67cd405b  gcc/gi
*** 4923,4933 ****
  c976ce223b0a332a655c824a3c3e7d9d  gcc/gimple-ssa-isolate-paths.c
  9db0b33d53d43c87b61d647656104c46  gcc/gimple-ssa-nonnull-compare.c
  f2472ffd84e5b86a567ef9c22b6632ff  gcc/gimple-ssa-split-paths.c
! 08c7a98cfd62a49090628f04fc846cfc  gcc/gimple-ssa-sprintf.c
! d0c5b3e9a3c4c4faed25d54fc0dc8b1b  gcc/gimple-ssa-store-merging.c
  83fe1e76b35a22ec081781d90aed3eb0  gcc/gimple-ssa-strength-reduction.c
  ca4f38a646ec11265518d84d6b545dab  gcc/gimple-ssa-warn-alloca.c
! 260f32c57c8d2fd4a2eae667f1331a65  gcc/gimple-ssa-warn-restrict.c
  33e880297fd86716c672015df29aee60  gcc/gimple-ssa-warn-restrict.h
  537dd4de148064ea689f70411462b123  gcc/gimple-ssa.h
  adb4cdab775bf6f318a329cf112733b3  gcc/gimple-streamer-in.c
--- 4929,4939 ----
  c976ce223b0a332a655c824a3c3e7d9d  gcc/gimple-ssa-isolate-paths.c
  9db0b33d53d43c87b61d647656104c46  gcc/gimple-ssa-nonnull-compare.c
  f2472ffd84e5b86a567ef9c22b6632ff  gcc/gimple-ssa-split-paths.c
! 62336f807e0e0ae41e5a81d26408f5a0  gcc/gimple-ssa-sprintf.c
! 85920b50ae655beb5179df371cb494a1  gcc/gimple-ssa-store-merging.c
  83fe1e76b35a22ec081781d90aed3eb0  gcc/gimple-ssa-strength-reduction.c
  ca4f38a646ec11265518d84d6b545dab  gcc/gimple-ssa-warn-alloca.c
! 4891499e247eedc445daa4e616146717  gcc/gimple-ssa-warn-restrict.c
  33e880297fd86716c672015df29aee60  gcc/gimple-ssa-warn-restrict.h
  537dd4de148064ea689f70411462b123  gcc/gimple-ssa.h
  adb4cdab775bf6f318a329cf112733b3  gcc/gimple-streamer-in.c
*************** eefeab2028f35136e03ee18d9d9a52c4  gcc/gi
*** 4940,4946 ****
  6d32488ef5b660d95c5d2b2854ab427d  gcc/gimple.h
  a3409b3a9f07d554a4e49de168d23381  gcc/gimplify-me.c
  eeab737071f7239590a9e9896cdc455c  gcc/gimplify-me.h
! a60d44edcea39f4beab0769b77033ba9  gcc/gimplify.c
  a9c1ef55b88bbc9e436f843a238a4e86  gcc/gimplify.h
  7265d2e58f2002e04e053312f11a735d  gcc/ginclude/float.h
  b584400b5dbd7c7b3f37550824c71361  gcc/ginclude/iso646.h
--- 4946,4952 ----
  6d32488ef5b660d95c5d2b2854ab427d  gcc/gimple.h
  a3409b3a9f07d554a4e49de168d23381  gcc/gimplify-me.c
  eeab737071f7239590a9e9896cdc455c  gcc/gimplify-me.h
! 444ae1eedfa43a533a1c100d8beb2a1c  gcc/gimplify.c
  a9c1ef55b88bbc9e436f843a238a4e86  gcc/gimplify.h
  7265d2e58f2002e04e053312f11a735d  gcc/ginclude/float.h
  b584400b5dbd7c7b3f37550824c71361  gcc/ginclude/iso646.h
*************** f85aa0745c3e9e0d32fa64753089b2f1  gcc/gi
*** 4957,4963 ****
  29c8cf010fb2ecbb7d1554bb5f52e0e1  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  51980eb50d09b511cfa8524ab5361e81  gcc/glimits.h
! d0fa01dd5f803f641580c48b1ca0ddcc  gcc/go/ChangeLog
  69470ddce8bb4e9d25ba9e5e9ed6d4a8  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  3985883511f27b692b1243c7f6b52dc2  gcc/go/config-lang.in
--- 4963,4969 ----
  29c8cf010fb2ecbb7d1554bb5f52e0e1  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  51980eb50d09b511cfa8524ab5361e81  gcc/glimits.h
! b9363f01c754119a1a23fff181c14ec0  gcc/go/ChangeLog
  69470ddce8bb4e9d25ba9e5e9ed6d4a8  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  3985883511f27b692b1243c7f6b52dc2  gcc/go/config-lang.in
*************** ee0e0b5991f9abe75f127323b94e16e3  gcc/gr
*** 5029,5035 ****
  3cc6eec261eb72566ededf9fd083a097  gcc/graphite-isl-ast-to-gimple.c
  271fe345ee1fd9fcaad3f7ad97ad60b8  gcc/graphite-optimize-isl.c
  b171596b4a17472b436376a2d650f411  gcc/graphite-poly.c
! c169d6a3c55c2645f6b402c547faaf9d  gcc/graphite-scop-detection.c
  135c03be2cbbe6e4e3a9740a69a591b9  gcc/graphite-sese-to-poly.c
  c82692a490fd707b9399965cef16498e  gcc/graphite.c
  1cdd94122574876dcbbe52aeb8c3a044  gcc/graphite.h
--- 5035,5041 ----
  3cc6eec261eb72566ededf9fd083a097  gcc/graphite-isl-ast-to-gimple.c
  271fe345ee1fd9fcaad3f7ad97ad60b8  gcc/graphite-optimize-isl.c
  b171596b4a17472b436376a2d650f411  gcc/graphite-poly.c
! 75aef099d102795754148720b4b6e328  gcc/graphite-scop-detection.c
  135c03be2cbbe6e4e3a9740a69a591b9  gcc/graphite-sese-to-poly.c
  c82692a490fd707b9399965cef16498e  gcc/graphite.c
  1cdd94122574876dcbbe52aeb8c3a044  gcc/graphite.h
*************** a0f5aa1d04c8f316654b2f865f9322ae  gcc/if
*** 5073,5084 ****
  b72d87256e9793f4d47a39119a05f84d  gcc/incpath.c
  aba818adc10872877c0338c3fb1ac173  gcc/incpath.h
  8c18efc3f17744b0fbd836215598d0bc  gcc/init-regs.c
! f18e487b8c7d2d33dbceb9f3363366d4  gcc/input.c
  04bbc03b5a88cc646d62baa9e14e229a  gcc/input.h
  988835d6024129010f6580aa5c3e58b8  gcc/insn-addr.h
  db96beaba15bfca80c0ae7546e42e1e0  gcc/insn-notes.def
  91c55ce3a2a4fd174698683409ff2c60  gcc/int-vector-builder.h
! 976490125760d4d56f97eb4ca3b87cce  gcc/internal-fn.c
  c426900e96f23c462ea7a1b0c08f736e  gcc/internal-fn.def
  6032695cd61ea774005116e71fd89337  gcc/internal-fn.h
  ccd1d030cc4ed26a30d07e0a2704cd30  gcc/intl.c
--- 5079,5090 ----
  b72d87256e9793f4d47a39119a05f84d  gcc/incpath.c
  aba818adc10872877c0338c3fb1ac173  gcc/incpath.h
  8c18efc3f17744b0fbd836215598d0bc  gcc/init-regs.c
! f4aadbd3811195f5bc2fa22659075799  gcc/input.c
  04bbc03b5a88cc646d62baa9e14e229a  gcc/input.h
  988835d6024129010f6580aa5c3e58b8  gcc/insn-addr.h
  db96beaba15bfca80c0ae7546e42e1e0  gcc/insn-notes.def
  91c55ce3a2a4fd174698683409ff2c60  gcc/int-vector-builder.h
! c276efe9cdcb1f9be8bc781f8eac10f0  gcc/internal-fn.c
  c426900e96f23c462ea7a1b0c08f736e  gcc/internal-fn.def
  6032695cd61ea774005116e71fd89337  gcc/internal-fn.h
  ccd1d030cc4ed26a30d07e0a2704cd30  gcc/intl.c
*************** e7fa3524a21ce210ce70d873ccf22a97  gcc/in
*** 5086,5094 ****
  7e829ae2ed1916867ab7430cad2f0796  gcc/ipa-chkp.c
  7f523ce336e249e14e7f7ea5a18570c1  gcc/ipa-chkp.h
  7e49c4f8182f1a45e8fbdcb6643d7ffc  gcc/ipa-comdats.c
! 3352cc9975d4b61034d6ecec91dcb650  gcc/ipa-cp.c
! 68604e333377458ad02598271a7b10f3  gcc/ipa-devirt.c
! e7184f5168bdb30dfa982fc98184be7a  gcc/ipa-fnsummary.c
  98840f956dd8a4d690458e1c33d988a5  gcc/ipa-fnsummary.h
  9608b3b6cf0ecf1eafa4893b289b109c  gcc/ipa-hsa.c
  cd96c560a07b757ba4b9919f10b7083d  gcc/ipa-icf-gimple.c
--- 5092,5100 ----
  7e829ae2ed1916867ab7430cad2f0796  gcc/ipa-chkp.c
  7f523ce336e249e14e7f7ea5a18570c1  gcc/ipa-chkp.h
  7e49c4f8182f1a45e8fbdcb6643d7ffc  gcc/ipa-comdats.c
! 5baa7c9b8a6ff4b74021016355ab0a62  gcc/ipa-cp.c
! e0c9d45e5d64225966b705a2ac09328a  gcc/ipa-devirt.c
! 38c8eb176af98a27957c95a7f086ca7d  gcc/ipa-fnsummary.c
  98840f956dd8a4d690458e1c33d988a5  gcc/ipa-fnsummary.h
  9608b3b6cf0ecf1eafa4893b289b109c  gcc/ipa-hsa.c
  cd96c560a07b757ba4b9919f10b7083d  gcc/ipa-icf-gimple.c
*************** e2a03612f39c52d707b2c1075b2d6274  gcc/ip
*** 5105,5113 ****
  392ee5a0d5c11824308f605d5574f008  gcc/ipa-predicate.c
  6d30cf0cfd4ac42f0c7e55390f21a224  gcc/ipa-predicate.h
  02f6a5bbd992c4e5fb4a8f9b471ff1c2  gcc/ipa-profile.c
! 1ae8492a1cc600724d46eeeda7d23cb5  gcc/ipa-prop.c
  c76998fde8e1e02e5630b7803369d25e  gcc/ipa-prop.h
! 2bece3d938ad12f476821ab98b81e075  gcc/ipa-pure-const.c
  ed3e44c3b30c7779482bbfea44bdcb50  gcc/ipa-ref.c
  3e0811c1242738a09d66c6f45ab63f3b  gcc/ipa-ref.h
  e4f1fc580cbcf4301b63943aaee54000  gcc/ipa-reference.c
--- 5111,5119 ----
  392ee5a0d5c11824308f605d5574f008  gcc/ipa-predicate.c
  6d30cf0cfd4ac42f0c7e55390f21a224  gcc/ipa-predicate.h
  02f6a5bbd992c4e5fb4a8f9b471ff1c2  gcc/ipa-profile.c
! d3fc12f817b5ab2bb48ed9fa522985dd  gcc/ipa-prop.c
  c76998fde8e1e02e5630b7803369d25e  gcc/ipa-prop.h
! cd79cd94ae28f44be1b6d83f2fbf123e  gcc/ipa-pure-const.c
  ed3e44c3b30c7779482bbfea44bdcb50  gcc/ipa-ref.c
  3e0811c1242738a09d66c6f45ab63f3b  gcc/ipa-ref.h
  e4f1fc580cbcf4301b63943aaee54000  gcc/ipa-reference.c
*************** ab1746426a64e774e8d6a14996bcf831  gcc/ir
*** 5124,5133 ****
  7f0b3d4f28c7f425f923ae90c05491cf  gcc/ira-emit.c
  7efef313f4693ce6537940ab2310c94f  gcc/ira-int.h
  f99b3f41d9f867a42836ea77d67dd901  gcc/ira-lives.c
! 887b2a08a3c2f1e8bdfafff3cfa9a647  gcc/ira.c
  a9d565530cf1514d9b397a45fc03cfac  gcc/ira.h
  a48f2108e340e17830e681a3f37bcc9c  gcc/is-a.h
! 18b60f79c62b61fa40c6a1a9372d086d  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  94ae6c9e47796f7471226d32f12068da  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
--- 5130,5139 ----
  7f0b3d4f28c7f425f923ae90c05491cf  gcc/ira-emit.c
  7efef313f4693ce6537940ab2310c94f  gcc/ira-int.h
  f99b3f41d9f867a42836ea77d67dd901  gcc/ira-lives.c
! ead983238069e0ca9c67d4081dfde792  gcc/ira.c
  a9d565530cf1514d9b397a45fc03cfac  gcc/ira.h
  a48f2108e340e17830e681a3f37bcc9c  gcc/is-a.h
! f2abbb320ed7a62cfef5c4c7df21ccb3  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  94ae6c9e47796f7471226d32f12068da  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
*************** fce9c00d6b7085e4e7bb1194f69b2beb  gcc/li
*** 5223,5236 ****
  f53331e9f2fcea566bc74708ebbcf3c8  gcc/loop-doloop.c
  71452a012bc0c2080ac4ace5a71fa156  gcc/loop-init.c
  f1de8935201298bf17886aaa387f8186  gcc/loop-invariant.c
! 594d05ef8872b15d948b0fa80f449450  gcc/loop-iv.c
! 996dfe136c99e00b3194b032df057387  gcc/loop-unroll.c
  d7a0d6904a47108de988a265c07d63bf  gcc/loop-unroll.h
  5f7fe7891f88cff51b004f833960b264  gcc/lower-subreg.c
  c8298ce3bbb3f4f5bb1332dd1de09cce  gcc/lower-subreg.h
  4658afd5f0ea375fb8263ea039459c23  gcc/lra-assigns.c
  6f6fd77e8d6a80dd8d1401aa4aedfdb8  gcc/lra-coalesce.c
! 4d56b66f1662240a7878f7ff7e343660  gcc/lra-constraints.c
  8c74af79fba26085a09ab8d0d22c84ad  gcc/lra-eliminations.c
  51b3b7475fd0363a1b023171975ecee3  gcc/lra-int.h
  b0ac46a1505ca96454945e8c5970d70d  gcc/lra-lives.c
--- 5229,5242 ----
  f53331e9f2fcea566bc74708ebbcf3c8  gcc/loop-doloop.c
  71452a012bc0c2080ac4ace5a71fa156  gcc/loop-init.c
  f1de8935201298bf17886aaa387f8186  gcc/loop-invariant.c
! 979f0951ba48b8171183265e099265ee  gcc/loop-iv.c
! 95551f20306b1a0e7c05bd34ee41d5ab  gcc/loop-unroll.c
  d7a0d6904a47108de988a265c07d63bf  gcc/loop-unroll.h
  5f7fe7891f88cff51b004f833960b264  gcc/lower-subreg.c
  c8298ce3bbb3f4f5bb1332dd1de09cce  gcc/lower-subreg.h
  4658afd5f0ea375fb8263ea039459c23  gcc/lra-assigns.c
  6f6fd77e8d6a80dd8d1401aa4aedfdb8  gcc/lra-coalesce.c
! 5c2b5c9873050b1a9109656cf6995281  gcc/lra-constraints.c
  8c74af79fba26085a09ab8d0d22c84ad  gcc/lra-eliminations.c
  51b3b7475fd0363a1b023171975ecee3  gcc/lra-int.h
  b0ac46a1505ca96454945e8c5970d70d  gcc/lra-lives.c
*************** de3e336a5ae91ba1187a67f96cb1c8d8  gcc/lt
*** 5245,5256 ****
  e3444504a7d7dd430026a817ab64e425  gcc/lto-section-in.c
  51590d4e0f13ef88377437a8f774c3b2  gcc/lto-section-names.h
  e86ce5e5d57f90d296240495fab89e22  gcc/lto-section-out.c
! 040e0076e9dd5a136396bc9812b70e42  gcc/lto-streamer-in.c
! de37ebc5c308749d9807125f1cab82ea  gcc/lto-streamer-out.c
  c5ada85e0bfb88cbdd6343e3685fdf4f  gcc/lto-streamer.c
! a86fab7327d4612bd570f0f2ac4b0684  gcc/lto-streamer.h
! 79a6e7fc412fba9ef91b5a97c6517cdf  gcc/lto-wrapper.c
! b2c64e0b7e72e19cc4b511c57a13afe9  gcc/lto/ChangeLog
  c100ca118b97aa3676e0ae80be4287fe  gcc/lto/Make-lang.in
  2fcf46751e702c8806c469fdd3584f2c  gcc/lto/common.c
  a0f65246494606de47d9399031438ab2  gcc/lto/common.h
--- 5251,5262 ----
  e3444504a7d7dd430026a817ab64e425  gcc/lto-section-in.c
  51590d4e0f13ef88377437a8f774c3b2  gcc/lto-section-names.h
  e86ce5e5d57f90d296240495fab89e22  gcc/lto-section-out.c
! c4054a207bfbccb59723f13558442d97  gcc/lto-streamer-in.c
! 3efcbeae4ec8654f91d5aba15e5409f6  gcc/lto-streamer-out.c
  c5ada85e0bfb88cbdd6343e3685fdf4f  gcc/lto-streamer.c
! 678922399688257074a113f07297615b  gcc/lto-streamer.h
! 2abda7b2fb67033bbd0200ab86f6ae6b  gcc/lto-wrapper.c
! 889ecd71fe5b1f52c26579b7e1ef1596  gcc/lto/ChangeLog
  c100ca118b97aa3676e0ae80be4287fe  gcc/lto/Make-lang.in
  2fcf46751e702c8806c469fdd3584f2c  gcc/lto/common.c
  a0f65246494606de47d9399031438ab2  gcc/lto/common.h
*************** f1ccf9f08c43ecc0fe76fb502a1a2615  gcc/lt
*** 5259,5265 ****
  5456839d016211e9dbf3cede58f87a81  gcc/lto/lang.opt
  be03e1dd9392839315e0c578a8aa4496  gcc/lto/lto-lang.c
  e706590c2974472759c9d179f4448d6d  gcc/lto/lto-object.c
! db809f423fbad050d6f30ddcb160394f  gcc/lto/lto-partition.c
  77cbebb668a50387e2410ed330e671c5  gcc/lto/lto-partition.h
  148377487a55acaf672fd90af9a3cd53  gcc/lto/lto-symtab.c
  55924d14fc01a82880c00ffb878443ca  gcc/lto/lto-symtab.h
--- 5265,5271 ----
  5456839d016211e9dbf3cede58f87a81  gcc/lto/lang.opt
  be03e1dd9392839315e0c578a8aa4496  gcc/lto/lto-lang.c
  e706590c2974472759c9d179f4448d6d  gcc/lto/lto-object.c
! 6c7ca85c0cf12b44d34ee7b5b7edd602  gcc/lto/lto-partition.c
  77cbebb668a50387e2410ed330e671c5  gcc/lto/lto-partition.h
  148377487a55acaf672fd90af9a3cd53  gcc/lto/lto-symtab.c
  55924d14fc01a82880c00ffb878443ca  gcc/lto/lto-symtab.h
*************** cc4aef5b0462b090503a068fdd92e25b  gcc/lt
*** 5269,5275 ****
  de5fcb6d56fc59c226e5c30242f86e7f  gcc/machmode.def
  425619ccbc843f2a48dc8b559fcf7cab  gcc/machmode.h
  acf0ce479337b4f1e009a9d329581511  gcc/main.c
! 3ebabbb395a46e422f854e155383efbd  gcc/match.pd
  0c1a6785da8f95da222414a0e2caf187  gcc/mcf.c
  456aa4d0ab10d4a066ec39f7dde4bd0b  gcc/mem-stats-traits.h
  09762f57bfd2d7653084bacf22695c8d  gcc/mem-stats.h
--- 5275,5281 ----
  de5fcb6d56fc59c226e5c30242f86e7f  gcc/machmode.def
  425619ccbc843f2a48dc8b559fcf7cab  gcc/machmode.h
  acf0ce479337b4f1e009a9d329581511  gcc/main.c
! 5d630f3414360a135d8c058ae7dffd5f  gcc/match.pd
  0c1a6785da8f95da222414a0e2caf187  gcc/mcf.c
  456aa4d0ab10d4a066ec39f7dde4bd0b  gcc/mem-stats-traits.h
  09762f57bfd2d7653084bacf22695c8d  gcc/mem-stats.h
*************** acf0ce479337b4f1e009a9d329581511  gcc/ma
*** 5279,5292 ****
  7c3b33908cab20d9621bab8a1c3d35b0  gcc/mkconfig.sh
  ee39e45872ee082b56e91223b89b8df8  gcc/mode-classes.def
  fcc116f5ff9f3d1a3294a3c82a165f6e  gcc/mode-switching.c
! a4bfa8b17c0f795c1cf22b01a9480924  gcc/modulo-sched.c
! 44b936defcd6ba38fd4bf79ddb2c8d76  gcc/multiple_target.c
! cc1c8960699076893351d9bbb42bef5f  gcc/objc/ChangeLog
  35e45bc127ee449a9796f843be9c5f7b  gcc/objc/Make-lang.in
! 9d4a1e66a211fddc1a81b04d8a787ceb  gcc/objc/config-lang.in
  63f143bcb1007a2074d0256cac38800f  gcc/objc/lang-specs.h
! 7dbaa931cf40fe184bb41cf5762bdf8e  gcc/objc/objc-act.c
! 5902618f49981dbdded08672deb40f3a  gcc/objc/objc-act.h
  340b2d017a7f9d76238fa6b01fc6f477  gcc/objc/objc-encoding.c
  8b530eec962e5197a50cffbf61f0a691  gcc/objc/objc-encoding.h
  1a5cfc3f9653866828ea5cc9e76bd5b0  gcc/objc/objc-gnu-runtime-abi-01.c
--- 5285,5298 ----
  7c3b33908cab20d9621bab8a1c3d35b0  gcc/mkconfig.sh
  ee39e45872ee082b56e91223b89b8df8  gcc/mode-classes.def
  fcc116f5ff9f3d1a3294a3c82a165f6e  gcc/mode-switching.c
! 350b38960ead90af06f6befef490840a  gcc/modulo-sched.c
! 1d6132cb799c55189c5174dcafc74a7e  gcc/multiple_target.c
! fba7da700ff13fc9d72ce0d0f091abb5  gcc/objc/ChangeLog
  35e45bc127ee449a9796f843be9c5f7b  gcc/objc/Make-lang.in
! e202532d41fa49871e2acada39301c9d  gcc/objc/config-lang.in
  63f143bcb1007a2074d0256cac38800f  gcc/objc/lang-specs.h
! 47bbee4b9282844175a06d3747815bc6  gcc/objc/objc-act.c
! ca1315d01ecc8183eae873c45bf88068  gcc/objc/objc-act.h
  340b2d017a7f9d76238fa6b01fc6f477  gcc/objc/objc-encoding.c
  8b530eec962e5197a50cffbf61f0a691  gcc/objc/objc-encoding.h
  1a5cfc3f9653866828ea5cc9e76bd5b0  gcc/objc/objc-gnu-runtime-abi-01.c
*************** fc6f6e92841d9985d9bb7c3ce823f02e  gcc/ob
*** 5300,5308 ****
  3e557d003008fa294daa574c357160de  gcc/objc/objc-runtime-shared-support.c
  afc5ae9ef4254422edd7ffcfe7a26082  gcc/objc/objc-runtime-shared-support.h
  28429bd18002a297a27bcf03272c9840  gcc/objc/objc-tree.def
! a7129916a75ad4dff44395788006d905  gcc/objcp/ChangeLog
  65f07f31679d06fe762d7467b59b187b  gcc/objcp/Make-lang.in
! 3f99dfd7cececb63c5e5a737e4666c44  gcc/objcp/config-lang.in
  6602972a151675c8ad48c315b019646b  gcc/objcp/lang-specs.h
  15ef21b7b185a24d6a73e698cd2e7bd1  gcc/objcp/objcp-decl.c
  39d36c314f11b3244daab01d5b2398c5  gcc/objcp/objcp-decl.h
--- 5306,5314 ----
  3e557d003008fa294daa574c357160de  gcc/objc/objc-runtime-shared-support.c
  afc5ae9ef4254422edd7ffcfe7a26082  gcc/objc/objc-runtime-shared-support.h
  28429bd18002a297a27bcf03272c9840  gcc/objc/objc-tree.def
! a813f167b3d89bbcc40572e9cc81490e  gcc/objcp/ChangeLog
  65f07f31679d06fe762d7467b59b187b  gcc/objcp/Make-lang.in
! c61fc5781b34a165ff929b0a5b59883e  gcc/objcp/config-lang.in
  6602972a151675c8ad48c315b019646b  gcc/objcp/lang-specs.h
  15ef21b7b185a24d6a73e698cd2e7bd1  gcc/objcp/objcp-decl.c
  39d36c314f11b3244daab01d5b2398c5  gcc/objcp/objcp-decl.h
*************** faabc3808f86fc151774a3e8af083a10  gcc/om
*** 5314,5324 ****
  c4d1e61b2f77ded40154ce164f5c3d76  gcc/omp-general.h
  a1e554aec189439ebffbec0d24b1d3ef  gcc/omp-grid.c
  a5a2fc0324364bf0a63e19a0d1e1ead2  gcc/omp-grid.h
! 5c0c62b9af15a8e7d14148f12f68e88d  gcc/omp-low.c
  3cf200229ea30af09f6e72b183998f96  gcc/omp-low.h
  a4f6b56a23c5dd4373a0cf327c2b64b6  gcc/omp-offload.c
  6c96501b610155a6b54ac03b9f066fdd  gcc/omp-offload.h
! c5963d654edaa79a06edc609162ac96a  gcc/omp-simd-clone.c
  402d090e0c04fcf94d2a4933c7e86443  gcc/omp-simd-clone.h
  5d58b35b91749d460b1aa2ab50aeb899  gcc/opt-functions.awk
  7ccc756c6d6cf3084ffc6702de74bee0  gcc/opt-gather.awk
--- 5320,5330 ----
  c4d1e61b2f77ded40154ce164f5c3d76  gcc/omp-general.h
  a1e554aec189439ebffbec0d24b1d3ef  gcc/omp-grid.c
  a5a2fc0324364bf0a63e19a0d1e1ead2  gcc/omp-grid.h
! 16ec14de6842dbc6904a3d5746213dc6  gcc/omp-low.c
  3cf200229ea30af09f6e72b183998f96  gcc/omp-low.h
  a4f6b56a23c5dd4373a0cf327c2b64b6  gcc/omp-offload.c
  6c96501b610155a6b54ac03b9f066fdd  gcc/omp-offload.h
! 59e8d28771e27aeba58a98e0f5acfb4c  gcc/omp-simd-clone.c
  402d090e0c04fcf94d2a4933c7e86443  gcc/omp-simd-clone.h
  5d58b35b91749d460b1aa2ab50aeb899  gcc/opt-functions.awk
  7ccc756c6d6cf3084ffc6702de74bee0  gcc/opt-gather.awk
*************** e9793114e7bf06a153982a7215b2fa4e  gcc/op
*** 5330,5360 ****
  6669b55a2cd078e949e41b684ece33c2  gcc/optabs-query.h
  c55ce782ec7a1ce8683de08d8321d06e  gcc/optabs-tree.c
  e4c9576e05a2a68e556aab1a537e3806  gcc/optabs-tree.h
! 5ac438f7cb5b788c482347ac3f3cb2da  gcc/optabs.c
  d05ea873de00ee1f0a941b26381b1297  gcc/optabs.def
  e2787dba22a13e294c76baa24b9c20dd  gcc/optabs.h
  a3e0f5f8aaa108bbb1dd37afa9125c6d  gcc/optc-gen.awk
  51e1860191418b86842c5ce5052126d1  gcc/optc-save-gen.awk
  c119e34daa9ed1b4f4ff7298da83f45b  gcc/opth-gen.awk
! 0e53a8c9fad83722888ac7fdc0af2183  gcc/opts-common.c
  f1cd5c18dbc48acc800192603e7f2ec2  gcc/opts-diagnostic.h
! 23628cbc354b07114b6b8b3bec44936a  gcc/opts-global.c
! f27a2c23d063015f111a70b89088877f  gcc/opts.c
  af1e0965e0a0ff84ae52b775504e5d96  gcc/opts.h
! a513d08e439b3b1d1508f787e52a557c  gcc/output.h
  071b2537e274f7db48460f504bb23634  gcc/params-enum.h
  39a1f9519ee6b037a25ab78d5d2ddcda  gcc/params-list.h
  259fb5636295fd6991544437ccfb8ece  gcc/params-options.h
  e28346c3e80a345ccd93b5a8fa59fdcf  gcc/params.c
! bce04177cb1b2eb4a55347fe8877f865  gcc/params.def
  ecc8347dea37e5c9153c4b4afc6ade77  gcc/params.h
  e0fc4322b29c4ade9e39c9f9ed68ba37  gcc/pass_manager.h
! b93538b45a3bd1f61002e3ad209328a3  gcc/passes.c
  eaa38d986ba4b10a32a67386d1c4656d  gcc/passes.def
  35b9710c0e7f0039335811ee7db12931  gcc/plugin.c
  a7891cb08b863d20f462a50157af100b  gcc/plugin.def
  ddc3805db022265eeec39c0a7c053023  gcc/plugin.h
! aff12e87d9464778809a3b46e26db4a3  gcc/po/ChangeLog
  266bd63edb966ab311a785e397e940e3  gcc/po/EXCLUDES
  0dc4f48e1351e898a189adda6e6ea5b7  gcc/po/be.gmo
  4cf692379b6a7bfec8b975e1aeb00bdb  gcc/po/be.po
--- 5336,5366 ----
  6669b55a2cd078e949e41b684ece33c2  gcc/optabs-query.h
  c55ce782ec7a1ce8683de08d8321d06e  gcc/optabs-tree.c
  e4c9576e05a2a68e556aab1a537e3806  gcc/optabs-tree.h
! 66420ac5fe54f6ab299929f826e755f9  gcc/optabs.c
  d05ea873de00ee1f0a941b26381b1297  gcc/optabs.def
  e2787dba22a13e294c76baa24b9c20dd  gcc/optabs.h
  a3e0f5f8aaa108bbb1dd37afa9125c6d  gcc/optc-gen.awk
  51e1860191418b86842c5ce5052126d1  gcc/optc-save-gen.awk
  c119e34daa9ed1b4f4ff7298da83f45b  gcc/opth-gen.awk
! b6a5832210d7992f7a669a10838ff912  gcc/opts-common.c
  f1cd5c18dbc48acc800192603e7f2ec2  gcc/opts-diagnostic.h
! b186fce39920ce1c4ae764a38c4784b2  gcc/opts-global.c
! f490c3fb1c50a0c941a8840a85dceabb  gcc/opts.c
  af1e0965e0a0ff84ae52b775504e5d96  gcc/opts.h
! 3791b7a6bf7f86d9211cce2d654b1b5c  gcc/output.h
  071b2537e274f7db48460f504bb23634  gcc/params-enum.h
  39a1f9519ee6b037a25ab78d5d2ddcda  gcc/params-list.h
  259fb5636295fd6991544437ccfb8ece  gcc/params-options.h
  e28346c3e80a345ccd93b5a8fa59fdcf  gcc/params.c
! 81daae8501be658ff4048de58f79c603  gcc/params.def
  ecc8347dea37e5c9153c4b4afc6ade77  gcc/params.h
  e0fc4322b29c4ade9e39c9f9ed68ba37  gcc/pass_manager.h
! 21b852acc74eb6083d236b51afd0c55f  gcc/passes.c
  eaa38d986ba4b10a32a67386d1c4656d  gcc/passes.def
  35b9710c0e7f0039335811ee7db12931  gcc/plugin.c
  a7891cb08b863d20f462a50157af100b  gcc/plugin.def
  ddc3805db022265eeec39c0a7c053023  gcc/plugin.h
! 0a03a776d89747db2b1a701a2636f5bc  gcc/po/ChangeLog
  266bd63edb966ab311a785e397e940e3  gcc/po/EXCLUDES
  0dc4f48e1351e898a189adda6e6ea5b7  gcc/po/be.gmo
  4cf692379b6a7bfec8b975e1aeb00bdb  gcc/po/be.po
*************** da82d3f44959a4b6c3db6e2bdd8970d8  gcc/po
*** 5399,5406 ****
  f0ed183fc5c3468fceba81e4f18e6066  gcc/poly-int-types.h
  580d3c0c17366e11266f68310046cbe2  gcc/poly-int.h
  900b7438df18a900152e2f6060285c39  gcc/postreload-gcse.c
! b80ac229bfa91ea56d105767788e51fb  gcc/postreload.c
! 6ec724d52f167b182dd487128f077999  gcc/predict.c
  c818d54a2aa1ed0ff7fb93285b171e78  gcc/predict.def
  d0af584e90882df1a6e78b4abd4f59b1  gcc/predict.h
  dc1824edf0b28ea95ecc1f084e02c589  gcc/prefix.c
--- 5405,5412 ----
  f0ed183fc5c3468fceba81e4f18e6066  gcc/poly-int-types.h
  580d3c0c17366e11266f68310046cbe2  gcc/poly-int.h
  900b7438df18a900152e2f6060285c39  gcc/postreload-gcse.c
! 48c647844d6447d3229097e930167759  gcc/postreload.c
! f60fd7a451be5176942a49e4af69b839  gcc/predict.c
  c818d54a2aa1ed0ff7fb93285b171e78  gcc/predict.def
  d0af584e90882df1a6e78b4abd4f59b1  gcc/predict.h
  dc1824edf0b28ea95ecc1f084e02c589  gcc/prefix.c
*************** e75f10d09d503895ec11beb3f92f6290  gcc/re
*** 5425,5431 ****
  c4aa9a13ee42f1eb90a5f6f5e5b93a69  gcc/real.h
  a78d12d3a543b348277164842f19f8d0  gcc/realmpfr.c
  71528fd9abd82151dd525f1bec7fc4ed  gcc/realmpfr.h
! 90c4076b39019ee6e37fabd2e190d036  gcc/recog.c
  8e0f463959ef781c3db86b7fd9ff9dcb  gcc/recog.h
  e76e517157e0e62f336b3a58aaed3e67  gcc/ree.c
  9c8ebe3c1dff17cce37518e7827ebe9b  gcc/reg-notes.def
--- 5431,5437 ----
  c4aa9a13ee42f1eb90a5f6f5e5b93a69  gcc/real.h
  a78d12d3a543b348277164842f19f8d0  gcc/realmpfr.c
  71528fd9abd82151dd525f1bec7fc4ed  gcc/realmpfr.h
! b54f43912e2fcd54450168faa2af9f31  gcc/recog.c
  8e0f463959ef781c3db86b7fd9ff9dcb  gcc/recog.h
  e76e517157e0e62f336b3a58aaed3e67  gcc/ree.c
  9c8ebe3c1dff17cce37518e7827ebe9b  gcc/reg-notes.def
*************** a191718c1267681e36c4a2963ad82a8a  gcc/re
*** 5442,5448 ****
  f31aa3e641466312a43761513e5fc05a  gcc/reload.h
  bc68c04532350167e2c21e732c5be4a7  gcc/reload1.c
  55bd3c3713f007122039c2b3256f4900  gcc/reorg.c
! 50d247ea6e7417dce9aeba6f99c903e4  gcc/resource.c
  6a5cecc7cf91a44666555a3080e9905f  gcc/resource.h
  6e255900b6beaf03c37e2f1df202e689  gcc/rtl-chkp.c
  c7cdece4d7dd199ec5faa811199c4422  gcc/rtl-chkp.h
--- 5448,5454 ----
  f31aa3e641466312a43761513e5fc05a  gcc/reload.h
  bc68c04532350167e2c21e732c5be4a7  gcc/reload1.c
  55bd3c3713f007122039c2b3256f4900  gcc/reorg.c
! b4e225d082fc691b1e097985716abe2a  gcc/resource.c
  6a5cecc7cf91a44666555a3080e9905f  gcc/resource.h
  6e255900b6beaf03c37e2f1df202e689  gcc/rtl-chkp.c
  c7cdece4d7dd199ec5faa811199c4422  gcc/rtl-chkp.h
*************** c7cdece4d7dd199ec5faa811199c4422  gcc/rt
*** 5450,5459 ****
  119cbe9ea65ecaf5bcfa3b3d96b87ec8  gcc/rtl-error.h
  df9d5c768b58d0b5efc362d2bd2de6df  gcc/rtl-iter.h
  681d93b19f2a0a0ab1917d9b3d76d8e6  gcc/rtl-tests.c
! 50bf08f78ca518f3cd93b3d8c03ad9cc  gcc/rtl.c
  85a88e38668f579e5486f97b80527cca  gcc/rtl.def
! 840e0b4e2efd040571f0e298ab0dcae3  gcc/rtl.h
! 29509db50cb77f10b5e8286ef135a495  gcc/rtlanal.c
  e5a0044d503b95956e5aaaa6c1458430  gcc/rtlhash.c
  c3c64677cacd32a881cff6a6fa3e7af3  gcc/rtlhash.h
  228e8f18a4ac8458ad4b2f80198cef6a  gcc/rtlhooks-def.h
--- 5456,5465 ----
  119cbe9ea65ecaf5bcfa3b3d96b87ec8  gcc/rtl-error.h
  df9d5c768b58d0b5efc362d2bd2de6df  gcc/rtl-iter.h
  681d93b19f2a0a0ab1917d9b3d76d8e6  gcc/rtl-tests.c
! 8eb3612dfb818bc6a3c5a0b894d16d2a  gcc/rtl.c
  85a88e38668f579e5486f97b80527cca  gcc/rtl.def
! 2a80c5a0ebe4bb1a93854d7bc4939cb3  gcc/rtl.h
! ddd1510fcb4ea9692d7a87bf3aa87484  gcc/rtlanal.c
  e5a0044d503b95956e5aaaa6c1458430  gcc/rtlhash.c
  c3c64677cacd32a881cff6a6fa3e7af3  gcc/rtlhash.h
  228e8f18a4ac8458ad4b2f80198cef6a  gcc/rtlhooks-def.h
*************** c77c3a3c36441362cbe2fb3b030cdf53  gcc/se
*** 5489,5495 ****
  a24cc2b2df035a5b1c0761a7b92c43db  gcc/shrink-wrap.c
  11cfe9516e14a93933c61823dc6202c7  gcc/shrink-wrap.h
  c6328327f9a84bf940ef73f8b27cff45  gcc/signop.h
! d3339c339f9af158401d2d969e28a48c  gcc/simplify-rtx.c
  cc044483cfd26a2ea67b8606a160de41  gcc/sparseset.c
  e72909468e44c4dcea74f0dafd02a899  gcc/sparseset.h
  ea490e9542a0b4161f740096538a6742  gcc/spellcheck-tree.c
--- 5495,5501 ----
  a24cc2b2df035a5b1c0761a7b92c43db  gcc/shrink-wrap.c
  11cfe9516e14a93933c61823dc6202c7  gcc/shrink-wrap.h
  c6328327f9a84bf940ef73f8b27cff45  gcc/signop.h
! 2163a5cc9e487ae37b05065ca15d1c07  gcc/simplify-rtx.c
  cc044483cfd26a2ea67b8606a160de41  gcc/sparseset.c
  e72909468e44c4dcea74f0dafd02a899  gcc/sparseset.h
  ea490e9542a0b4161f740096538a6742  gcc/spellcheck-tree.c
*************** c90803df9587aeb074b01235ac6774f2  gcc/st
*** 5516,5522 ****
  1a291d870b5080a3186aa7e93fb0f2d7  gcc/substring-locations.c
  3b61b5fb283dd13ef1a117f6f374b2f3  gcc/substring-locations.h
  32d525220375e660512fe10b0c322520  gcc/symbol-summary.h
! 56f012042eecefc448fa123c97e0f014  gcc/symtab.c
  721707584123181d137da368325233b4  gcc/sync-builtins.def
  afb6577e6d5a55183d04a9bc6548b8f2  gcc/system.h
  1f36a64d8dcab5629094e37694070cfc  gcc/target-def.h
--- 5522,5528 ----
  1a291d870b5080a3186aa7e93fb0f2d7  gcc/substring-locations.c
  3b61b5fb283dd13ef1a117f6f374b2f3  gcc/substring-locations.h
  32d525220375e660512fe10b0c322520  gcc/symbol-summary.h
! ee6be13719aef0255b92f6b43a040e00  gcc/symtab.c
  721707584123181d137da368325233b4  gcc/sync-builtins.def
  afb6577e6d5a55183d04a9bc6548b8f2  gcc/system.h
  1f36a64d8dcab5629094e37694070cfc  gcc/target-def.h
*************** b3e64547e95a1dd3c4adaef33cc7e53c  gcc/ta
*** 5529,5535 ****
  775b4e1193b7fef4fc3a57eb9c80a4f7  gcc/targhooks.c
  fe1fa4a32e1e589e64a4e99002d678d9  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! afcdd66f326bf85f974e21ea23bd8bf6  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 5535,5541 ----
  775b4e1193b7fef4fc3a57eb9c80a4f7  gcc/targhooks.c
  fe1fa4a32e1e589e64a4e99002d678d9  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 9d3757e9d2d7668b09890040ffc4c621  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** e1214c78ebce01448d71917e783e66f3  gcc/te
*** 8475,8480 ****
--- 8481,8487 ----
  ef95b2391ac4310fde10257ba4f7463b  gcc/testsuite/c-c++-common/builtin-shuffle-1.c
  3a349fcc5db93dcaf44a93c32735f04a  gcc/testsuite/c-c++-common/builtin_location.c
  2341b1258f7e71f5aeb2fc1ac6a17b27  gcc/testsuite/c-c++-common/builtins.c
+ a15893a996b14e9ab79c08a9d37157ee  gcc/testsuite/c-c++-common/cold-1.c
  fc20dcb635dd1e825303cc47593a9155  gcc/testsuite/c-c++-common/conflict-markers-1.c
  c2ffea9f8039ad1708c1c073f6b3b25a  gcc/testsuite/c-c++-common/conflict-markers-10.c
  c83e3d1d9dca930d44de5fee29a51bbb  gcc/testsuite/c-c++-common/conflict-markers-11.c
*************** c85025f0def783f70f9bb6a4ea9a23f3  gcc/te
*** 8507,8512 ****
--- 8514,8521 ----
  5e5bc603cb54f22e303862dd47211ded  gcc/testsuite/c-c++-common/cpp/pr63831-1.c
  a72a693524249dca84528ebc132082b5  gcc/testsuite/c-c++-common/cpp/pr63831-2.c
  fc6312863e2a09e397690651369f617d  gcc/testsuite/c-c++-common/cpp/pr65238-1.c
+ df43df705a8397d72a82fe6d91e8ec64  gcc/testsuite/c-c++-common/cpp/pr92296-1.c
+ dde08a560ecf3f1c0944037da04f2048  gcc/testsuite/c-c++-common/cpp/pr92296-2.c
  791d43cbbb9115404405c22be44e4ae7  gcc/testsuite/c-c++-common/cpp/ucnid-2011-1.c
  0f93514d0ad79c03edfd672fb354e619  gcc/testsuite/c-c++-common/cpp/va-opt-2.c
  d4400c02e16c9ce8399bebed26d20e37  gcc/testsuite/c-c++-common/cpp/va-opt-3.c
*************** f518663bb6d3fa214257a2306172d690  gcc/te
*** 8848,8853 ****
--- 8857,8868 ----
  5c98b968b8b8fa3dcda75ece1f760d12  gcc/testsuite/c-c++-common/gomp/pr84341.c
  fb9e5ede5d43a206c572fa77be49ff02  gcc/testsuite/c-c++-common/gomp/pr85696.c
  62a0e309912895235f385cc84af32654  gcc/testsuite/c-c++-common/gomp/pr86025.c
+ 0e989c3d25d634c553662814c966233e  gcc/testsuite/c-c++-common/gomp/pr88588.c
+ 61ca8b866c491c9064a5bbfddd90f421  gcc/testsuite/c-c++-common/gomp/pr90954.c
+ 819ef14711cd571111df09cc81f8d206  gcc/testsuite/c-c++-common/gomp/pr91401-1.c
+ b5b3167776d67985ba91daaee41243de  gcc/testsuite/c-c++-common/gomp/pr91401-2.c
+ bfdfa56ffe2ff48534494fc41ae0f4d1  gcc/testsuite/c-c++-common/gomp/pr93555-1.c
+ b31fd83ffcebdfef84e1d323888e9a76  gcc/testsuite/c-c++-common/gomp/pr93555-2.c
  5d522e2f1f7455bc45f6c1f230d5a5b0  gcc/testsuite/c-c++-common/gomp/priority-1.c
  1dc7bbbafb91e179ac43fa3959ab125f  gcc/testsuite/c-c++-common/gomp/reduction-1.c
  8af1ef16f27f56d5d687ed958b671d57  gcc/testsuite/c-c++-common/gomp/schedule-1.c
*************** d8239263162d96344888c161406c0381  gcc/te
*** 8926,8931 ****
--- 8941,8947 ----
  19c5c8c6c4a09bd9d296a28e8078a301  gcc/testsuite/c-c++-common/pr52177.c
  e9ab7e8194d7254751245044f83dc8be  gcc/testsuite/c-c++-common/pr52181.c
  9cecc063b60fd542510c334a50694aed  gcc/testsuite/c-c++-common/pr53037-5.c
+ 4908322fe1a077cb05a80ba1874fb60b  gcc/testsuite/c-c++-common/pr53633-2.c
  2fca24cd74390d29df3e15f43b52216b  gcc/testsuite/c-c++-common/pr53633.c
  562b5a3674683ddc3dcd8273868470ff  gcc/testsuite/c-c++-common/pr53874.c
  6b9b24f3111a851cf90729b67b060a3c  gcc/testsuite/c-c++-common/pr54486.c
*************** bd3f72430a07d0b5e231d78def646e60  gcc/te
*** 9028,9033 ****
--- 9044,9052 ----
  f3cef6e9a9aa2cd42daabd8901f27dcd  gcc/testsuite/c-c++-common/pr85156.c
  ecc72a9bb2a70f28d6c832a7f8f58ed5  gcc/testsuite/c-c++-common/pr85822.c
  163480c4288d9e1dda1b280af14b74b3  gcc/testsuite/c-c++-common/pr86093.c
+ 3631e7a853bf47afcc4f5db428d630ff  gcc/testsuite/c-c++-common/pr89933.c
+ 39e1e4487b61521edeb410a0c9d9958b  gcc/testsuite/c-c++-common/pr89946.c
+ 6b55a407d08d3d9c405be8cf45164944  gcc/testsuite/c-c++-common/pr90108.c
  b0ba836310044e7b419ef679f0b48d6f  gcc/testsuite/c-c++-common/raw-string-1.c
  554e7071d2525351de28445762633866  gcc/testsuite/c-c++-common/raw-string-10.c
  fc54e7227094f307fa566b3a8cd0ba9a  gcc/testsuite/c-c++-common/raw-string-11.c
*************** fc07508abc561415843db1779595ba31  gcc/te
*** 9445,9450 ****
--- 9464,9471 ----
  d57818e59897be634a5f9646a690ac2e  gcc/testsuite/c-c++-common/unroll-3.c
  f509b765bb71e26ecb02da59033037fd  gcc/testsuite/c-c++-common/unroll-4.c
  1abb6f03aeb9905751f402a81480ea52  gcc/testsuite/c-c++-common/unroll-5.c
+ bf6f291b43d91e68fc592dd457aefbef  gcc/testsuite/c-c++-common/unroll-6.c
+ 83b7f4e9838fd0371142d4f0554e9951  gcc/testsuite/c-c++-common/unroll-7.c
  3edfb8e43acf0371b1e3540d91872172  gcc/testsuite/c-c++-common/va-arg-va-list-type.c
  a2f9e4a5e93a4fc852e7a5b3b175f349  gcc/testsuite/c-c++-common/vector-1.c
  d1da790bdc62173381a0a8e7a3f3e2eb  gcc/testsuite/c-c++-common/vector-2.c
*************** e0c61fc1ff04506222ad9ce3d489202f  gcc/te
*** 9808,9813 ****
--- 9829,9835 ----
  46004f51a9fbd56fbbea9088e6a2d1af  gcc/testsuite/g++.dg/asan/pr85081.C
  58d155b02b38f916700022148c84d5f5  gcc/testsuite/g++.dg/asan/pr85774.C
  76052a66ecc75316257825ff6b1b32d5  gcc/testsuite/g++.dg/asan/pr88901.C
+ 97920da6fda518a6cd947eb7202b69e4  gcc/testsuite/g++.dg/asan/pr90570.C
  9c127ef1a489fa3066b519905bbcd4df  gcc/testsuite/g++.dg/asan/sanitizer_pthread_wrappers.h
  ec57ce9e20b59de0ebec29f657a688f0  gcc/testsuite/g++.dg/asan/sanitizer_test_config.h
  55a37a27a50226341bc745f47d1908c5  gcc/testsuite/g++.dg/asan/sanitizer_test_utils.h
*************** d2d4ea16490b45388c168c416c6640d5  gcc/te
*** 9825,9836 ****
  e20a12eb6455f420adb919299f6e8991  gcc/testsuite/g++.dg/asan/use-after-scope-types.h
  01499301a7233f3e3e0bac80890e7dea  gcc/testsuite/g++.dg/asm-qual-1.C
  0a7cdd480ff9677cd742fad1ef91da3a  gcc/testsuite/g++.dg/asm-qual-2.C
! 8ef2db95a1a60374ec61d3a016bf1c95  gcc/testsuite/g++.dg/asm-qual-3.C
  3cd7eb41bad4a2b8a88bf2906f0ddb7c  gcc/testsuite/g++.dg/bprob/bprob.exp
  6683eda46cb30a95dcb3ae310aa86684  gcc/testsuite/g++.dg/bprob/g++-bprob-1.C
  91292dc36de1287d9de59661dd0c8c78  gcc/testsuite/g++.dg/bprob/g++-bprob-2.C
  a3c9197457f42abb097a9b8dc03b0393  gcc/testsuite/g++.dg/cdce3.C
! b80fe63ebbdbc8044ea34bdb0d376eb1  gcc/testsuite/g++.dg/cet-notrack-1.C
  5d6eb1269c8738b70f3d15b9a148001f  gcc/testsuite/g++.dg/charset/asm1.c
  f9a431484c75dceb2b5776a2ec603670  gcc/testsuite/g++.dg/charset/asm2.c
  bd34927c7e8ef0637a91744aa30c8e22  gcc/testsuite/g++.dg/charset/asm3.c
--- 9847,9858 ----
  e20a12eb6455f420adb919299f6e8991  gcc/testsuite/g++.dg/asan/use-after-scope-types.h
  01499301a7233f3e3e0bac80890e7dea  gcc/testsuite/g++.dg/asm-qual-1.C
  0a7cdd480ff9677cd742fad1ef91da3a  gcc/testsuite/g++.dg/asm-qual-2.C
! f09dff4e126233e185c2284fca8e9cfa  gcc/testsuite/g++.dg/asm-qual-3.C
  3cd7eb41bad4a2b8a88bf2906f0ddb7c  gcc/testsuite/g++.dg/bprob/bprob.exp
  6683eda46cb30a95dcb3ae310aa86684  gcc/testsuite/g++.dg/bprob/g++-bprob-1.C
  91292dc36de1287d9de59661dd0c8c78  gcc/testsuite/g++.dg/bprob/g++-bprob-2.C
  a3c9197457f42abb097a9b8dc03b0393  gcc/testsuite/g++.dg/cdce3.C
! 43fea12c8e1efaaa4f6ab8056b357122  gcc/testsuite/g++.dg/cet-notrack-1.C
  5d6eb1269c8738b70f3d15b9a148001f  gcc/testsuite/g++.dg/charset/asm1.c
  f9a431484c75dceb2b5776a2ec603670  gcc/testsuite/g++.dg/charset/asm2.c
  bd34927c7e8ef0637a91744aa30c8e22  gcc/testsuite/g++.dg/charset/asm3.c
*************** e67744c794ffa3ff5cad89ff1d1cbd16  gcc/te
*** 10079,10084 ****
--- 10101,10107 ----
  22e77d6db2a565e80f4539983dc47671  gcc/testsuite/g++.dg/concepts/memfun.C
  5b07f491b98af9f7044dccfcde3a858b  gcc/testsuite/g++.dg/concepts/memfun2.C
  0e303596d767a3e47f9da11e89365a40  gcc/testsuite/g++.dg/concepts/memtmpl1.C
+ 8167dac3599949519b5c414584b01961  gcc/testsuite/g++.dg/concepts/no-bool1.C
  ef647397c9fe4c3fa5a88ed55e787cc2  gcc/testsuite/g++.dg/concepts/partial-concept-id1.C
  fe6ec6b3b5d4d4ef2fe4ee1a988f0880  gcc/testsuite/g++.dg/concepts/partial-concept-id2.C
  7b1941fe6794cf886a8cc1d0394ba431  gcc/testsuite/g++.dg/concepts/partial-spec.C
*************** ff12be74ca1ae28c77d541ad1dc53873  gcc/te
*** 10386,10392 ****
  6b919a388a7f6ff57c7976486c409fb7  gcc/testsuite/g++.dg/cpp0x/alignas16.C
  f1354435b9e53f5c5d923994edebb49f  gcc/testsuite/g++.dg/cpp0x/alignas2.C
  af0c02bf93d49e5385b61d3e59a21e28  gcc/testsuite/g++.dg/cpp0x/alignas3.C
! 931d9bc562ab99a0d8853329e5a2298b  gcc/testsuite/g++.dg/cpp0x/alignas4.C
  2490568ef637fae72e27c31a035040f2  gcc/testsuite/g++.dg/cpp0x/alignas5.C
  98d93af53a0530bbccdcc33479419fbd  gcc/testsuite/g++.dg/cpp0x/alignas6.C
  28d7e98b1fb09b72287dd79211925768  gcc/testsuite/g++.dg/cpp0x/alignas7.C
--- 10409,10415 ----
  6b919a388a7f6ff57c7976486c409fb7  gcc/testsuite/g++.dg/cpp0x/alignas16.C
  f1354435b9e53f5c5d923994edebb49f  gcc/testsuite/g++.dg/cpp0x/alignas2.C
  af0c02bf93d49e5385b61d3e59a21e28  gcc/testsuite/g++.dg/cpp0x/alignas3.C
! 4e770e3d245d014c238b07e798e03b36  gcc/testsuite/g++.dg/cpp0x/alignas4.C
  2490568ef637fae72e27c31a035040f2  gcc/testsuite/g++.dg/cpp0x/alignas5.C
  98d93af53a0530bbccdcc33479419fbd  gcc/testsuite/g++.dg/cpp0x/alignas6.C
  28d7e98b1fb09b72287dd79211925768  gcc/testsuite/g++.dg/cpp0x/alignas7.C
*************** a3fe89999694d5e28c05f50283b43674  gcc/te
*** 10555,10560 ****
--- 10578,10584 ----
  88d00e3c57ca7ad033af5159ca7736ff  gcc/testsuite/g++.dg/cpp0x/constexpr-array17.C
  8b3cdd4f7cd1165cdb6c78c54ac301a5  gcc/testsuite/g++.dg/cpp0x/constexpr-array18.C
  687c6e77d4af3cd918c0ff421773a66c  gcc/testsuite/g++.dg/cpp0x/constexpr-array2.C
+ 3ac9c1d9fb2c907fc817b194d0e9d585  gcc/testsuite/g++.dg/cpp0x/constexpr-array24.C
  8b7c8e7c1b64cfa0626f7f2311c9fef5  gcc/testsuite/g++.dg/cpp0x/constexpr-array3.C
  6451aa5bb5fa736dda3ebad1dc2e8336  gcc/testsuite/g++.dg/cpp0x/constexpr-array4.C
  1d46f32449f9e0292d662928246ec784  gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C
*************** dd4700728489bec2565506d830e467d8  gcc/te
*** 10769,10774 ****
--- 10793,10799 ----
  6750ddb6d120c8e7368eaae5150e78c1  gcc/testsuite/g++.dg/cpp0x/constexpr-static10.C
  7431d68cb7a29a352611ab8a7cdad67b  gcc/testsuite/g++.dg/cpp0x/constexpr-static11.C
  323e38ced3137a14df2f9f2f58e82249  gcc/testsuite/g++.dg/cpp0x/constexpr-static12.C
+ 411fb6dd9e470568da2b5ebae64434b1  gcc/testsuite/g++.dg/cpp0x/constexpr-static13.C
  797b8689368a7682042cd629a45f6125  gcc/testsuite/g++.dg/cpp0x/constexpr-static2.C
  c007c5c7f6d811c5864f3f9c4f7da9a4  gcc/testsuite/g++.dg/cpp0x/constexpr-static3.C
  c75a35a6482a003b532401a29c58bf6e  gcc/testsuite/g++.dg/cpp0x/constexpr-static4.C
*************** a5f546aaf002e31dc77b29dbac735473  gcc/te
*** 10859,10864 ****
--- 10884,10890 ----
  f1c16eae211724928eb3908ca78a9906  gcc/testsuite/g++.dg/cpp0x/decltype-incomplete1.C
  9bbdff7e4aee14dd984dd68004151da7  gcc/testsuite/g++.dg/cpp0x/decltype-mem-initializer1.C
  61ab3fbe660abdfcfb4275658c81e532  gcc/testsuite/g++.dg/cpp0x/decltype-refbug.C
+ d565f43de0d3d2b2d501eb8dd82bb1ca  gcc/testsuite/g++.dg/cpp0x/decltype-tid1.C
  346bf8f6597611bdb1098a12ad2eb4c7  gcc/testsuite/g++.dg/cpp0x/decltype1.C
  0e5a3836bf22c03696252480b80064b6  gcc/testsuite/g++.dg/cpp0x/decltype10.C
  dab751c0d217002893d6d2cce32516a6  gcc/testsuite/g++.dg/cpp0x/decltype11.C
*************** f05f6314bab056a03c548eb4c50f323a  gcc/te
*** 11023,11029 ****
  6c52dc0b8feff7c3403eed172bec2ebd  gcc/testsuite/g++.dg/cpp0x/enum21a.C
  52d5ff8d8835de9029291b2e0be36123  gcc/testsuite/g++.dg/cpp0x/enum21b.C
  7ff20adcaa2a7e7bc5390f2d01264d25  gcc/testsuite/g++.dg/cpp0x/enum22.C
! 1fce61041d5fe27ecb76803d5fe4e086  gcc/testsuite/g++.dg/cpp0x/enum23.C
  6e20f71280665d553eb0b07726a3453d  gcc/testsuite/g++.dg/cpp0x/enum24.C
  d69ddb30d1feb9e35bc7751f26929957  gcc/testsuite/g++.dg/cpp0x/enum25.C
  43b0beab61ef041fe4a52745f4a7aff8  gcc/testsuite/g++.dg/cpp0x/enum26.C
--- 11049,11055 ----
  6c52dc0b8feff7c3403eed172bec2ebd  gcc/testsuite/g++.dg/cpp0x/enum21a.C
  52d5ff8d8835de9029291b2e0be36123  gcc/testsuite/g++.dg/cpp0x/enum21b.C
  7ff20adcaa2a7e7bc5390f2d01264d25  gcc/testsuite/g++.dg/cpp0x/enum22.C
! 5bb1acca72edaa4854976e419c1c6a64  gcc/testsuite/g++.dg/cpp0x/enum23.C
  6e20f71280665d553eb0b07726a3453d  gcc/testsuite/g++.dg/cpp0x/enum24.C
  d69ddb30d1feb9e35bc7751f26929957  gcc/testsuite/g++.dg/cpp0x/enum25.C
  43b0beab61ef041fe4a52745f4a7aff8  gcc/testsuite/g++.dg/cpp0x/enum26.C
*************** cd13bec4a277695c3f0d055601e86cec  gcc/te
*** 11039,11044 ****
--- 11065,11072 ----
  b1410081d8b18a483605fea34ded714b  gcc/testsuite/g++.dg/cpp0x/enum35.C
  948a96ff04f2a9966e35400fe5a0ae86  gcc/testsuite/g++.dg/cpp0x/enum36.C
  9d78eeec0d8fa324ce972cdd1b925d06  gcc/testsuite/g++.dg/cpp0x/enum37.C
+ 0c1bd3a6f06a95634ee6e7e1c8cfcb43  gcc/testsuite/g++.dg/cpp0x/enum38.C
+ f520b3c677602a9f4bb925811947dd27  gcc/testsuite/g++.dg/cpp0x/enum39.C
  4314a939d182c8ee315404a2d9cf3ec3  gcc/testsuite/g++.dg/cpp0x/enum4.C
  771003df84c0886c950718b7f6d81033  gcc/testsuite/g++.dg/cpp0x/enum5.C
  67ec15297186c0dc5b419618c460a2f2  gcc/testsuite/g++.dg/cpp0x/enum6.C
*************** be032bb4361dd11f064d960f788b56ae  gcc/te
*** 11074,11083 ****
--- 11102,11113 ----
  4c3a1b08c781a6bc64801d804be82d89  gcc/testsuite/g++.dg/cpp0x/extern_template-2.C
  a90d02344ce471556a85a9970c53f219  gcc/testsuite/g++.dg/cpp0x/extern_template-3.C
  e69d01a320a7471c0585ac2d75efcac2  gcc/testsuite/g++.dg/cpp0x/extern_template-4.C
+ b25800bcf52ab901ab8ddbc9ea153561  gcc/testsuite/g++.dg/cpp0x/extern_template-5.C
  592cc710524d5d21c28b065dd6c6de7c  gcc/testsuite/g++.dg/cpp0x/fallthrough1.C
  c2982fdb85366105719171be7bb04eb0  gcc/testsuite/g++.dg/cpp0x/fallthrough2.C
  e719fc0782c02fa926744188563c8722  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg1.C
  101686a12f4027487963b47c2243cef7  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg10.C
+ d6975e94a38c08c7522664a293b0718d  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg11.C
  8b46fc26c58195fd05de5a6953f25c49  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg2.C
  65b3e6cf5d9cfb22620f647f7ad53258  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg2a.C
  e59d3f76627bf31bf8cc43a2fe4b6df9  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg3.C
*************** c157a52995fc54c0b46c8795dea13ada  gcc/te
*** 11174,11179 ****
--- 11204,11210 ----
  5ac484eaba19c794225110a11b48ef2a  gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C
  40fb270687c3b0ccc01dc21db4e07678  gcc/testsuite/g++.dg/cpp0x/gen-attrs-66.C
  f55fa66c82d267feca5db82dc835210a  gcc/testsuite/g++.dg/cpp0x/gen-attrs-7.C
+ 1e684e9934b01f7c9c53981ab2a9cd8f  gcc/testsuite/g++.dg/cpp0x/gen-attrs-71.C
  e0b4f953ad274eb8ec84b8e630f87d3a  gcc/testsuite/g++.dg/cpp0x/gen-attrs-8.C
  5dd92815927177080853d47a890f5439  gcc/testsuite/g++.dg/cpp0x/gen-attrs-9.C
  5b7126443554bc736a19b8a950170b30  gcc/testsuite/g++.dg/cpp0x/gnu_fext-numeric-literals.C
*************** bba825da84a7cef5052a899c9f1158f3  gcc/te
*** 11187,11192 ****
--- 11218,11224 ----
  db5b7de6305a8e21e1ae9042d5338dd3  gcc/testsuite/g++.dg/cpp0x/implicit13.C
  7328653fe6fc1e6ca53a097e33c805bf  gcc/testsuite/g++.dg/cpp0x/implicit14.C
  f99332ecdcdb0ac304db6ae97b1cbf57  gcc/testsuite/g++.dg/cpp0x/implicit15.C
+ ce06536a3636f3bfcf7185513e507086  gcc/testsuite/g++.dg/cpp0x/implicit16.C
  7a0c0404140f8be4c4780850aaea27d4  gcc/testsuite/g++.dg/cpp0x/implicit2.C
  bb3cecf4f0926b6e97d681a7ac6375b4  gcc/testsuite/g++.dg/cpp0x/implicit3.C
  25f074057f9be4abafc2e63b15388fe3  gcc/testsuite/g++.dg/cpp0x/implicit4.C
*************** b981bb775821a5230961a162ba38ff43  gcc/te
*** 11259,11264 ****
--- 11291,11297 ----
  742c772ced8eedc3c0511b94b8410082  gcc/testsuite/g++.dg/cpp0x/initlist-value.C
  fab23eb9efdcf1b8c0f8393aa5ad7913  gcc/testsuite/g++.dg/cpp0x/initlist-value2.C
  852f3923a21c10d08b8fe1877de6f216  gcc/testsuite/g++.dg/cpp0x/initlist-value3.C
+ 0597c71749163f9727f9bfc6f5ddd548  gcc/testsuite/g++.dg/cpp0x/initlist-value4.C
  93763afe3eb7edb5553f76daf0ed0de3  gcc/testsuite/g++.dg/cpp0x/initlist-vect.C
  bc81668e2b4c77a6a8c52350eb5f9bc7  gcc/testsuite/g++.dg/cpp0x/initlist1.C
  56eb446b9a79a3e01433eed6090a0b6d  gcc/testsuite/g++.dg/cpp0x/initlist10.C
*************** f787403dc64b99be9c0c9b763121c4d7  gcc/te
*** 11273,11278 ****
--- 11306,11312 ----
  4e30c8cc1b433b0d37d7e4262d017d0e  gcc/testsuite/g++.dg/cpp0x/initlist110.C
  07df2989f1e0524c6cdadbe249060b12  gcc/testsuite/g++.dg/cpp0x/initlist111.C
  449d2937c2b05f521d8889bbdfcb2549  gcc/testsuite/g++.dg/cpp0x/initlist112.C
+ f3e3a423075b6d0d03243d7a3125c656  gcc/testsuite/g++.dg/cpp0x/initlist118.C
  540183723223acf529878183682623fb  gcc/testsuite/g++.dg/cpp0x/initlist12.C
  a5e64985a46db12492fa03d5e7dfd347  gcc/testsuite/g++.dg/cpp0x/initlist13.C
  3071307e831ae441c218cbab9dbc1d8f  gcc/testsuite/g++.dg/cpp0x/initlist14.C
*************** ffc39c5b4c152803a184a9a8a8a77a77  gcc/te
*** 11457,11462 ****
--- 11491,11497 ----
  988889814e57352cbe162cc5e748cfd3  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg6.C
  7ab0268329db6592a8597fa7bede419d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg7.C
  b0a5175c866c3f8cc9595a3a187eaad5  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg8.C
+ 8e3435a786d0c21866950204dd63494c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg9.C
  38a5c8e0569ee441818049e1f170838f  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-dependent1.C
  e8dd4784bd328df4e1de1999906f386b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-diag1.C
  e4baead2918480aa1e47e55ecfdaef26  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-direct-init.C
*************** f834269fe12aa32c10b9a1ccedad58d6  gcc/te
*** 11601,11606 ****
--- 11636,11642 ----
  f9bfdf92390383acadb7e459c1d392b8  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic5.C
  ad61d0dd81ce64e7dd902f8cbf0238b7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic6.C
  a24564d5ecc7d81986630804e99e730a  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic7.C
+ a159ce2083ee6333569e0f552b98c062  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic8.C
  a667f158c89a42014e4ccc192862b932  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-vla1.C
  9da68ff6b459e7ba59b9ed131bcd5fa5  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-vla2.C
  d1d6585012ce959c2cfe7d34a8d32f1f  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-vla3.C
*************** a5272f2b141b976a80585ef6cded80e8  gcc/te
*** 11758,11766 ****
--- 11794,11807 ----
  038bcc314ee0faed559e148dcdc87aa0  gcc/testsuite/g++.dg/cpp0x/nullptr37.C
  a752e6374a9b016d0db3cc3d89cb1994  gcc/testsuite/g++.dg/cpp0x/nullptr38.C
  dd2e11db6d41e95dd646b54bb5547277  gcc/testsuite/g++.dg/cpp0x/nullptr39.C
+ d31a397b7e49ac715bfc08852a1710f3  gcc/testsuite/g++.dg/cpp0x/nullptr40.C
+ cce8d7efe84ba47b6a9a649b7e96db1d  gcc/testsuite/g++.dg/cpp0x/nullptr41.C
+ afdfafb40dd063d062a20c67e4309ae4  gcc/testsuite/g++.dg/cpp0x/nullptr45.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
+ 2c6f9529ab2133b66b083833e669fd58  gcc/testsuite/g++.dg/cpp0x/overload-conv-3.C
+ 05f8d114c0307676d7d3b227b2e3213d  gcc/testsuite/g++.dg/cpp0x/overload-conv-4.C
  e1598f2c9f261104495d9e7d921f8264  gcc/testsuite/g++.dg/cpp0x/overload.C
  15b4148c92763edcf90b0fe0cb6f7742  gcc/testsuite/g++.dg/cpp0x/overload2.C
  e51fa7b3953a97711f4b666480bad308  gcc/testsuite/g++.dg/cpp0x/overload3.C
*************** ce317b0879de92313ef6b7d499d12986  gcc/te
*** 11961,11967 ****
  662c2eb0632332c0375729eb9c9f926e  gcc/testsuite/g++.dg/cpp0x/pr83919.C
  70a182b3dddc113e81b5322b16298fe4  gcc/testsuite/g++.dg/cpp0x/pr83978.C
  71d60efef3e782a1d320da23ac44744e  gcc/testsuite/g++.dg/cpp0x/pr83993.C
! bd4e8cb0df7cafc2bf9c6508da8c910a  gcc/testsuite/g++.dg/cpp0x/pr84497.C
  3357d765c2a248307f8a2822fc51cdf5  gcc/testsuite/g++.dg/cpp0x/pr84606.C
  4645cdc10faa1c61c439188409dd5b38  gcc/testsuite/g++.dg/cpp0x/pr84609.C
  8ad683b7769fad28d118622160fbe8d4  gcc/testsuite/g++.dg/cpp0x/pr84610.C
--- 12002,12008 ----
  662c2eb0632332c0375729eb9c9f926e  gcc/testsuite/g++.dg/cpp0x/pr83919.C
  70a182b3dddc113e81b5322b16298fe4  gcc/testsuite/g++.dg/cpp0x/pr83978.C
  71d60efef3e782a1d320da23ac44744e  gcc/testsuite/g++.dg/cpp0x/pr83993.C
! d6124f912836f7ceed211ae9b5a41571  gcc/testsuite/g++.dg/cpp0x/pr84497.C
  3357d765c2a248307f8a2822fc51cdf5  gcc/testsuite/g++.dg/cpp0x/pr84606.C
  4645cdc10faa1c61c439188409dd5b38  gcc/testsuite/g++.dg/cpp0x/pr84609.C
  8ad683b7769fad28d118622160fbe8d4  gcc/testsuite/g++.dg/cpp0x/pr84610.C
*************** b29d09f2850527adc7623c72769dd875  gcc/te
*** 11981,11986 ****
--- 12022,12030 ----
  718bdac840ab7376a5e4df992790c295  gcc/testsuite/g++.dg/cpp0x/pr87539.C
  41ac2a98fc025161718d9e5b86a257d4  gcc/testsuite/g++.dg/cpp0x/pr88120.C
  a44fab7343840bcf0ea2a872841a61b1  gcc/testsuite/g++.dg/cpp0x/pr88410.C
+ af1a15e45c3cc6236ceb323ed17dc3d7  gcc/testsuite/g++.dg/cpp0x/pr89403.C
+ cf4d7a0934fa5897248e568b884df620  gcc/testsuite/g++.dg/cpp0x/pr92524.C
+ b01c3079ace1bdd462b03d3af7906721  gcc/testsuite/g++.dg/cpp0x/pr93905.C
  53428f69a6d0153074c9b06ee9fbe9e7  gcc/testsuite/g++.dg/cpp0x/ptrmem-cst-arg1.C
  6e8e648c26d9bf237cc152180e88c2c2  gcc/testsuite/g++.dg/cpp0x/range-for1.C
  0575c153beb764d50309dc02ebd221c1  gcc/testsuite/g++.dg/cpp0x/range-for10.C
*************** ccba3040ed86b5ffae7d72b18f556d1c  gcc/te
*** 12052,12057 ****
--- 12096,12103 ----
  682309935142019cb21a9df2c35d9a5c  gcc/testsuite/g++.dg/cpp0x/rv-cond2.C
  3a02f68ebc48112a74f31983fd72c639  gcc/testsuite/g++.dg/cpp0x/rv-cond3.C
  4d78acdd9f4b8ae8afa532ceaf0c07c4  gcc/testsuite/g++.dg/cpp0x/rv-conv1.C
+ 68fdce54ec37dd9c4ce6cc23940e6669  gcc/testsuite/g++.dg/cpp0x/rv-conv2.C
+ 55bf372aa23fed509d52b517cd46aa98  gcc/testsuite/g++.dg/cpp0x/rv-conv3.C
  889a7002f4d78b4abd44856da792f8dc  gcc/testsuite/g++.dg/cpp0x/rv-copy1.C
  de88aaa56b0d394bd02f079bb0f4dddf  gcc/testsuite/g++.dg/cpp0x/rv-deduce.C
  f213598004dcfd0117fecc9593637790  gcc/testsuite/g++.dg/cpp0x/rv-deduce2.C
*************** a5e6ed91f0f646eb02d06d6e7670053e  gcc/te
*** 12157,12162 ****
--- 12203,12209 ----
  0cc7cf7d0ec0400e4be4d1ae2087c83f  gcc/testsuite/g++.dg/cpp0x/sfinae60.C
  131acf6a69dc715be311411cf0fefa3e  gcc/testsuite/g++.dg/cpp0x/sfinae61.C
  5550601713048fc2035e09b7afa2de0d  gcc/testsuite/g++.dg/cpp0x/sfinae63.C
+ 5057317176f66cb1d8063c4f091fb9ef  gcc/testsuite/g++.dg/cpp0x/sfinae64.C
  ec1a51ea3fd41e6e61c8f425bde1fd0b  gcc/testsuite/g++.dg/cpp0x/sfinae7.C
  547894832b1452d5f513938e0cb8a166  gcc/testsuite/g++.dg/cpp0x/sfinae8.C
  03177ceac1dca2efe41bd4b603c2a79e  gcc/testsuite/g++.dg/cpp0x/sfinae9.C
*************** d628aec947fb9383000669568fb54fe3  gcc/te
*** 12272,12277 ****
--- 12319,12325 ----
  6d6ff5e1107f65ae6fdc850aaada06ea  gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C
  7687213971360103949df277ec9a4982  gcc/testsuite/g++.dg/cpp0x/using-enum-1.C
  5ff50b37857db1120f649fd613157bb3  gcc/testsuite/g++.dg/cpp0x/using-enum-2.C
+ 5453cfddd739b8f091b5077a25dbd04b  gcc/testsuite/g++.dg/cpp0x/using-enum-3.C
  c2935d37441711e00030dd4962af84b5  gcc/testsuite/g++.dg/cpp0x/variadic-104.C
  0fa36631e12ec97e9e0d646888cd43ab  gcc/testsuite/g++.dg/cpp0x/variadic-alias1.C
  8eb6bba0c4ef3e1b77151f91ce5ddeb3  gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
*************** e47543bd9482646c5c0d1023519e7eb1  gcc/te
*** 12319,12324 ****
--- 12367,12373 ----
  5ad1db01bdd9d87f2a8276b08cff8db7  gcc/testsuite/g++.dg/cpp0x/variadic-new2.C
  9965da4f62ae847ce666120789b29c79  gcc/testsuite/g++.dg/cpp0x/variadic-nondeduce1.C
  1441fa6139ca73d25aa889aafd3b483c  gcc/testsuite/g++.dg/cpp0x/variadic-nondeduce2.C
+ 7ef2a770be31e4cfad400f2e8df32ae9  gcc/testsuite/g++.dg/cpp0x/variadic-parm1.C
  48eb2c981da41427b39595337f986824  gcc/testsuite/g++.dg/cpp0x/variadic-partial1.C
  929e72e50917907d735e84a67d7462fa  gcc/testsuite/g++.dg/cpp0x/variadic-ref1.C
  0e1a5d3d60669df0ab8d526a879627f5  gcc/testsuite/g++.dg/cpp0x/variadic-rref.C
*************** b823b50bc430c6f0253adad46e2b9fea  gcc/te
*** 12568,12573 ****
--- 12617,12623 ----
  5e4a99649ec4c892a39fa54f3643eb49  gcc/testsuite/g++.dg/cpp1y/69098-2.C
  c8a2c7e8b1e0cbd3443ab02738d85644  gcc/testsuite/g++.dg/cpp1y/69098.C
  438090a75b721771fcfd7c5159abbb67  gcc/testsuite/g++.dg/cpp1y/attr-deprecated-2.C
+ e373712ec656768ee571d2a278d813da  gcc/testsuite/g++.dg/cpp1y/attr-deprecated-3.C
  27985f1bda815c3234299bd64d8847b2  gcc/testsuite/g++.dg/cpp1y/attr-deprecated-neg.C
  668d7e4abca655f37806cd95cf359930  gcc/testsuite/g++.dg/cpp1y/attr-deprecated.C
  fb2e417a364945cb8149b9526292009b  gcc/testsuite/g++.dg/cpp1y/attributes-enum-1.C
*************** a7934d89f8791f62bbbf0b9d7fa7ece6  gcc/te
*** 12735,12749 ****
--- 12785,12802 ----
  73439253dac676f4f5d981dc912a1a83  gcc/testsuite/g++.dg/cpp1y/lambda-generic-78018.C
  f257a2d5d1384a750676e55da76dca2e  gcc/testsuite/g++.dg/cpp1y/lambda-generic-79005.C
  5209bc3f1d48d6d7100a438fe34ed022  gcc/testsuite/g++.dg/cpp1y/lambda-generic-84125.C
+ 19d3b1d128bd21f69bf74f868fcbbfe4  gcc/testsuite/g++.dg/cpp1y/lambda-generic-90842.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
+ 508c18dbf853a0b77ee2fc571019a954  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const10.C
  565bd59fb2dca8cbcfbfa5b7e1e94368  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const2.C
  c1704c3068b9b801f6fca80634fa3d1c  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const3.C
  a429d84bc7f4132705bbe16ebbde7773  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const4.C
  0b815c50b036a29c2e101866d80ae539  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const4a.C
  6e8fc19c227503a364053713d7456972  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const5.C
  042f0e3c1fc202a11bdb268526dd79ae  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const6.C
+ 660abcf6eebdc761b124bf3e2f5f75af  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const9.C
  2e80b291e01a2cfa45ff49e595eefeb5  gcc/testsuite/g++.dg/cpp1y/lambda-generic-conv1.C
  4826d92e5c4d99fa506ff2e846ff01a4  gcc/testsuite/g++.dg/cpp1y/lambda-generic-conv2.C
  78cdb2dc3c8d671d96c375fa61f96dc5  gcc/testsuite/g++.dg/cpp1y/lambda-generic-conv3.C
*************** a5e1f08b66165b58419bbab37da9a962  gcc/te
*** 12763,12768 ****
--- 12816,12822 ----
  fcdbf299db7426d40d79e7ce91bbbc1e  gcc/testsuite/g++.dg/cpp1y/lambda-generic-nested2.C
  79b0200bf1646b28e5d82c30cae3557d  gcc/testsuite/g++.dg/cpp1y/lambda-generic-noexcept1.C
  52a13a3c9f86f7ceca034afb60b8f785  gcc/testsuite/g++.dg/cpp1y/lambda-generic-nsdmi1.C
+ bbd3fddcc74936595e633fdd96432322  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ref1.C
  db3760d317d0220aeddc9a1ce4072105  gcc/testsuite/g++.dg/cpp1y/lambda-generic-static1.C
  c6cfff44332b8bfb7c52ace4e1af76c5  gcc/testsuite/g++.dg/cpp1y/lambda-generic-static2.C
  d91a981f54ab2a15c0e9427ccb338f24  gcc/testsuite/g++.dg/cpp1y/lambda-generic-targ1.C
*************** d91a981f54ab2a15c0e9427ccb338f24  gcc/te
*** 12770,12775 ****
--- 12824,12830 ----
  47327f13bcf8bd47595b03a1a51d80b1  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this1.C
  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
  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
*************** cc6586d67eedf5854ebc2931fb7d47a3  gcc/te
*** 12798,12803 ****
--- 12853,12859 ----
  946f59c2dd9c3a634f4e09b219af302c  gcc/testsuite/g++.dg/cpp1y/lambda-generic.C
  ca76d1cf09a7e8a0d6dcf484103a301f  gcc/testsuite/g++.dg/cpp1y/lambda-ice1.C
  cf53809dddf10444ecf4edb30fe8fb83  gcc/testsuite/g++.dg/cpp1y/lambda-ice2.C
+ a37fb46d4b08c91fb2119f46b9d04ce0  gcc/testsuite/g++.dg/cpp1y/lambda-init-vla1.C
  cd4be222672b195ed8554a2e99c88e68  gcc/testsuite/g++.dg/cpp1y/lambda-init.C
  92794dd2e4beab250816493d67c15717  gcc/testsuite/g++.dg/cpp1y/lambda-init1.C
  fe118321a9f7ae6d0b7db3dea8fea392  gcc/testsuite/g++.dg/cpp1y/lambda-init10.C
*************** ca7e8735db99f7f5fd14ba8748118d88  gcc/te
*** 12809,12814 ****
--- 12865,12872 ----
  94541d9e486223ed3e08f03421566a99  gcc/testsuite/g++.dg/cpp1y/lambda-init15a.C
  be21e9afd5b9562ecdf4950349fa5936  gcc/testsuite/g++.dg/cpp1y/lambda-init16.C
  e0f5a695e9604ed19c20c1e333da6015  gcc/testsuite/g++.dg/cpp1y/lambda-init17.C
+ 5fe011c8566939194cd3e0837e9e34c0  gcc/testsuite/g++.dg/cpp1y/lambda-init18.C
+ 958fe0b6d46088167932b1f19e7a6780  gcc/testsuite/g++.dg/cpp1y/lambda-init19.C
  8ed9afde76486ea02c03ca491cadf017  gcc/testsuite/g++.dg/cpp1y/lambda-init2.C
  2cd05217a3f9f694b94c428a478c4d15  gcc/testsuite/g++.dg/cpp1y/lambda-init3.C
  f2fd3b3d96f31c07233bb82ba0c0f2f5  gcc/testsuite/g++.dg/cpp1y/lambda-init4.C
*************** dbace3f995d674f58bab880f12a9759b  gcc/te
*** 12924,12929 ****
--- 12982,12988 ----
  eed72e4e3c9aec24d904cb1baa5f2711  gcc/testsuite/g++.dg/cpp1y/pr84835.C
  9c7ee77059363808e261d90cf939ce59  gcc/testsuite/g++.dg/cpp1y/pr84942.C
  11abcca649e7c260d96b20dd2bb71bc7  gcc/testsuite/g++.dg/cpp1y/pr85076.C
+ 76d3c8355d513d753398e1184e4c4ece  gcc/testsuite/g++.dg/cpp1y/pr89767.C
  ac3a3cc471361b1fc9f3e55ad12dd7a8  gcc/testsuite/g++.dg/cpp1y/regress1.C
  9a759de4b7ac375d3c274acdf73c4fbe  gcc/testsuite/g++.dg/cpp1y/sized-dealloc1.C
  aeb199bf9a897359b6d538b5bce4e5ef  gcc/testsuite/g++.dg/cpp1y/sized-dealloc2.C
*************** f47aed01d0a8d51c841d31adce366f2f  gcc/te
*** 12999,13004 ****
--- 13058,13064 ----
  2d80dca3b1754f5129c41c3e12947ca9  gcc/testsuite/g++.dg/cpp1y/var-templ58a.C
  d02a4d5b691aff1357a5f77cf5774190  gcc/testsuite/g++.dg/cpp1y/var-templ59.C
  46f96806c3f041172407dd6ff7943dc8  gcc/testsuite/g++.dg/cpp1y/var-templ6.C
+ d40d9f43eb7820281681023bed02f7ce  gcc/testsuite/g++.dg/cpp1y/var-templ61.C
  3c670164f1a7f8f91ef1db2f80526182  gcc/testsuite/g++.dg/cpp1y/var-templ7.C
  7490ba7f2bf9511118a48f52e8c4ceed  gcc/testsuite/g++.dg/cpp1y/var-templ8.C
  c62c3c5ce4dabfb077ffd26896b1d204  gcc/testsuite/g++.dg/cpp1y/var-templ9.C
*************** d1268092500c38ed9254643995a3c603  gcc/te
*** 13019,13024 ****
--- 13079,13087 ----
  47ebc10e0900a7f3c3a5ba9f7d2d00f7  gcc/testsuite/g++.dg/cpp1z/aggr-base4.C
  7452bc52d89e5c766a6d55cf22417a18  gcc/testsuite/g++.dg/cpp1z/aggr-base5.C
  46609bf5a7d692e0ea71016a54461add  gcc/testsuite/g++.dg/cpp1z/aggr-base6.C
+ 1f750e73975350099aaa2a4902d7e23a  gcc/testsuite/g++.dg/cpp1z/aggr-base7.C
+ fec5cec13e8a17476aae459e74aa149b  gcc/testsuite/g++.dg/cpp1z/aggr-base8.C
+ 61c28771270a9d7c9e9c8ad6ed412fd4  gcc/testsuite/g++.dg/cpp1z/aggr-base9.C
  35366cd075be843e2cc0c308db8282e3  gcc/testsuite/g++.dg/cpp1z/aligned-new1.C
  e690214edbc75455debe7f454f603dad  gcc/testsuite/g++.dg/cpp1z/aligned-new2.C
  1d6d9a7a997b26c48483d2162c7910fc  gcc/testsuite/g++.dg/cpp1z/aligned-new3.C
*************** f1683a9e2fc77cfa2ecf5b1a917b5bff  gcc/te
*** 13082,13088 ****
--- 13145,13155 ----
  e7263966dbf9182442f935b5f1cbf617  gcc/testsuite/g++.dg/cpp1z/class-deduction52.C
  69a873359fe2d745f88b120b41848709  gcc/testsuite/g++.dg/cpp1z/class-deduction53.C
  22015d7dca3e418d189fb05288811fe5  gcc/testsuite/g++.dg/cpp1z/class-deduction54.C
+ 595a15e67ff373b69d56a3d32cf1c58e  gcc/testsuite/g++.dg/cpp1z/class-deduction58.C
  61268c3079f0b6d7fae43d7fbcb00d0a  gcc/testsuite/g++.dg/cpp1z/class-deduction6.C
+ d47bddaa09364b9feaca55aae058bc72  gcc/testsuite/g++.dg/cpp1z/class-deduction62.C
+ 5009a2927199b8cf161c320bb1fb8801  gcc/testsuite/g++.dg/cpp1z/class-deduction63.C
+ 4a31eaf454fdf182ed592dea6cd3b8a9  gcc/testsuite/g++.dg/cpp1z/class-deduction64.C
  b0ba58b3ee1aac0f4695ad92e7e28a32  gcc/testsuite/g++.dg/cpp1z/class-deduction7.C
  a9583f9d358ed621849b8a8cca70fd78  gcc/testsuite/g++.dg/cpp1z/class-deduction8.C
  8957e06a84199b978d95b6726d556763  gcc/testsuite/g++.dg/cpp1z/class-deduction9.C
*************** a1e97f56082d1ebd1ca50bd8f78d9a83  gcc/te
*** 13106,13111 ****
--- 13173,13179 ----
  4856dd5fb3b9a09cc078f2c0de44b6cc  gcc/testsuite/g++.dg/cpp1z/constexpr-if23.C
  52e513ee1f36afff22297e5d55f089d9  gcc/testsuite/g++.dg/cpp1z/constexpr-if24.C
  69eeb69911dab3b982b1cf810dd4b2d2  gcc/testsuite/g++.dg/cpp1z/constexpr-if25.C
+ 2e75d29cfaac0c2c6e31cf11da50f1c5  gcc/testsuite/g++.dg/cpp1z/constexpr-if28.C
  dd7cc15292a815c35ae2ba8f10f74b83  gcc/testsuite/g++.dg/cpp1z/constexpr-if3.C
  a02c2b6b67d061c35cdb50fa03569637  gcc/testsuite/g++.dg/cpp1z/constexpr-if4.C
  63578861f15440823cca35ea07a0f65f  gcc/testsuite/g++.dg/cpp1z/constexpr-if5.C
*************** c249422d923bfc189a9579b50b33bfe4  gcc/te
*** 13127,13132 ****
--- 13195,13201 ----
  2bb0dd2aac4de456d29bb08aaee75db3  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda2.C
  aee3fc565742135f774d7e3e6370e6dc  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda20.C
  67b42bcb57649e412852809762a049d4  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda21.C
+ 58bd2e2abbc1edcb0a954b8ed6ac8821  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda24.C
  f553da6006f8912f7476ae4a29c88839  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda3.C
  7ead2356ec8abee16155b198fb017164  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda4.C
  c7e2fe47c521164eaf234ff1d633bce5  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda5.C
*************** f87d01b79438c980c4a021d7024c707c  gcc/te
*** 13182,13188 ****
--- 13251,13259 ----
  27efec577245686b5a9bedc131a5b16c  gcc/testsuite/g++.dg/cpp1z/decomp46.C
  0d5c2ebf6eb718515af8732ff1e19ed9  gcc/testsuite/g++.dg/cpp1z/decomp47.C
  71e62b8871f4370e7ab9851c45a0c5c8  gcc/testsuite/g++.dg/cpp1z/decomp48.C
+ be58a05c982a80cf0c6b4457f2ee655c  gcc/testsuite/g++.dg/cpp1z/decomp49.C
  af1e704cf45a12bb8c7e2865e6b7debc  gcc/testsuite/g++.dg/cpp1z/decomp5.C
+ 7f5a05827bf70c6aae1a8d8e3d44d7f8  gcc/testsuite/g++.dg/cpp1z/decomp50.C
  1bdca83f97c5e15ddd3eda87ca5353f2  gcc/testsuite/g++.dg/cpp1z/decomp6.C
  09468d9aa8e4fe8ac0677b17a3c509a2  gcc/testsuite/g++.dg/cpp1z/decomp7.C
  0d7ba62c8322f4f98a085026e3ac529a  gcc/testsuite/g++.dg/cpp1z/decomp8.C
*************** bafa3ed0da0c14fc9337428032934f0f  gcc/te
*** 13195,13205 ****
--- 13266,13278 ----
  6445e93e901862c51fb69c4ea7a666f0  gcc/testsuite/g++.dg/cpp1z/eval-order2.C
  972d2af3fffd0f9c742c7b6e92b1a61c  gcc/testsuite/g++.dg/cpp1z/eval-order3.C
  6d8d378fedaf65b4cb89952060799280  gcc/testsuite/g++.dg/cpp1z/eval-order4.C
+ 56af6596678e014cdf3ef38d1427358f  gcc/testsuite/g++.dg/cpp1z/eval-order5.C
  651c38ec103541212cf0b619936c5236  gcc/testsuite/g++.dg/cpp1z/fallthrough1.C
  8de71eac651bf0fd672ff302c1b70aa5  gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
  2758f3317d6a6567b51f32f559f26c6d  gcc/testsuite/g++.dg/cpp1z/fold-ice1.C
  a93e4e8f8071a336f43698a3b75b695d  gcc/testsuite/g++.dg/cpp1z/fold-lambda.C
  0cb0c0164acd80d87759c2968d3d1643  gcc/testsuite/g++.dg/cpp1z/fold-lambda2.C
+ 1bbf4f67975bc37756736d418385d82a  gcc/testsuite/g++.dg/cpp1z/fold-lambda3.C
  84fe300be5af6e523e86a9d048f2a272  gcc/testsuite/g++.dg/cpp1z/fold-mangle.C
  54e23ba84623ce3381ec34485124e8d7  gcc/testsuite/g++.dg/cpp1z/fold1.C
  55994e6d04d31ccc2a8ae8e3882e4942  gcc/testsuite/g++.dg/cpp1z/fold2.C
*************** b1ad198a7406b907c64499cd029697d8  gcc/te
*** 13248,13253 ****
--- 13321,13327 ----
  7cb7e5cbc212cca707d142d97c9b95d1  gcc/testsuite/g++.dg/cpp1z/inline-var2.C
  e087f098ba0891b5b8c20970b5e1f9a3  gcc/testsuite/g++.dg/cpp1z/inline-var3.C
  e32ed1e5e30f242801e2dce55e0d59d5  gcc/testsuite/g++.dg/cpp1z/inline-var4.C
+ 0cb95601f3535585c53079495cd7f627  gcc/testsuite/g++.dg/cpp1z/inline-var5.C
  1921ffb3bfdded5b9f5e2991397818f9  gcc/testsuite/g++.dg/cpp1z/lambda-__func__.C
  0e7def4e0e7458614022b79a25311135  gcc/testsuite/g++.dg/cpp1z/lambda-inherit1.C
  af889024357d1e759a5f6936d5b50828  gcc/testsuite/g++.dg/cpp1z/lambda-this1.C
*************** c5f6b89265916b0fda61728cb9e20fb8  gcc/te
*** 13344,13350 ****
  df5bd51ca3ec69bebfb861198262ba3d  gcc/testsuite/g++.dg/cpp1z/utf8.C
  efde6c8c1860e6796275cd76c0810b5d  gcc/testsuite/g++.dg/cpp2a/bitfield1.C
  6459f6af0671a76d588568648ec2536c  gcc/testsuite/g++.dg/cpp2a/bitfield2.C
! ef57257e408e06d58bf2de60513b468b  gcc/testsuite/g++.dg/cpp2a/bitfield3.C
  7126b921087cb1629e4184935766b627  gcc/testsuite/g++.dg/cpp2a/cplusplus.C
  9e5b823284742c68e17318ea0110e785  gcc/testsuite/g++.dg/cpp2a/desig1.C
  660e750ca110e87932946efeee331317  gcc/testsuite/g++.dg/cpp2a/desig2.C
--- 13418,13425 ----
  df5bd51ca3ec69bebfb861198262ba3d  gcc/testsuite/g++.dg/cpp1z/utf8.C
  efde6c8c1860e6796275cd76c0810b5d  gcc/testsuite/g++.dg/cpp2a/bitfield1.C
  6459f6af0671a76d588568648ec2536c  gcc/testsuite/g++.dg/cpp2a/bitfield2.C
! dbb38d79b4b755c3350566626fdf9bd8  gcc/testsuite/g++.dg/cpp2a/bitfield3.C
! 74cc445497f4dd39bb1cc3a9955074a9  gcc/testsuite/g++.dg/cpp2a/bitfield4.C
  7126b921087cb1629e4184935766b627  gcc/testsuite/g++.dg/cpp2a/cplusplus.C
  9e5b823284742c68e17318ea0110e785  gcc/testsuite/g++.dg/cpp2a/desig1.C
  660e750ca110e87932946efeee331317  gcc/testsuite/g++.dg/cpp2a/desig2.C
*************** b4a2f02a53738aad34f79c645eb08809  gcc/te
*** 13474,13479 ****
--- 13549,13555 ----
  6bacb72669961d72ae42d4e8ef6f3235  gcc/testsuite/g++.dg/debug/dwarf2/pr87295.C
  a6b0d9b886cd92ee869a01fd967f123e  gcc/testsuite/g++.dg/debug/dwarf2/pr87462.C
  eb8df2f4b1148c5f6b77553d91cb7877  gcc/testsuite/g++.dg/debug/dwarf2/pr88006.C
+ 1f426b6d87ce5765a45728a91f7e3337  gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C
  48e69b012a6da8a3f37c0eea7d671389  gcc/testsuite/g++.dg/debug/dwarf2/ptrdmem-1.C
  5d8f03fa19703b37b960eccf4cdd64b6  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C
  76d02e352aba879b4ba37be3e5443ee8  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-2.C
*************** cb620ecdcf5127492c630c4b2400bbd6  gcc/te
*** 13567,13572 ****
--- 13643,13649 ----
  dcf67ead0fe2bb68fc518e4789e519f2  gcc/testsuite/g++.dg/debug/pr84704.C
  423c814771cf96308127152a6e56b792  gcc/testsuite/g++.dg/debug/pr84813.C
  ff81bad5bdaf6ebdf3b91953ac3a3e83  gcc/testsuite/g++.dg/debug/pr88181.C
+ 7ea445d3dffc6b1aa3648e9d5e464e5f  gcc/testsuite/g++.dg/debug/pr92763.C
  a5e8d546d53a780cc3eb41574ea9f263  gcc/testsuite/g++.dg/debug/ra1.C
  c3f392076ad11f8768ef0321b89abd5f  gcc/testsuite/g++.dg/debug/static1.C
  7e13d86d33b17cfb7cdf61b7b8cca961  gcc/testsuite/g++.dg/debug/template1.C
*************** c0abaf19bc6ccea1ddcd7d45a062e6f7  gcc/te
*** 13715,13720 ****
--- 13792,13798 ----
  c8f6f4459095bf15bd799a6d96061277  gcc/testsuite/g++.dg/eh/nested-try.C
  addd3f35897f7c52014f1e26226e9219  gcc/testsuite/g++.dg/eh/new1.C
  02bc77a36c6c86bb6c3fa9d05ed2ca11  gcc/testsuite/g++.dg/eh/nrv1.C
+ 39b82c2cef9b1e2c8c66b3ae639c6a35  gcc/testsuite/g++.dg/eh/o32-fp.C
  ee5fb539eb5e41ab9f5aa0028f011fce  gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
  dfa0fe611ce9682e5de477f908c0b5c0  gcc/testsuite/g++.dg/eh/omit-frame-pointer2.C
  b0149e5a2fbd5ae0fa0d1eb763a1f18e  gcc/testsuite/g++.dg/eh/partial1.C
*************** a2cb6541b849d8c33282f342e26447ca  gcc/te
*** 13880,13885 ****
--- 13958,13964 ----
  ffd75379d11277c314a7c44c9f8a5129  gcc/testsuite/g++.dg/expr/unary4.C
  e639e926667ce8f9dee4e94ea0269323  gcc/testsuite/g++.dg/expr/volatile1.C
  5f6dc90ecc1bf243ae69988679b96ec4  gcc/testsuite/g++.dg/ext/80654.C
+ 65fb3808ee44eb4b42097f686dbf1c4e  gcc/testsuite/g++.dg/ext/90532.C
  7dfd2972b1402d4103976b061d5cbcd3  gcc/testsuite/g++.dg/ext/alias-canon.C
  d36f9d49ee39bbdeb5dec24146dbdc1d  gcc/testsuite/g++.dg/ext/alias-canon2.C
  d34fa2166247314c56eb1b0cb616d3b4  gcc/testsuite/g++.dg/ext/alias-canon3.C
*************** b7f5975e22585a2f3d80be63f70dccc8  gcc/te
*** 13891,13897 ****
  8086207ba3911ed58a971e642fbfdd29  gcc/testsuite/g++.dg/ext/align1.C
  9b72806f0ff8dd6bff6e2ef84f0ce102  gcc/testsuite/g++.dg/ext/align2.C
  ae6df71fd3bee2754f2c1b710ca23b88  gcc/testsuite/g++.dg/ext/alignof1.C
! eab7bc114d4867ceb8d4e9a258d67045  gcc/testsuite/g++.dg/ext/alignof2.C
  f94bcd708feb1a029065a7503b545f54  gcc/testsuite/g++.dg/ext/altivec-1.C
  11c64f0deba1e4621429dc584ee88ae4  gcc/testsuite/g++.dg/ext/altivec-10.C
  11e05978299d38b5d2b835ef7303988d  gcc/testsuite/g++.dg/ext/altivec-11.C
--- 13970,13976 ----
  8086207ba3911ed58a971e642fbfdd29  gcc/testsuite/g++.dg/ext/align1.C
  9b72806f0ff8dd6bff6e2ef84f0ce102  gcc/testsuite/g++.dg/ext/align2.C
  ae6df71fd3bee2754f2c1b710ca23b88  gcc/testsuite/g++.dg/ext/alignof1.C
! c193f1254c92080bca2fd5ab48c1e175  gcc/testsuite/g++.dg/ext/alignof2.C
  f94bcd708feb1a029065a7503b545f54  gcc/testsuite/g++.dg/ext/altivec-1.C
  11c64f0deba1e4621429dc584ee88ae4  gcc/testsuite/g++.dg/ext/altivec-10.C
  11e05978299d38b5d2b835ef7303988d  gcc/testsuite/g++.dg/ext/altivec-11.C
*************** d377fb4f9ef6d1ed2029c1551ddf7e3b  gcc/te
*** 13953,13960 ****
  e44c9c980378260d4b601d86e9cc1197  gcc/testsuite/g++.dg/ext/asm12.C
  8a1c270f6e9e5f738069b9ac0cb76038  gcc/testsuite/g++.dg/ext/asm13.C
  b03656b1cd67c4e115686cb70664ee3b  gcc/testsuite/g++.dg/ext/asm14.C
! d0cdfeb86cc1bd5048bc8a6eccd22158  gcc/testsuite/g++.dg/ext/asm15.C
! 6d4d89936aae31f929753c3c6fbe416c  gcc/testsuite/g++.dg/ext/asm16.C
  80a3695697c7262c931be9b1380fa283  gcc/testsuite/g++.dg/ext/asm2.C
  d79d3809a45ef739f741819f3a0e3979  gcc/testsuite/g++.dg/ext/asm3.C
  f8da779ccf232ebdb2dee94530a1bf48  gcc/testsuite/g++.dg/ext/asm4.C
--- 14032,14040 ----
  e44c9c980378260d4b601d86e9cc1197  gcc/testsuite/g++.dg/ext/asm12.C
  8a1c270f6e9e5f738069b9ac0cb76038  gcc/testsuite/g++.dg/ext/asm13.C
  b03656b1cd67c4e115686cb70664ee3b  gcc/testsuite/g++.dg/ext/asm14.C
! be1c80dcae5cbae6a8e240931f3c0271  gcc/testsuite/g++.dg/ext/asm15.C
! 2135f9ca8816461a01d6402d135aadb3  gcc/testsuite/g++.dg/ext/asm16.C
! 883f7391e5262e580b7d6560610b3012  gcc/testsuite/g++.dg/ext/asm17.C
  80a3695697c7262c931be9b1380fa283  gcc/testsuite/g++.dg/ext/asm2.C
  d79d3809a45ef739f741819f3a0e3979  gcc/testsuite/g++.dg/ext/asm3.C
  f8da779ccf232ebdb2dee94530a1bf48  gcc/testsuite/g++.dg/ext/asm4.C
*************** cd699f5674b89b0d8312893e0921e784  gcc/te
*** 14057,14062 ****
--- 14137,14143 ----
  ee2835de4392f4a966affa761b794015  gcc/testsuite/g++.dg/ext/attrib55.C
  0a783da5db70479d5370ad342d74e1a2  gcc/testsuite/g++.dg/ext/attrib56.C
  76284b29c6fce52f56ddbcc04acd3a97  gcc/testsuite/g++.dg/ext/attrib6.C
+ df4711200e4e7cd7c5366aa4bdd29d74  gcc/testsuite/g++.dg/ext/attrib61.C
  7af1e9265de26187b4a3a3880f99ac11  gcc/testsuite/g++.dg/ext/attrib7.C
  23c4a640241391acec5a1fd2c3fa5f25  gcc/testsuite/g++.dg/ext/attrib8.C
  db629587302d47a98b453a1702e900c9  gcc/testsuite/g++.dg/ext/attrib9.C
*************** c1e635c954030e7a49c5a15d469f0933  gcc/te
*** 14222,14227 ****
--- 14303,14310 ----
  119df814ca2920e1cbbb76f8378f4897  gcc/testsuite/g++.dg/ext/flexary29.C
  21926590c31816347bbb7ba438127f63  gcc/testsuite/g++.dg/ext/flexary3.C
  4a3b7f4deda6d57018846db88d1d2c1e  gcc/testsuite/g++.dg/ext/flexary30.C
+ 74f6c053c0114f2642098943985dd99c  gcc/testsuite/g++.dg/ext/flexary33.C
+ b2c60991d5b6f21b7202a6d5a7c81412  gcc/testsuite/g++.dg/ext/flexary34.C
  3d3772048887cc532cac316c5dfc3727  gcc/testsuite/g++.dg/ext/flexary4.C
  0cdb8ed93bc6d926326dda41fc92d614  gcc/testsuite/g++.dg/ext/flexary5.C
  57643e50a930f6d1e7ea68411e707a26  gcc/testsuite/g++.dg/ext/flexary6.C
*************** a24f991beb2c5296f2e8144630b7bb1a  gcc/te
*** 14269,14275 ****
  04cb5500126619139ae126fdc51c8a1f  gcc/testsuite/g++.dg/ext/injected-ttp.C
  f2cf0baaaf489aa15f22210e07d052d1  gcc/testsuite/g++.dg/ext/inline1.C
  6cfdb6711dd7c538f7c4411216e0cc5b  gcc/testsuite/g++.dg/ext/instantiate1.C
! 5e54f0ef2e625e228e1d382cd9aa24b3  gcc/testsuite/g++.dg/ext/instantiate2.C
  561bb7137df38a016a786156224c9769  gcc/testsuite/g++.dg/ext/instantiate3.C
  64c2566bddee53ad391dac93f9ac20f8  gcc/testsuite/g++.dg/ext/int128-1.C
  32e47d9edd5e9de41660e6f8d0faa6c8  gcc/testsuite/g++.dg/ext/int128-2.C
--- 14352,14358 ----
  04cb5500126619139ae126fdc51c8a1f  gcc/testsuite/g++.dg/ext/injected-ttp.C
  f2cf0baaaf489aa15f22210e07d052d1  gcc/testsuite/g++.dg/ext/inline1.C
  6cfdb6711dd7c538f7c4411216e0cc5b  gcc/testsuite/g++.dg/ext/instantiate1.C
! 34f12a4e88c7d91723528bbca194ce29  gcc/testsuite/g++.dg/ext/instantiate2.C
  561bb7137df38a016a786156224c9769  gcc/testsuite/g++.dg/ext/instantiate3.C
  64c2566bddee53ad391dac93f9ac20f8  gcc/testsuite/g++.dg/ext/int128-1.C
  32e47d9edd5e9de41660e6f8d0faa6c8  gcc/testsuite/g++.dg/ext/int128-2.C
*************** c8cc6b1ac116455433fc79d5403b3693  gcc/te
*** 14581,14586 ****
--- 14664,14670 ----
  693cec9bf931df45af9b2d331ac48159  gcc/testsuite/g++.dg/ext/vector34.C
  bc898cae3bed874536a1bd98580d68a7  gcc/testsuite/g++.dg/ext/vector35.C
  abeb7f1800f1c5a18e83e13fb0f1d304  gcc/testsuite/g++.dg/ext/vector36.C
+ ff1db1bf54183447b20849ac3c27f4ab  gcc/testsuite/g++.dg/ext/vector37.C
  1d6b45dce331a414b31b64c5104ab383  gcc/testsuite/g++.dg/ext/vector4.C
  3231264b4b96091ab8a2351e76707e8d  gcc/testsuite/g++.dg/ext/vector5.C
  9dca9632e59d179ee1b85a181a34cae7  gcc/testsuite/g++.dg/ext/vector6.C
*************** d8cdfe2265b912fe59c4b829ba5b85f0  gcc/te
*** 14713,14719 ****
  28167c93ffea74cb328ff3cd087d643a  gcc/testsuite/g++.dg/gcov/gcovpart-12b.C
  7e1f7719f890c2991e041935a008aba6  gcc/testsuite/g++.dg/gcov/loop.C
  7d9eee67c3f8041f2ddace387e1df1c2  gcc/testsuite/g++.dg/gcov/pr16855-priority.C
! 6a00a42444ecfc55fcc35215a85e8a01  gcc/testsuite/g++.dg/gcov/pr16855.C
  c764fcf65d843c003c08c0004637752d  gcc/testsuite/g++.dg/gcov/pr84548.C
  c8c006792fd429653df69e08d74da961  gcc/testsuite/g++.dg/gcov/pr86109.C
  3c05a5a4b4007f9635bf800d5335487b  gcc/testsuite/g++.dg/gcov/pr88045.C
--- 14797,14803 ----
  28167c93ffea74cb328ff3cd087d643a  gcc/testsuite/g++.dg/gcov/gcovpart-12b.C
  7e1f7719f890c2991e041935a008aba6  gcc/testsuite/g++.dg/gcov/loop.C
  7d9eee67c3f8041f2ddace387e1df1c2  gcc/testsuite/g++.dg/gcov/pr16855-priority.C
! 0e2959a120e9dabe4dc820b1236a1579  gcc/testsuite/g++.dg/gcov/pr16855.C
  c764fcf65d843c003c08c0004637752d  gcc/testsuite/g++.dg/gcov/pr84548.C
  c8c006792fd429653df69e08d74da961  gcc/testsuite/g++.dg/gcov/pr86109.C
  3c05a5a4b4007f9635bf800d5335487b  gcc/testsuite/g++.dg/gcov/pr88045.C
*************** bcce5f289dacd7e032453729bf06e161  gcc/te
*** 14789,14794 ****
--- 14873,14879 ----
  d9604d99f8b1a6974afc5a3cab2765b3  gcc/testsuite/g++.dg/gomp/for-8.C
  34eb86e893e0bd796aad8d236b5bc215  gcc/testsuite/g++.dg/gomp/for-9.C
  066da8e4c36f6d0013f731bd6971e9b1  gcc/testsuite/g++.dg/gomp/gomp.exp
+ eb763d050fd680e1a3302fbda441475d  gcc/testsuite/g++.dg/gomp/lastprivate-1.C
  7f682781cd88149270eb73eb44f419f7  gcc/testsuite/g++.dg/gomp/linear-1.C
  2fe09fbd7df28122d262deb35faa2ae9  gcc/testsuite/g++.dg/gomp/linear-2.C
  6dcaf2b099c377baab33fe0ad0e0e268  gcc/testsuite/g++.dg/gomp/loop-1.C
*************** aec913fefeac6132003dfcbe3fd035eb  gcc/te
*** 14807,14813 ****
  135dd9ca392aa9976b7a20570053aa68  gcc/testsuite/g++.dg/gomp/member-4.C
  40ddfb4cf46a4ea2a28ece501a9d1b2b  gcc/testsuite/g++.dg/gomp/method-1.C
  badbf609721acd5ee04999023c4af494  gcc/testsuite/g++.dg/gomp/openmp-simd-1.C
! ea8624eaab1d22a16dec629523a83531  gcc/testsuite/g++.dg/gomp/openmp-simd-2.C
  ad5a2c143fabe766d3848eb100ea6c38  gcc/testsuite/g++.dg/gomp/openmp-simd-3.C
  20b058bc3ab390f835dc26da1b4b891e  gcc/testsuite/g++.dg/gomp/ordered-1.C
  ad83350cdd58e73fddf0b7bacdf348a8  gcc/testsuite/g++.dg/gomp/ordered-2.C
--- 14892,14898 ----
  135dd9ca392aa9976b7a20570053aa68  gcc/testsuite/g++.dg/gomp/member-4.C
  40ddfb4cf46a4ea2a28ece501a9d1b2b  gcc/testsuite/g++.dg/gomp/method-1.C
  badbf609721acd5ee04999023c4af494  gcc/testsuite/g++.dg/gomp/openmp-simd-1.C
! 2e7e4a5c79eb8fe54062fed88c9a9fa3  gcc/testsuite/g++.dg/gomp/openmp-simd-2.C
  ad5a2c143fabe766d3848eb100ea6c38  gcc/testsuite/g++.dg/gomp/openmp-simd-3.C
  20b058bc3ab390f835dc26da1b4b891e  gcc/testsuite/g++.dg/gomp/ordered-1.C
  ad83350cdd58e73fddf0b7bacdf348a8  gcc/testsuite/g++.dg/gomp/ordered-2.C
*************** d43c7636f8d004a836e8c8543a39d4aa  gcc/te
*** 14927,14932 ****
--- 15012,15018 ----
  f4af350e7c840b674d4df142d3432e80  gcc/testsuite/g++.dg/gomp/pr84791.C
  40d17ee1d08ee279cba091bb133935cf  gcc/testsuite/g++.dg/gomp/pr85134.C
  4b42a7fda8d3ea41699780101b9c6384  gcc/testsuite/g++.dg/gomp/pr88949.C
+ c1464987d35d87dd8f66e42e5434dd87  gcc/testsuite/g++.dg/gomp/pr89796.C
  adbfca0228fdb71a91ae227ecc88afab  gcc/testsuite/g++.dg/gomp/predetermined-1.C
  edac71d2b358ecd6e646fece69c5426d  gcc/testsuite/g++.dg/gomp/private-1.C
  d447246d410ae61ed9f733998e77b958  gcc/testsuite/g++.dg/gomp/reference-1.C
*************** d31daabe5d2bb29c818c1bbbe31a5a4b  gcc/te
*** 15612,15618 ****
--- 15698,15706 ----
  7a74ca095291672fedb99619674166cc  gcc/testsuite/g++.dg/ipa/pr85421.C
  aae51c901115904a7775a689bfba23d3  gcc/testsuite/g++.dg/ipa/pr85447.C
  0a73df0f8f21e4039f7d63b15167994d  gcc/testsuite/g++.dg/ipa/pr85549.C
+ 29db8a93c552179e2118ba4096879c15  gcc/testsuite/g++.dg/ipa/pr88235.C
  17bef3af24e2c140867ef54880bbe5ec  gcc/testsuite/g++.dg/ipa/pr89009.C
+ 68096b3683f7d5d854cba520e7ed2a86  gcc/testsuite/g++.dg/ipa/pr89693.C
  36fa3f305af8daf292a5a974b6cd8017  gcc/testsuite/g++.dg/ipa/pure-const-1.C
  82a7eaa06c8e9918346a40ce4e5c9881  gcc/testsuite/g++.dg/ipa/pure-const-2.C
  ee6095015820d87205d7dcbb848a66d1  gcc/testsuite/g++.dg/ipa/pure-const-3.C
*************** acece40c5f32aaa3b38f954b91368d3c  gcc/te
*** 15748,15757 ****
  63850d2da277a993459adc90859da456  gcc/testsuite/g++.dg/lookup/missing-std-include-2.C
  29a08861fcce5ce8183c96169e17d4c1  gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
  2089959ff25a41b6553e2e30bcdab132  gcc/testsuite/g++.dg/lookup/missing-std-include-4.C
! ebd2e188a4e001a51cca4db537fff2bf  gcc/testsuite/g++.dg/lookup/missing-std-include-5.C
! a33692eb905167cf0b3191f444e38fd0  gcc/testsuite/g++.dg/lookup/missing-std-include-6.C
  3d220622c3cf94c2c856e98e299989ef  gcc/testsuite/g++.dg/lookup/missing-std-include-7.C
! 4384463d109035c394e991a08cf3a047  gcc/testsuite/g++.dg/lookup/missing-std-include-8.C
  ecb804007c1fa8a878d2197cb35a2d89  gcc/testsuite/g++.dg/lookup/missing-std-include.C
  6c99bf6f0c2260471ad74e39e36cdf71  gcc/testsuite/g++.dg/lookup/name-clash1.C
  51f1b95d6c879739a8fae563ede188d0  gcc/testsuite/g++.dg/lookup/name-clash10.C
--- 15836,15845 ----
  63850d2da277a993459adc90859da456  gcc/testsuite/g++.dg/lookup/missing-std-include-2.C
  29a08861fcce5ce8183c96169e17d4c1  gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
  2089959ff25a41b6553e2e30bcdab132  gcc/testsuite/g++.dg/lookup/missing-std-include-4.C
! 8c9e7cd6068948fc3bc9f18fb4358bbc  gcc/testsuite/g++.dg/lookup/missing-std-include-5.C
! 747d4e43728357e44238bb23680126e8  gcc/testsuite/g++.dg/lookup/missing-std-include-6.C
  3d220622c3cf94c2c856e98e299989ef  gcc/testsuite/g++.dg/lookup/missing-std-include-7.C
! e79584d4c910c70ebcefcd854ff0809f  gcc/testsuite/g++.dg/lookup/missing-std-include-8.C
  ecb804007c1fa8a878d2197cb35a2d89  gcc/testsuite/g++.dg/lookup/missing-std-include.C
  6c99bf6f0c2260471ad74e39e36cdf71  gcc/testsuite/g++.dg/lookup/name-clash1.C
  51f1b95d6c879739a8fae563ede188d0  gcc/testsuite/g++.dg/lookup/name-clash10.C
*************** b0d2b85719be4698bf6dbe4c553cb0fc  gcc/te
*** 15804,15809 ****
--- 15892,15898 ----
  3ccd58b6028d69a000f334fac1ef2942  gcc/testsuite/g++.dg/lookup/pr86329.C
  92d8ca6e3168a7b42ef20361e76d5bd7  gcc/testsuite/g++.dg/lookup/pr87531-2.C
  d85c77d90a65a6ab99636a50096dd54e  gcc/testsuite/g++.dg/lookup/pr87531.C
+ 3d384542a620fae8987b3de3d5ed239f  gcc/testsuite/g++.dg/lookup/pr91826.C
  9fc063d780e4510399927cfe832e8770  gcc/testsuite/g++.dg/lookup/pretty1.C
  f30dda31dee159f3aebbbc269a5fd8e4  gcc/testsuite/g++.dg/lookup/ptrmem1.C
  bcba89d3ec64e8fc005f26cebc29ef75  gcc/testsuite/g++.dg/lookup/redecl1.C
*************** d2d6a19df03db27bf00901c7a776d305  gcc/te
*** 16128,16133 ****
--- 16217,16224 ----
  02b248b8120fb299627dfd3d464c48d4  gcc/testsuite/g++.dg/lto/pr85655_0.C
  81b88749e859ad4a32ba5f3981adf134  gcc/testsuite/g++.dg/lto/pr87295_0.C
  332bdab00ff27d1c425ee9fc8cdd7dc9  gcc/testsuite/g++.dg/lto/pr88046_0.C
+ cb782e35cc277d1b7be31cdb2b766e39  gcc/testsuite/g++.dg/lto/pr89358_0.C
+ 4f6e362a864f5ac4f9b9b99e660e0674  gcc/testsuite/g++.dg/lto/pr89358_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
*************** d1a8e92d247b883fcbec24a8363eec07  gcc/te
*** 16470,16475 ****
--- 16561,16570 ----
  1212695477c8b0f600a726a3a2dcb780  gcc/testsuite/g++.dg/opt/pr87475.C
  dd4b362edbe19cdf29a47f7bb90e6e2a  gcc/testsuite/g++.dg/opt/pr89187.C
  eea9eb29aff452d80dae491fa69bef1b  gcc/testsuite/g++.dg/opt/pr89188.C
+ 3e5f30b9a6314b526d4ca69c9d1c4b95  gcc/testsuite/g++.dg/opt/pr90026.C
+ 7842f073118719d55d2d03e047ef75de  gcc/testsuite/g++.dg/opt/pr90090.C
+ 6a8ecb5087f6e681c993119a988900ef  gcc/testsuite/g++.dg/opt/pr90187.C
+ 3d0bdb8c25ff94901cf3d1d3b911560a  gcc/testsuite/g++.dg/opt/pr91838.C
  1451eba24eea82cbd0c1ab87885c0f77  gcc/testsuite/g++.dg/opt/preinc1.C
  0841088f825be785d32663d712ecf675  gcc/testsuite/g++.dg/opt/ptrintsum1.C
  8ceccf2f02b3f64f372600e32148e146  gcc/testsuite/g++.dg/opt/ptrmem1.C
*************** bc5371eb8e8dcf79efb0889828991560  gcc/te
*** 16690,16697 ****
  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
! cdf089d667fbc8d619d3d71f858939b6  gcc/testsuite/g++.dg/other/i386-2.C
! ab8e94f519de0e2c0c53a7b0dc025bc0  gcc/testsuite/g++.dg/other/i386-3.C
  a4ad4c2cb3c1448496351241a77aedb7  gcc/testsuite/g++.dg/other/i386-4.C
  a32a5af1b4c57aabcbdaa817835a698d  gcc/testsuite/g++.dg/other/i386-7.C
  b3ef431f4cf4776208d7042aff2ddb83  gcc/testsuite/g++.dg/other/i386-8.C
--- 16785,16792 ----
  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
! c8e556f2f50c7d141a7af4bc139ecd6b  gcc/testsuite/g++.dg/other/i386-2.C
! 1c6aa25d2057137dafc4447e71a8c249  gcc/testsuite/g++.dg/other/i386-3.C
  a4ad4c2cb3c1448496351241a77aedb7  gcc/testsuite/g++.dg/other/i386-4.C
  a32a5af1b4c57aabcbdaa817835a698d  gcc/testsuite/g++.dg/other/i386-7.C
  b3ef431f4cf4776208d7042aff2ddb83  gcc/testsuite/g++.dg/other/i386-8.C
*************** f915e6694b9e2771166f40017bbcf352  gcc/te
*** 16803,16808 ****
--- 16898,16905 ----
  1005211d1d3f5bf76f7f8fff834a812f  gcc/testsuite/g++.dg/other/pr84792-1.C
  5bd2bbe902190f207cbdf2adf6dfbd60  gcc/testsuite/g++.dg/other/pr84792-2.C
  13c0075f5c1ed3cc04f6b8285a72ad36  gcc/testsuite/g++.dg/other/pr86669.C
+ e716b31d86bef260a0d00fd877fbc9cf  gcc/testsuite/g++.dg/other/pr88568.C
+ 64ff90efb0bd953cbcb7d0d41855c3b3  gcc/testsuite/g++.dg/other/pr92201.C
  2b96e0cda3aaa703c284fca6a0dd72c9  gcc/testsuite/g++.dg/other/pragma-re-1.C
  bdec0c9208af6ee3a9ab1f2c07d3ba19  gcc/testsuite/g++.dg/other/pragma-re-2.C
  f804e6064a0c7cd94d73f58ba8f6e5e0  gcc/testsuite/g++.dg/other/profile1.C
*************** b71aeb26aa9311659d87b7de1be00dcc  gcc/te
*** 16881,16893 ****
  494fd275c1d67e2ced55a80500cbedec  gcc/testsuite/g++.dg/overload/arg4.C
  2462790168c7dfd3a860d6ca77ecec30  gcc/testsuite/g++.dg/overload/arg5.C
  1e41ec11ca00276315dd010f205f9f90  gcc/testsuite/g++.dg/overload/autoptr1.C
  e549b742987ea4bf15156f2ff8b335da  gcc/testsuite/g++.dg/overload/builtin1.C
  3a79826fd499e94593a88f2c06436f3d  gcc/testsuite/g++.dg/overload/builtin2.C
  a0b8fd80bfd82adaa23c61a98df112fb  gcc/testsuite/g++.dg/overload/builtin3.C
  2808df88b455ae0dd789dc64c1e34b25  gcc/testsuite/g++.dg/overload/cond1.C
  5067a4c6731aae0336243d6867599e99  gcc/testsuite/g++.dg/overload/cond2.C
  6a731890845f26e24f289431fa9741d7  gcc/testsuite/g++.dg/overload/conv-op1.C
! a728119e5f9989ed57498bfb03e79ac0  gcc/testsuite/g++.dg/overload/conv-op2.C
  98a842578a616e44aeceebe22e18afd1  gcc/testsuite/g++.dg/overload/copy1.C
  b952933e6f52d065ea331a27b2e7852f  gcc/testsuite/g++.dg/overload/defarg1.C
  1fe01cdd569e9efdd1a736f06edff77b  gcc/testsuite/g++.dg/overload/defarg10.C
--- 16978,16991 ----
  494fd275c1d67e2ced55a80500cbedec  gcc/testsuite/g++.dg/overload/arg4.C
  2462790168c7dfd3a860d6ca77ecec30  gcc/testsuite/g++.dg/overload/arg5.C
  1e41ec11ca00276315dd010f205f9f90  gcc/testsuite/g++.dg/overload/autoptr1.C
+ 11ea1c2f872eed9fbbeefd46eb0f83a9  gcc/testsuite/g++.dg/overload/bit-field1.C
  e549b742987ea4bf15156f2ff8b335da  gcc/testsuite/g++.dg/overload/builtin1.C
  3a79826fd499e94593a88f2c06436f3d  gcc/testsuite/g++.dg/overload/builtin2.C
  a0b8fd80bfd82adaa23c61a98df112fb  gcc/testsuite/g++.dg/overload/builtin3.C
  2808df88b455ae0dd789dc64c1e34b25  gcc/testsuite/g++.dg/overload/cond1.C
  5067a4c6731aae0336243d6867599e99  gcc/testsuite/g++.dg/overload/cond2.C
  6a731890845f26e24f289431fa9741d7  gcc/testsuite/g++.dg/overload/conv-op1.C
! fbd791e505451bc9022bcc66d1461cd3  gcc/testsuite/g++.dg/overload/conv-op2.C
  98a842578a616e44aeceebe22e18afd1  gcc/testsuite/g++.dg/overload/copy1.C
  b952933e6f52d065ea331a27b2e7852f  gcc/testsuite/g++.dg/overload/defarg1.C
  1fe01cdd569e9efdd1a736f06edff77b  gcc/testsuite/g++.dg/overload/defarg10.C
*************** d41d8cd98f00b204e9800998ecf8427e  gcc/te
*** 17495,17500 ****
--- 17593,17600 ----
  a42f209088bbce8d3650be5966861b6b  gcc/testsuite/g++.dg/pch/pch.C
  95603c8965412870090ed14011f4b123  gcc/testsuite/g++.dg/pch/pch.Hs
  3a1f34b37f6b386e8bcb069dc289870a  gcc/testsuite/g++.dg/pch/pch.exp
+ a79b4c14973bc580e45325abf4c19b72  gcc/testsuite/g++.dg/pch/pr90326.C
+ 8733db8bb02cf7abd5d7d07601acc332  gcc/testsuite/g++.dg/pch/pr90326.Hs
  73dd9e7d0e0351552a2f49cc0882db47  gcc/testsuite/g++.dg/pch/static-1.C
  4aaad0cfa4436b8cd8b37b1bf218edc8  gcc/testsuite/g++.dg/pch/static-1.Hs
  a5379c2bad433698a01b3bc2d5473a2e  gcc/testsuite/g++.dg/pch/system-1.C
*************** dd5b895f9e8e377b3fc861eecf9bdbf7  gcc/te
*** 17644,17650 ****
  ee53985be6eef8ab3747c18a09b14caa  gcc/testsuite/g++.dg/pr71624.C
  24ad5a5a081cc68d9ccdaab0a8c765b2  gcc/testsuite/g++.dg/pr71633.C
  8756c72da60c2ac8cdddc20291df82e3  gcc/testsuite/g++.dg/pr71655.C
! 61b9ffe86576d2921bd026841e1942db  gcc/testsuite/g++.dg/pr71694.C
  1202ce040862ab92e1f0e7f8da8f372a  gcc/testsuite/g++.dg/pr71973-1.C
  4d7bbea7ad49c81e67fcd756ddcfd12f  gcc/testsuite/g++.dg/pr71973-2.C
  77a4316445a154cba3284882042820df  gcc/testsuite/g++.dg/pr71973-3.C
--- 17744,17750 ----
  ee53985be6eef8ab3747c18a09b14caa  gcc/testsuite/g++.dg/pr71624.C
  24ad5a5a081cc68d9ccdaab0a8c765b2  gcc/testsuite/g++.dg/pr71633.C
  8756c72da60c2ac8cdddc20291df82e3  gcc/testsuite/g++.dg/pr71655.C
! e71ffaaf0dda0a585015ab52583b2b01  gcc/testsuite/g++.dg/pr71694.C
  1202ce040862ab92e1f0e7f8da8f372a  gcc/testsuite/g++.dg/pr71973-1.C
  4d7bbea7ad49c81e67fcd756ddcfd12f  gcc/testsuite/g++.dg/pr71973-2.C
  77a4316445a154cba3284882042820df  gcc/testsuite/g++.dg/pr71973-3.C
*************** dcc31f0f329aae582ac1148fb671567d  gcc/te
*** 17701,17709 ****
--- 17801,17813 ----
  f6b4855994778cc13f15da54003f165c  gcc/testsuite/g++.dg/pr85515-2.C
  2844a2c2d799ba21b91bfa9ca470fa9e  gcc/testsuite/g++.dg/pr85657.C
  fed9311785d1724d80180ea16a9d6995  gcc/testsuite/g++.dg/pr86374.C
+ 53b2b9b9c56ad36290f330d453afdfbf  gcc/testsuite/g++.dg/pr86747.C
  2f86b13bd3ca2c1d74d4969c2f53c08e  gcc/testsuite/g++.dg/pr87185.C
+ d30d77c47257592a098c491dc29a80b1  gcc/testsuite/g++.dg/pr87770.C
  d0caf9e5362287726dc95d5165f20feb  gcc/testsuite/g++.dg/pr88217.C
  f44929163adaa17a52ef23e11535a9dd  gcc/testsuite/g++.dg/pr88998.C
+ 8d5a3269887286ec688e05d86356d904  gcc/testsuite/g++.dg/pr91173.C
+ 6e8d6b516059e08a5442ff7a7f944b34  gcc/testsuite/g++.dg/pr92022.C
  80e57549741422847fb3acbd80e38ea8  gcc/testsuite/g++.dg/predict-loop-exit-1.C
  b6e066cc704bbace8cbfa3d84d6416c9  gcc/testsuite/g++.dg/predict-loop-exit-2.C
  2ee9d3e34345a096b88c9c1968c037c7  gcc/testsuite/g++.dg/predict-loop-exit-3.C
*************** b8b893e1844c502297d1e4e9591779ef  gcc/te
*** 18778,18783 ****
--- 18882,18888 ----
  a7bf058a51ee7236a37311a73bf15c69  gcc/testsuite/g++.dg/template/scope3.C
  b3e926a09671bb6d64fb4f63dde975e0  gcc/testsuite/g++.dg/template/scope4.C
  77939ad3c1d2d8dd6718190f59d34cce  gcc/testsuite/g++.dg/template/scope5.C
+ 0186275439ee5dd117414c26c3ceb2be  gcc/testsuite/g++.dg/template/scope6.C
  72ffb989291c9247b76445d291858548  gcc/testsuite/g++.dg/template/sfinae-dr657.C
  d4a6fe33f1456d026d068d25f316aa9c  gcc/testsuite/g++.dg/template/sfinae1.C
  08e40e1ccd7635d093d248a8b6295788  gcc/testsuite/g++.dg/template/sfinae10.C
*************** ec6c7e65d57e2a70cb1a6852131a0f16  gcc/te
*** 19104,19111 ****
  abcd9d688bd97352cf2201ae04eb0bcd  gcc/testsuite/g++.dg/tls/pr66808.C
  5b67d09a03c0a87ddd8fb4065b354311  gcc/testsuite/g++.dg/tls/pr69000.C
  f4ebaa2e9bc5b065a4c81b1ec15efe2c  gcc/testsuite/g++.dg/tls/pr77285-1.C
! e0fc234d5008e949006f7c1d2462ab2d  gcc/testsuite/g++.dg/tls/pr77285-2.C
  98121ea9f83550dc4f25814e30c3a21d  gcc/testsuite/g++.dg/tls/pr79288.C
  a9720fe58f11ddd0e2a21ab5df5a77bf  gcc/testsuite/g++.dg/tls/static-1.C
  29ba155db4cb83d5330b9a806c2cd296  gcc/testsuite/g++.dg/tls/static-1a.cc
  40f776e4d949ac2761cee0de2064d991  gcc/testsuite/g++.dg/tls/static2.C
--- 19209,19217 ----
  abcd9d688bd97352cf2201ae04eb0bcd  gcc/testsuite/g++.dg/tls/pr66808.C
  5b67d09a03c0a87ddd8fb4065b354311  gcc/testsuite/g++.dg/tls/pr69000.C
  f4ebaa2e9bc5b065a4c81b1ec15efe2c  gcc/testsuite/g++.dg/tls/pr77285-1.C
! 2cbcc4da79d109e544b95de73592684e  gcc/testsuite/g++.dg/tls/pr77285-2.C
  98121ea9f83550dc4f25814e30c3a21d  gcc/testsuite/g++.dg/tls/pr79288.C
+ eaa257e5d01462b4484236d4e40a6e81  gcc/testsuite/g++.dg/tls/pr85400.C
  a9720fe58f11ddd0e2a21ab5df5a77bf  gcc/testsuite/g++.dg/tls/static-1.C
  29ba155db4cb83d5330b9a806c2cd296  gcc/testsuite/g++.dg/tls/static-1a.cc
  40f776e4d949ac2761cee0de2064d991  gcc/testsuite/g++.dg/tls/static2.C
*************** e4cfba8fd55d0168821bd21efa0237d8  gcc/te
*** 19122,19127 ****
--- 19228,19248 ----
  99dccd364a36e6a92aff0c835b1005ec  gcc/testsuite/g++.dg/tls/thread_local-wrap4.C
  29af05035afeff433899afc9dd95e242  gcc/testsuite/g++.dg/tls/thread_local1.C
  8c04798ad83e68ad71e341845cf0aeea  gcc/testsuite/g++.dg/tls/thread_local10.C
+ d51480fe7dc0200fc725bf275a051cb5  gcc/testsuite/g++.dg/tls/thread_local11.C
+ 8d34f091643f50841b92580e83aa27fb  gcc/testsuite/g++.dg/tls/thread_local11.h
+ 9ba00c6b2ff009c3c09ac3dc8f87325b  gcc/testsuite/g++.dg/tls/thread_local11a.C
+ 4ee3a501daaa3f91b5a4941105652046  gcc/testsuite/g++.dg/tls/thread_local12a.C
+ 07a03169e8eaaa6a65499c38ca8154a8  gcc/testsuite/g++.dg/tls/thread_local12b.C
+ cfa272153ce2e8b87bddf23c6c971e83  gcc/testsuite/g++.dg/tls/thread_local12c.C
+ 7d539c2fee82717ebf1ad60ba091e890  gcc/testsuite/g++.dg/tls/thread_local12d.C
+ 2f53ea521803b3719811b517b1071942  gcc/testsuite/g++.dg/tls/thread_local12e.C
+ b10c9b604da95af284abb90c70bbe962  gcc/testsuite/g++.dg/tls/thread_local12f.C
+ 2852fc0e74cee314c443e70cb6a4dbf0  gcc/testsuite/g++.dg/tls/thread_local12g.C
+ eec5b49db7ec33fc099a967e0568bb60  gcc/testsuite/g++.dg/tls/thread_local12h.C
+ f7e4853292654f0af6a0a460b8924add  gcc/testsuite/g++.dg/tls/thread_local12i.C
+ 6e16acccf0c9f3e11f613dd140679e49  gcc/testsuite/g++.dg/tls/thread_local12j.C
+ 9eb8b3d800f83f9d7d869d484abd19e6  gcc/testsuite/g++.dg/tls/thread_local12k.C
+ b6d15debf41ad15b105889629ec239cc  gcc/testsuite/g++.dg/tls/thread_local12l.C
  24b7dce2c6b463d883c54b5a853ce0ad  gcc/testsuite/g++.dg/tls/thread_local2.C
  6c980c168dd76bd2823f2ec310b5f47b  gcc/testsuite/g++.dg/tls/thread_local2g.C
  6c7d3f08d2224c4d24f97029d8604655  gcc/testsuite/g++.dg/tls/thread_local3.C
*************** c004bb94adc4b3e0994cc5b6d5ebfb2c  gcc/te
*** 19634,19639 ****
--- 19755,19767 ----
  dbe58e15424b476b932c58cb5bc16046  gcc/testsuite/g++.dg/torture/pr88149.C
  cf4f053f829cc77941d9499636dba788  gcc/testsuite/g++.dg/torture/pr88861.C
  28251f0199f94a1606cac696e1db484b  gcc/testsuite/g++.dg/torture/pr89303.C
+ 6295f2521ee059610fe7d8e12800e20b  gcc/testsuite/g++.dg/torture/pr89698.C
+ 922274fa2bea46eb7cee843b1f139ab8  gcc/testsuite/g++.dg/torture/pr90194.C
+ 38d5ed9578a5910b56d57c30c896f01f  gcc/testsuite/g++.dg/torture/pr90313.cc
+ 8512e0d79849c3153a1290024a552a14  gcc/testsuite/g++.dg/torture/pr91280.C
+ 7782e7a66949621445617364c753a54f  gcc/testsuite/g++.dg/torture/pr91355.C
+ 1779028417f5f8e86e290051fd916516  gcc/testsuite/g++.dg/torture/pr92384.C
+ 128505e31d0c3cfec9b59aafee1a7c1a  gcc/testsuite/g++.dg/torture/pr93246.C
  e47702cb1ff0caccc17257524e8667dc  gcc/testsuite/g++.dg/torture/predcom-1.C
  d28910105d9c9253d94d70eacd5e19d4  gcc/testsuite/g++.dg/torture/pushpop_macro.C
  a1b47b9c3e69d79d1895ebc4fd11032b  gcc/testsuite/g++.dg/torture/stackalign/check.h
*************** a6b6c621d64b00088b0f48ed440c6eef  gcc/te
*** 19680,19686 ****
  32deb52456e2c877b19ce1b44739b3e1  gcc/testsuite/g++.dg/torture/vshuf-v8hi.C
  b6c068331ea8c597c13f4878202542bd  gcc/testsuite/g++.dg/torture/vshuf-v8qi.C
  fd3e16a63f00c852c7ac13cbaf5de3b5  gcc/testsuite/g++.dg/torture/vshuf-v8si.C
! 95c8c384ea0250791829fd367ecc00ed  gcc/testsuite/g++.dg/tree-prof/devirt.C
  80d09170dea54500770122f27eddf44e  gcc/testsuite/g++.dg/tree-prof/indir-call-prof-2.C
  a8ac3db48c22a7a54522feb6797d420c  gcc/testsuite/g++.dg/tree-prof/indir-call-prof.C
  2c6a8956c863c089e403d87ce622c9b5  gcc/testsuite/g++.dg/tree-prof/inline_mismatch_args.C
--- 19808,19814 ----
  32deb52456e2c877b19ce1b44739b3e1  gcc/testsuite/g++.dg/torture/vshuf-v8hi.C
  b6c068331ea8c597c13f4878202542bd  gcc/testsuite/g++.dg/torture/vshuf-v8qi.C
  fd3e16a63f00c852c7ac13cbaf5de3b5  gcc/testsuite/g++.dg/torture/vshuf-v8si.C
! 861708a27c776240cb0b1d6844d5b803  gcc/testsuite/g++.dg/tree-prof/devirt.C
  80d09170dea54500770122f27eddf44e  gcc/testsuite/g++.dg/tree-prof/indir-call-prof-2.C
  a8ac3db48c22a7a54522feb6797d420c  gcc/testsuite/g++.dg/tree-prof/indir-call-prof.C
  2c6a8956c863c089e403d87ce622c9b5  gcc/testsuite/g++.dg/tree-prof/inline_mismatch_args.C
*************** a8fec5c2428ff5aa3f865ba34c0b76b8  gcc/te
*** 19861,19866 ****
--- 19989,19995 ----
  07328ee6469ac64e4bd4807c2a72bd66  gcc/testsuite/g++.dg/tree-ssa/pr81719.C
  8f34a42b700068a3be53751206c5e499  gcc/testsuite/g++.dg/tree-ssa/pr82294.C
  99096ec4f30fcdb55089995ea662cded  gcc/testsuite/g++.dg/tree-ssa/pr83523.C
+ b275e1ed3abd90cc7e8e421e8c6062b9  gcc/testsuite/g++.dg/tree-ssa/pr87008.C
  cfcb017784f2c8d78d4dc8299526d486  gcc/testsuite/g++.dg/tree-ssa/pr87436.C
  0a76fdd924fd4c13bb8cfcecab0cb88a  gcc/testsuite/g++.dg/tree-ssa/pr8781.C
  b8201bfa7e55c2eb8fbf876e25c8e4a4  gcc/testsuite/g++.dg/tree-ssa/pred-1.C
*************** cbba22e9568932c7e9798b4143e8babf  gcc/te
*** 19879,19884 ****
--- 20008,20014 ----
  3fc97853b7f5a33a82d43b9c8b97e80a  gcc/testsuite/g++.dg/tree-ssa/ssa-sra-3.C
  21d667243f1873cc74a1060b9e5a0f15  gcc/testsuite/g++.dg/tree-ssa/ssa-store-ccp-1.C
  49ee787a379cb6910b9e5718ae694e10  gcc/testsuite/g++.dg/tree-ssa/stabilize1.C
+ 2a5935f325533fa199bc7f5e3b2b36d5  gcc/testsuite/g++.dg/tree-ssa/tail-call-1.C
  0fb08fd6d187247ae5872931e884061c  gcc/testsuite/g++.dg/tree-ssa/tmmti.C
  67826d6c8638dba46a4b37835998f34a  gcc/testsuite/g++.dg/tree-ssa/volatile1.C
  927ac273b42ce90eecf5fb0ad135f1c0  gcc/testsuite/g++.dg/tree-ssa/volatile2.C
*************** b1a38b150fef25f02239b481561ad148  gcc/te
*** 19992,19997 ****
--- 20122,20128 ----
  7871fdd28f8d26bc692ef38fd24d6573  gcc/testsuite/g++.dg/ubsan/vptr-11.C
  7ea8c58d0c37f70dfea7b71ab85c3a47  gcc/testsuite/g++.dg/ubsan/vptr-12.C
  15e8bf03defcc64ccdf3ff070adfbf9c  gcc/testsuite/g++.dg/ubsan/vptr-13.C
+ eb65a43bfca2604f5a8b2e2f09212f46  gcc/testsuite/g++.dg/ubsan/vptr-14.C
  cef046f562c0a23eb331cea94cd5b44f  gcc/testsuite/g++.dg/ubsan/vptr-2.C
  729147822cd9bf5bf718456c1dbff28d  gcc/testsuite/g++.dg/ubsan/vptr-3.C
  6d748dbe9831f330d94427b44994cd9f  gcc/testsuite/g++.dg/ubsan/vptr-4.C
*************** be3d4fa6911580b9269c3ea654b72a7e  gcc/te
*** 20460,20465 ****
--- 20591,20597 ----
  8cdb559ffcb9d887ccbede485723468a  gcc/testsuite/g++.dg/warn/conv2.C
  cc281c397d45da8c573eee459fc65fa7  gcc/testsuite/g++.dg/warn/conv3.C
  e668b1c05f8d62f23aa769b40e21b385  gcc/testsuite/g++.dg/warn/conv4.C
+ 7478d9dc40665955e770c76d8277b49c  gcc/testsuite/g++.dg/warn/conv5.C
  a13aaa30037789e1fbc1e83bdcbaff93  gcc/testsuite/g++.dg/warn/conversion-function-1.C
  8b6a24e6dff932758440714c76e47fa2  gcc/testsuite/g++.dg/warn/conversion-real-integer-3.h
  d5fcd483303360915cb089b93fa1cd74  gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-1.C
*************** a74fd600765c662baf7c526fbc93a717  gcc/te
*** 24367,24372 ****
--- 24499,24505 ----
  9b8a22271d9f19237c0612402fc99963  gcc/testsuite/gcc.c-torture/compile/20161124-1.c
  ba7ecb97d3019d0ba80490d9c7b12ca8  gcc/testsuite/gcc.c-torture/compile/20170419-1.c
  4de7411043b03c153c5efe80020e17d5  gcc/testsuite/gcc.c-torture/compile/20180309-1.c
+ 6c8411f42f9f7fcab63cbfd6cba8eb38  gcc/testsuite/gcc.c-torture/compile/20191108-1.c
  ebed49e0868fa97d60c12191fa496d07  gcc/testsuite/gcc.c-torture/compile/386.c
  9681568709601cbb39a156fa04526182  gcc/testsuite/gcc.c-torture/compile/86.c
  ab32e65ea5976f9083dc8234dae65343  gcc/testsuite/gcc.c-torture/compile/900116-1.c
*************** d2abfdabdbeb6670f7a517aaa74714b3  gcc/te
*** 25480,25486 ****
  231fb44a71ba7441d73d3169fe8d727a  gcc/testsuite/gcc.c-torture/compile/pr72742.c
  4804583cdbcf43906c92312b12f102ec  gcc/testsuite/gcc.c-torture/compile/pr72749.c
  05499a956abf0168b43207b10ff55b6f  gcc/testsuite/gcc.c-torture/compile/pr72771.c
! bd9f10a73e289f0fdac2ce08641816f0  gcc/testsuite/gcc.c-torture/compile/pr72802.c
  69f131eecfe2e8d743fa8534acd3d542  gcc/testsuite/gcc.c-torture/compile/pr77901.c
  1b4de683f3cdcab42ba24cd8b0866196  gcc/testsuite/gcc.c-torture/compile/pr77929.c
  aadd21b68c00eaa36b449d0c7b5c4a14  gcc/testsuite/gcc.c-torture/compile/pr78162.c
--- 25613,25619 ----
  231fb44a71ba7441d73d3169fe8d727a  gcc/testsuite/gcc.c-torture/compile/pr72742.c
  4804583cdbcf43906c92312b12f102ec  gcc/testsuite/gcc.c-torture/compile/pr72749.c
  05499a956abf0168b43207b10ff55b6f  gcc/testsuite/gcc.c-torture/compile/pr72771.c
! cc75623377210ae96adbf2222955e9c4  gcc/testsuite/gcc.c-torture/compile/pr72802.c
  69f131eecfe2e8d743fa8534acd3d542  gcc/testsuite/gcc.c-torture/compile/pr77901.c
  1b4de683f3cdcab42ba24cd8b0866196  gcc/testsuite/gcc.c-torture/compile/pr77929.c
  aadd21b68c00eaa36b449d0c7b5c4a14  gcc/testsuite/gcc.c-torture/compile/pr78162.c
*************** eb0762c46d9f677b37463d0ebd0f51e1  gcc/te
*** 25551,25556 ****
--- 25684,25704 ----
  5e2cb965bc8d621dfa1a8d8dd4e3dce9  gcc/testsuite/gcc.c-torture/compile/pr86123.c
  c07cb6bbf144841ec62369603efc6e0b  gcc/testsuite/gcc.c-torture/compile/pr87473.c
  7bb746aff7daab01a69c68ac718afce2  gcc/testsuite/gcc.c-torture/compile/pr87647.c
+ d16a0436ee4e7c019d745cad343ff18b  gcc/testsuite/gcc.c-torture/compile/pr89412.c
+ 7e90de04544a1d8e3c372e47c2627c60  gcc/testsuite/gcc.c-torture/compile/pr89655.c
+ fc86c5909e9a80383dab6366a0f8648d  gcc/testsuite/gcc.c-torture/compile/pr89663-1.c
+ 4179c42c98ca2dbabe246deb1ea1ad0e  gcc/testsuite/gcc.c-torture/compile/pr89663-2.c
+ 85c74cdcb2f35d038f3606a817979061  gcc/testsuite/gcc.c-torture/compile/pr89703-1.c
+ 834bb0f0fe637b3f72cd75082e139b0a  gcc/testsuite/gcc.c-torture/compile/pr89703-2.c
+ 9e0af4f9e229aa8a0151b863c40f3072  gcc/testsuite/gcc.c-torture/compile/pr89998-1.c
+ 28107e4eddc0810b8c90657b7cca7ab0  gcc/testsuite/gcc.c-torture/compile/pr89998-2.c
+ 99639c63132deca7d94430de65a54739  gcc/testsuite/gcc.c-torture/compile/pr90139.c
+ e11a1416fe433daf1bcec941d4d1ce98  gcc/testsuite/gcc.c-torture/compile/pr90840.c
+ a030cf60882ea26ac44f293f1ecbd5e0  gcc/testsuite/gcc.c-torture/compile/pr91001.c
+ 662f32f637e1c11befa59dbfbf1e1d6e  gcc/testsuite/gcc.c-torture/compile/pr92056.c
+ dc8f609dbb0db163caa0e7adfc5d9240  gcc/testsuite/gcc.c-torture/compile/pr93333.c
+ 156dbb8af2805f1d7b1d39d0088f5b2f  gcc/testsuite/gcc.c-torture/compile/pr93348-1.c
+ 620d5c7d92e3c8bc73e14d8ac589036a  gcc/testsuite/gcc.c-torture/compile/pr93505.c
  9611ffa8936d9c80d0a9ccde8dd093b2  gcc/testsuite/gcc.c-torture/compile/pret-arg.c
  b9e6ce52b90320c1c3803c25113844c5  gcc/testsuite/gcc.c-torture/compile/pta-1.c
  ed716c1d1727fc2c748162e0cbc4ee47  gcc/testsuite/gcc.c-torture/compile/ptr-conv-1.c
*************** c7ff39348e400954a9509ab75b431894  gcc/te
*** 26138,26143 ****
--- 26286,26295 ----
  c498b868df794aac4975b6925c3f0d24  gcc/testsuite/gcc.c-torture/execute/20180131-1.c
  a024382373a506e7761148108043c429  gcc/testsuite/gcc.c-torture/execute/20180226-1.c
  03e6abf4c7580822fb8fcbb32c3bb34a  gcc/testsuite/gcc.c-torture/execute/20181120-1.c
+ ecbbfd4b186a0dd8448d96f39a543fb4  gcc/testsuite/gcc.c-torture/execute/20190228-1.c
+ 0e7e458f83ab35a789bf9cae2f121b53  gcc/testsuite/gcc.c-torture/execute/20190820-1.c
+ 48e80df21591c4156020fdd4a386b2f4  gcc/testsuite/gcc.c-torture/execute/20190901-1.c
+ 2e368329bfad3d99e406eade7d55032d  gcc/testsuite/gcc.c-torture/execute/20191023-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
*************** caa74354806f94b1777d3d438547d909  gcc/te
*** 26474,26480 ****
  d7d9ce89ee3d3fe0e8938f62790f051e  gcc/testsuite/gcc.c-torture/execute/builtins/abs-2.c
  1dda6f7a5d9ce23a5db5f59c430ae29e  gcc/testsuite/gcc.c-torture/execute/builtins/abs-3-lib.c
  8784d3bd9b264b3c2abfb7b7ea25ccb6  gcc/testsuite/gcc.c-torture/execute/builtins/abs-3.c
! 5a5a8049360b0b34c2b64e6928160e1d  gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
  82dc8c0cc07405b06eb5eee9b43cb713  gcc/testsuite/gcc.c-torture/execute/builtins/chk.h
  f36e146a2aececdc84d9199d53a363ec  gcc/testsuite/gcc.c-torture/execute/builtins/complex-1-lib.c
  8b5a662c0134cd00115a5866e1c0b6c9  gcc/testsuite/gcc.c-torture/execute/builtins/complex-1.c
--- 26626,26632 ----
  d7d9ce89ee3d3fe0e8938f62790f051e  gcc/testsuite/gcc.c-torture/execute/builtins/abs-2.c
  1dda6f7a5d9ce23a5db5f59c430ae29e  gcc/testsuite/gcc.c-torture/execute/builtins/abs-3-lib.c
  8784d3bd9b264b3c2abfb7b7ea25ccb6  gcc/testsuite/gcc.c-torture/execute/builtins/abs-3.c
! 689008fc242c04a28772d765336c0a24  gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
  82dc8c0cc07405b06eb5eee9b43cb713  gcc/testsuite/gcc.c-torture/execute/builtins/chk.h
  f36e146a2aececdc84d9199d53a363ec  gcc/testsuite/gcc.c-torture/execute/builtins/complex-1-lib.c
  8b5a662c0134cd00115a5866e1c0b6c9  gcc/testsuite/gcc.c-torture/execute/builtins/complex-1.c
*************** b0302a41f89aa28cacf4f6f513b724d5  gcc/te
*** 27296,27301 ****
--- 27448,27464 ----
  be5244d3595e8650a26f33594260da75  gcc/testsuite/gcc.c-torture/execute/pr87623.c
  02748f1c49306654aaf30f2433dce5e7  gcc/testsuite/gcc.c-torture/execute/pr88739.c
  f864350b54f06af7e11f09f29c9e0976  gcc/testsuite/gcc.c-torture/execute/pr89195.c
+ 5235b3e2d6dd776b53d6a44ba5933a8a  gcc/testsuite/gcc.c-torture/execute/pr90949.c
+ 7f239d011b9e98943acdc8e3437ed19c  gcc/testsuite/gcc.c-torture/execute/pr91137.c
+ 3d5a788c848a67ade7bd18ab62494a1a  gcc/testsuite/gcc.c-torture/execute/pr91450-1.c
+ 7a2c17f605bcf1dd060a1a6ea28c2426  gcc/testsuite/gcc.c-torture/execute/pr91450-2.c
+ a11f543d4a1ab92e9bc0bd9bcd9816f5  gcc/testsuite/gcc.c-torture/execute/pr92904.c
+ 90c78675453ac190d2a254a078d099c1  gcc/testsuite/gcc.c-torture/execute/pr93402.c
+ 174f51890ae625613e2e537d9dcddde5  gcc/testsuite/gcc.c-torture/execute/pr93434.c
+ 13a74d12f5839ced4211c221b624b70f  gcc/testsuite/gcc.c-torture/execute/pr93744-1.c
+ 03c35d47d6c95b626a3218270d720ae5  gcc/testsuite/gcc.c-torture/execute/pr93744-2.c
+ 0718f4fea607ff381b848dbf0d8407ed  gcc/testsuite/gcc.c-torture/execute/pr93744-3.c
+ b5fa8dac56892459f774433ef510a1ef  gcc/testsuite/gcc.c-torture/execute/pr93908.c
  8587088d2eab0e974762ba6cd20b4f04  gcc/testsuite/gcc.c-torture/execute/printf-1.c
  9e89c9802e280d635a7bc6756bbaf6e6  gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c
  f397d221ccf3a7ce631cf42078dfadb5  gcc/testsuite/gcc.c-torture/execute/pta-field-1.c
*************** b4a524baa9581904a5f7b7e0d7ca6a76  gcc/te
*** 27673,27678 ****
--- 27836,27842 ----
  dedff38471f8963dc7ff6b71f19af4e2  gcc/testsuite/gcc.dg/Warray-bounds-26.c
  57d135c63b4ee7667d3bee8da66ddf5e  gcc/testsuite/gcc.dg/Warray-bounds-27.c
  840b91726d80efd539ceaa9d94e030d3  gcc/testsuite/gcc.dg/Warray-bounds-3.c
+ e7237b88231aff2adb46cd199c02550b  gcc/testsuite/gcc.dg/Warray-bounds-38.c
  84a306ba6a47b60426131bffe9ec7a0c  gcc/testsuite/gcc.dg/Warray-bounds-4.c
  6a53ea6731c8e33605392ac843284e1c  gcc/testsuite/gcc.dg/Warray-bounds-5.c
  80c3d31a9d8de2d05bed1c5c1e97d4c5  gcc/testsuite/gcc.dg/Warray-bounds-6.c
*************** cf21dd47d3e7a7fd332e4ebdad43f47f  gcc/te
*** 27797,27803 ****
  d45570f5347d0d2fceb2f46d5bb28195  gcc/testsuite/gcc.dg/Wno-c++-compat.c
  7f60b5af8c1dff4f89ed11fab109c8b4  gcc/testsuite/gcc.dg/Wno-frame-address.c
  78b26e55f8111808885390fc48d39f07  gcc/testsuite/gcc.dg/Wno-pointer-sign.c
! 32a3988bca4d90d3b290e472fb83a91a  gcc/testsuite/gcc.dg/Wnonnull.c
  d7f40d768e2fdadb8ed5f332424b19cf  gcc/testsuite/gcc.dg/Wobjsize-1.c
  964f8252363c2458931200da17eaaa36  gcc/testsuite/gcc.dg/Wobjsize-1.h
  b92f8933f909c18a277ea167043b2847  gcc/testsuite/gcc.dg/Wold-style-definition-1.c
--- 27961,27967 ----
  d45570f5347d0d2fceb2f46d5bb28195  gcc/testsuite/gcc.dg/Wno-c++-compat.c
  7f60b5af8c1dff4f89ed11fab109c8b4  gcc/testsuite/gcc.dg/Wno-frame-address.c
  78b26e55f8111808885390fc48d39f07  gcc/testsuite/gcc.dg/Wno-pointer-sign.c
! 12ac8bc4beaf9edbdf04979c8dfcb9e8  gcc/testsuite/gcc.dg/Wnonnull.c
  d7f40d768e2fdadb8ed5f332424b19cf  gcc/testsuite/gcc.dg/Wobjsize-1.c
  964f8252363c2458931200da17eaaa36  gcc/testsuite/gcc.dg/Wobjsize-1.h
  b92f8933f909c18a277ea167043b2847  gcc/testsuite/gcc.dg/Wold-style-definition-1.c
*************** be349c0f6745f738b75eebe351eb5ce7  gcc/te
*** 27855,27864 ****
  5c7cf282f4ade91736b5de962360e5b3  gcc/testsuite/gcc.dg/Wrestrict-13.c
  96c634fc42f32d2a1dc101e8a5820792  gcc/testsuite/gcc.dg/Wrestrict-14.c
  edb85a6dc78ac1a3ce7b7783eff620d4  gcc/testsuite/gcc.dg/Wrestrict-15.c
  7d01961948e81451fba10af184d093f0  gcc/testsuite/gcc.dg/Wrestrict-2.c
  8419743602ff50406cde80f5966c551d  gcc/testsuite/gcc.dg/Wrestrict-3.c
  07f4f332cda46221955286f0fd5cbebf  gcc/testsuite/gcc.dg/Wrestrict-4.c
! bf1c529ffa4716ac2cb9305b8237395b  gcc/testsuite/gcc.dg/Wrestrict-5.c
  83f097af71656455067f53c0f31b61dd  gcc/testsuite/gcc.dg/Wrestrict-6.c
  fe0626428135706f333c543b692a92d1  gcc/testsuite/gcc.dg/Wrestrict-7.c
  ca4f1b5ab467df7523ff4071434ec4df  gcc/testsuite/gcc.dg/Wrestrict-8.c
--- 28019,28029 ----
  5c7cf282f4ade91736b5de962360e5b3  gcc/testsuite/gcc.dg/Wrestrict-13.c
  96c634fc42f32d2a1dc101e8a5820792  gcc/testsuite/gcc.dg/Wrestrict-14.c
  edb85a6dc78ac1a3ce7b7783eff620d4  gcc/testsuite/gcc.dg/Wrestrict-15.c
+ 3f0ddf7c21de29e84429165c4bd8fd4e  gcc/testsuite/gcc.dg/Wrestrict-19.c
  7d01961948e81451fba10af184d093f0  gcc/testsuite/gcc.dg/Wrestrict-2.c
  8419743602ff50406cde80f5966c551d  gcc/testsuite/gcc.dg/Wrestrict-3.c
  07f4f332cda46221955286f0fd5cbebf  gcc/testsuite/gcc.dg/Wrestrict-4.c
! aa49b4aca6859af0aaabacf328e0fba7  gcc/testsuite/gcc.dg/Wrestrict-5.c
  83f097af71656455067f53c0f31b61dd  gcc/testsuite/gcc.dg/Wrestrict-6.c
  fe0626428135706f333c543b692a92d1  gcc/testsuite/gcc.dg/Wrestrict-7.c
  ca4f1b5ab467df7523ff4071434ec4df  gcc/testsuite/gcc.dg/Wrestrict-8.c
*************** a345c8424d097325ceddaefa74a387d5  gcc/te
*** 28276,28281 ****
--- 28441,28447 ----
  d4c6704efcf13b06e8298878fac4997e  gcc/testsuite/gcc.dg/autopar/pr69110.c
  0a5194faeff35d018f0826c0ededa45b  gcc/testsuite/gcc.dg/autopar/pr69426.c
  3e6146dc074b29e53924ebb8947bcb10  gcc/testsuite/gcc.dg/autopar/pr83957.c
+ 9f783e9011aea086e00128ca4b6390a4  gcc/testsuite/gcc.dg/autopar/pr91162.c
  cfcabb1d73fb9955200dafe2f7cd4eda  gcc/testsuite/gcc.dg/autopar/reduc-1.c
  bd8dcababb2b878b4b2e6a7b44270723  gcc/testsuite/gcc.dg/autopar/reduc-1char.c
  faacb19babd5a7b53cfd57e60279fa11  gcc/testsuite/gcc.dg/autopar/reduc-1short.c
*************** d8272e1d572d33a852614f0a74a31345  gcc/te
*** 28522,28527 ****
--- 28688,28694 ----
  f9262f126c900d76cdb16f0afbfc600f  gcc/testsuite/gcc.dg/c11-noreturn-5.c
  d595f49307eb5192b976a26bca7a9c80  gcc/testsuite/gcc.dg/c11-pointer-float-1.c
  efe9f8d43440cd3d52de742b3f407e19  gcc/testsuite/gcc.dg/c11-static-assert-1.c
+ 7108e0131dd58f0a0943232e07ae7a08  gcc/testsuite/gcc.dg/c11-static-assert-10.c
  1e1c0e1555e17610aa6e95027b7f72c1  gcc/testsuite/gcc.dg/c11-static-assert-2.c
  ae86538f5b127d2943d01429510fe5ee  gcc/testsuite/gcc.dg/c11-static-assert-3.c
  d7ef98239e7c17e364c10debfa89d9d2  gcc/testsuite/gcc.dg/c11-static-assert-4.c
*************** ba2db177292eaaf55d14598ece867f4d  gcc/te
*** 28636,28641 ****
--- 28803,28809 ----
  351160cb991a2541a836d78ff5a3d7a7  gcc/testsuite/gcc.dg/c99-const-expr-12.c
  be44655002ff53b455ed10f2b01571fe  gcc/testsuite/gcc.dg/c99-const-expr-13.c
  601921df5dca967e56d6ff0c58d11e1a  gcc/testsuite/gcc.dg/c99-const-expr-14.c
+ 59aa40df8c80917e30f6ec6cca1ecd5b  gcc/testsuite/gcc.dg/c99-const-expr-15.c
  2b0ea14af55d8b5c0efa00351b0200a5  gcc/testsuite/gcc.dg/c99-const-expr-2.c
  1a41201d98b7cec1fa4768ff010f2243  gcc/testsuite/gcc.dg/c99-const-expr-3.c
  8a0c3caa2946e119d2ac9291c14b168f  gcc/testsuite/gcc.dg/c99-const-expr-4.c
*************** fefb3e35a8a1d6bc164a6eb33d7fdbb6  gcc/te
*** 29274,29280 ****
  99a74985c69613ac4a42ee34fb74051f  gcc/testsuite/gcc.dg/cpp/include5.c
  407474d1770120e01043176212576177  gcc/testsuite/gcc.dg/cpp/include6.c
  b169efc722fc4f26173ce092c4172e89  gcc/testsuite/gcc.dg/cpp/include7.c
! 10a60705ad3a511b1b8d4078bd299c37  gcc/testsuite/gcc.dg/cpp/isysroot-1.c
  d2356c14719220729fca6a1807576fd6  gcc/testsuite/gcc.dg/cpp/isysroot-2.c
  6aec7ee07d2c4b1e4dbca7996c29c33d  gcc/testsuite/gcc.dg/cpp/lexident.c
  ed521ab2015dc11905c0db0f47732ede  gcc/testsuite/gcc.dg/cpp/lexnum.c
--- 29442,29448 ----
  99a74985c69613ac4a42ee34fb74051f  gcc/testsuite/gcc.dg/cpp/include5.c
  407474d1770120e01043176212576177  gcc/testsuite/gcc.dg/cpp/include6.c
  b169efc722fc4f26173ce092c4172e89  gcc/testsuite/gcc.dg/cpp/include7.c
! d5a926e3d208d77f347b69e459787e36  gcc/testsuite/gcc.dg/cpp/isysroot-1.c
  d2356c14719220729fca6a1807576fd6  gcc/testsuite/gcc.dg/cpp/isysroot-2.c
  6aec7ee07d2c4b1e4dbca7996c29c33d  gcc/testsuite/gcc.dg/cpp/lexident.c
  ed521ab2015dc11905c0db0f47732ede  gcc/testsuite/gcc.dg/cpp/lexnum.c
*************** fe82f155f148a27e0e5e22f4daa9c8a9  gcc/te
*** 29589,29595 ****
  3c434fbf69ab63118b91a596ff524ca3  gcc/testsuite/gcc.dg/cpp/unc4.c
  34fc89f1d246197a5b7c09184e223c2d  gcc/testsuite/gcc.dg/cpp/undef-opt-1.c
  98e3377149a8eb0003f1fc9545eb39cb  gcc/testsuite/gcc.dg/cpp/undef2.c
! b580fc14655d151bc7323c9844094653  gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h
  b2573d118970340cf652e946e2f42a3c  gcc/testsuite/gcc.dg/cpp/utf8-5byte-1.c
  2adb7d5686ff190b39e11527a9b2fece  gcc/testsuite/gcc.dg/cpp/vararg1.c
  7d4c3e4f46665b8a19524995ee62bdf7  gcc/testsuite/gcc.dg/cpp/vararg2.c
--- 29757,29763 ----
  3c434fbf69ab63118b91a596ff524ca3  gcc/testsuite/gcc.dg/cpp/unc4.c
  34fc89f1d246197a5b7c09184e223c2d  gcc/testsuite/gcc.dg/cpp/undef-opt-1.c
  98e3377149a8eb0003f1fc9545eb39cb  gcc/testsuite/gcc.dg/cpp/undef2.c
! b580fc14655d151bc7323c9844094653  gcc/testsuite/gcc.dg/cpp/usr/include/example.h
  b2573d118970340cf652e946e2f42a3c  gcc/testsuite/gcc.dg/cpp/utf8-5byte-1.c
  2adb7d5686ff190b39e11527a9b2fece  gcc/testsuite/gcc.dg/cpp/vararg1.c
  7d4c3e4f46665b8a19524995ee62bdf7  gcc/testsuite/gcc.dg/cpp/vararg2.c
*************** c9fb88e0f1b5c073a2385125ee506c3d  gcc/te
*** 29647,29657 ****
  fb5a1322bd685744938894a0d61c31cd  gcc/testsuite/gcc.dg/darwin-ld-3.c
  9403f2a573873e69a5f66d792f2002b9  gcc/testsuite/gcc.dg/darwin-ld-4.c
  ac166dddd60ee5e26796af85796e8ce4  gcc/testsuite/gcc.dg/darwin-ld-5.c
! fe43be65e311390f6095588e6e663238  gcc/testsuite/gcc.dg/darwin-minversion-1.c
  8d9b0ae7630ed3e5ea62d8f528be9535  gcc/testsuite/gcc.dg/darwin-minversion-10.c
  2710c165e530b0df4195d645b6818a14  gcc/testsuite/gcc.dg/darwin-minversion-11.c
  a83187c00bd86f2436c9e84b40b88937  gcc/testsuite/gcc.dg/darwin-minversion-12.c
! 944161eec9e0dffb752119544a188705  gcc/testsuite/gcc.dg/darwin-minversion-2.c
  7f95fd24b4c6320826303eb18bf069e5  gcc/testsuite/gcc.dg/darwin-minversion-3.c
  6397e1571ab9acb562272433e8b604f5  gcc/testsuite/gcc.dg/darwin-minversion-4.c
  f82c26e49414aa09e3346f397544e64e  gcc/testsuite/gcc.dg/darwin-minversion-5.c
--- 29815,29825 ----
  fb5a1322bd685744938894a0d61c31cd  gcc/testsuite/gcc.dg/darwin-ld-3.c
  9403f2a573873e69a5f66d792f2002b9  gcc/testsuite/gcc.dg/darwin-ld-4.c
  ac166dddd60ee5e26796af85796e8ce4  gcc/testsuite/gcc.dg/darwin-ld-5.c
! f88d22acd71cc3219834b77615cedbc8  gcc/testsuite/gcc.dg/darwin-minversion-1.c
  8d9b0ae7630ed3e5ea62d8f528be9535  gcc/testsuite/gcc.dg/darwin-minversion-10.c
  2710c165e530b0df4195d645b6818a14  gcc/testsuite/gcc.dg/darwin-minversion-11.c
  a83187c00bd86f2436c9e84b40b88937  gcc/testsuite/gcc.dg/darwin-minversion-12.c
! 0ee0b5bc033ff95d344923707892a0f3  gcc/testsuite/gcc.dg/darwin-minversion-2.c
  7f95fd24b4c6320826303eb18bf069e5  gcc/testsuite/gcc.dg/darwin-minversion-3.c
  6397e1571ab9acb562272433e8b604f5  gcc/testsuite/gcc.dg/darwin-minversion-4.c
  f82c26e49414aa09e3346f397544e64e  gcc/testsuite/gcc.dg/darwin-minversion-5.c
*************** ee94511375797117140ca777fd1695b1  gcc/te
*** 29659,29670 ****
  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
  333be43e38c5b8f9c8bde5d01493902a  gcc/testsuite/gcc.dg/darwin-sections.c
  3cfa6daebed9a12884613012f50433e4  gcc/testsuite/gcc.dg/darwin-segaddr.c
! c9bd4478d375a6bea777dcc7c9667d5a  gcc/testsuite/gcc.dg/darwin-version-1.c
  9145b589b54240035dacb7540309d62e  gcc/testsuite/gcc.dg/darwin-weakimport-1.c
  bda7de2e2fd6472aa3ffe7873407e58d  gcc/testsuite/gcc.dg/darwin-weakimport-2.c
! 17dc761b8be4e29841270d6ef57c59a7  gcc/testsuite/gcc.dg/darwin-weakimport-3.c
  d8aef0c8953934ea061fdce6e985cdf1  gcc/testsuite/gcc.dg/darwin-weakref-1.c
  4e2720fdf9f84481a42dcd33f4b6d7a5  gcc/testsuite/gcc.dg/debug/20000503-1.c
  eeacdefaf2f5fad28609bc9a156918cb  gcc/testsuite/gcc.dg/debug/20010207-1.c
--- 29827,29839 ----
  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
+ 5ca3ca317094442241bdcaf1320473d2  gcc/testsuite/gcc.dg/darwin-minversion-link.c
  333be43e38c5b8f9c8bde5d01493902a  gcc/testsuite/gcc.dg/darwin-sections.c
  3cfa6daebed9a12884613012f50433e4  gcc/testsuite/gcc.dg/darwin-segaddr.c
! 91dd7afa81d8d5b0e0607ca1adeb791c  gcc/testsuite/gcc.dg/darwin-version-1.c
  9145b589b54240035dacb7540309d62e  gcc/testsuite/gcc.dg/darwin-weakimport-1.c
  bda7de2e2fd6472aa3ffe7873407e58d  gcc/testsuite/gcc.dg/darwin-weakimport-2.c
! 616f3eafcf2947e4dd54e569654c0721  gcc/testsuite/gcc.dg/darwin-weakimport-3.c
  d8aef0c8953934ea061fdce6e985cdf1  gcc/testsuite/gcc.dg/darwin-weakref-1.c
  4e2720fdf9f84481a42dcd33f4b6d7a5  gcc/testsuite/gcc.dg/debug/20000503-1.c
  eeacdefaf2f5fad28609bc9a156918cb  gcc/testsuite/gcc.dg/debug/20010207-1.c
*************** f04843ea87c9c55accf161e9ee241f15  gcc/te
*** 29832,29837 ****
--- 30001,30007 ----
  1a1a5a16846e5e1f309692815729ce1d  gcc/testsuite/gcc.dg/debug/pr78587.c
  2444e8441e19d7a1f14287f247114ea3  gcc/testsuite/gcc.dg/debug/pr80321.c
  240d53072f9b064ae6ea8d4d1b72f427  gcc/testsuite/gcc.dg/debug/pr85252.c
+ a9e9af5e94d12834ec3ce411c747df0d  gcc/testsuite/gcc.dg/debug/pr89704.c
  e39702ba4ac8cdf1b4d7895fa15c394f  gcc/testsuite/gcc.dg/debug/redecl-1.c
  60c3f3165dda429cbc7646a06969d16c  gcc/testsuite/gcc.dg/debug/redecl-2.c
  175fa916ededdb94d71518eecbe6fa1a  gcc/testsuite/gcc.dg/debug/redecl-3.c
*************** ba7e6f4007944b95dbec857fc6c74794  gcc/te
*** 29888,29893 ****
--- 30058,30071 ----
  bd803fab76b770802d951e70b61c9696  gcc/testsuite/gcc.dg/dfp/Wbad-function-cast-1.c
  d898987e43ad43f22c65725bb92ec24f  gcc/testsuite/gcc.dg/dfp/Wtraditional-conversion-2.c
  8dfa85ff2d4eb5d9335903160b756d39  gcc/testsuite/gcc.dg/dfp/altivec-types.c
+ 0427a7f00c94b02b2da50c05b007c0f2  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c
+ a2b93cb0ab9b6a36fe768145f47c1fa9  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c
+ 297572939fc7b71fe20e2cad87cec9ab  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c
+ 42008e10a13ebab27a814f6e12c619ba  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c
+ 1d6cb271a08986e673037b354f3254e6  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c
+ 14fc1c15e9bc96990379bbc6624f3d7c  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c
+ b213e657dd0a5981c152f0ba5c13d025  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c
+ e8708f912575f73de189475f3e31b4e9  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c
  2d5128bddc0d69a547254935ce84b555  gcc/testsuite/gcc.dg/dfp/builtin-complex.c
  1cd0f9502eb6f26f75689878d1315dde  gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp-err.c
  8be219bdc31d596f6310b63d26678f47  gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp.c
*************** a85b0288fea2d86fdb34d6e61c8fb5c4  gcc/te
*** 30688,30693 ****
--- 30866,30872 ----
  bc9fedcf7d4ab83a9eac1b425a07e995  gcc/testsuite/gcc.dg/gomp/pr68128-2.c
  b6e412b1e41464bf3c6ad63059710985  gcc/testsuite/gcc.dg/gomp/pr68640.c
  94d52afbc97b558472c16b172f9755e9  gcc/testsuite/gcc.dg/gomp/pr72781.c
+ 789ef66f070336e211866c3e5ec1dc53  gcc/testsuite/gcc.dg/gomp/pr78884.c
  3dfa5450530e68792fc799c17f83fc46  gcc/testsuite/gcc.dg/gomp/pr81768-1.c
  43bccc2e99a04235390798e75d04c6d1  gcc/testsuite/gcc.dg/gomp/pr81768-2.c
  1fb1dcba746e154601a6f0935615231b  gcc/testsuite/gcc.dg/gomp/pr82374.c
*************** d7416cac7d67876a0d0d2ddd8b64c9d9  gcc/te
*** 30705,30710 ****
--- 30884,30891 ----
  5562aec5b8ddedbdc4184f8c90685937  gcc/testsuite/gcc.dg/gomp/pr89104.c
  0c7376f88d06747513e9db1619206c72  gcc/testsuite/gcc.dg/gomp/pr89246-1.c
  c60bd6d06d92414ccd01870addd85132  gcc/testsuite/gcc.dg/gomp/pr89246-2.c
+ ef3626bfd9a01c1b3e4b0d6ca7d55c1a  gcc/testsuite/gcc.dg/gomp/pr89796.c
+ 7b7c5619e17caf4ff7de95c0ea515fde  gcc/testsuite/gcc.dg/gomp/pr90900.c
  32d1b4709fce01c7b0f596da5c040f2a  gcc/testsuite/gcc.dg/gomp/preprocess-1.c
  5a96f232ac76ad6d8182f67c3f3a4acf  gcc/testsuite/gcc.dg/gomp/reduction-1.c
  536359d59fc418a1570a6d8574a66ca1  gcc/testsuite/gcc.dg/gomp/sections-1.c
*************** d9eb2458082dd04e5fd06a17d21f8063  gcc/te
*** 31081,31087 ****
  1499003eafd486638666bf7a7c8fa0c5  gcc/testsuite/gcc.dg/guality/pr54693-2.c
  563ea1cb8025ea86023e39ea090d9a36  gcc/testsuite/gcc.dg/guality/pr54693.c
  5ef31827dab5cc29890ac6e085b38794  gcc/testsuite/gcc.dg/guality/pr54796.c
! e6a95cb67a731b87b58f31f3f0f078f6  gcc/testsuite/gcc.dg/guality/pr54970.c
  0806241ec48af974aff7b61707c11916  gcc/testsuite/gcc.dg/guality/pr56154-1.c
  f2e11607d04914713628932840c715c5  gcc/testsuite/gcc.dg/guality/pr56154-2.c
  93af310cf109bfc0389356d204c56ae4  gcc/testsuite/gcc.dg/guality/pr56154-3.c
--- 31262,31268 ----
  1499003eafd486638666bf7a7c8fa0c5  gcc/testsuite/gcc.dg/guality/pr54693-2.c
  563ea1cb8025ea86023e39ea090d9a36  gcc/testsuite/gcc.dg/guality/pr54693.c
  5ef31827dab5cc29890ac6e085b38794  gcc/testsuite/gcc.dg/guality/pr54796.c
! e7cd19ce7cc98005abe9fb9cbef18d5d  gcc/testsuite/gcc.dg/guality/pr54970.c
  0806241ec48af974aff7b61707c11916  gcc/testsuite/gcc.dg/guality/pr56154-1.c
  f2e11607d04914713628932840c715c5  gcc/testsuite/gcc.dg/guality/pr56154-2.c
  93af310cf109bfc0389356d204c56ae4  gcc/testsuite/gcc.dg/guality/pr56154-3.c
*************** e9cb995bb14a5d52b9213cdc06457285  gcc/te
*** 31206,31211 ****
--- 31387,31394 ----
  2eed98dfcc022044e610af32e1c937c1  gcc/testsuite/gcc.dg/inline-4.c
  b1da3859103cd524b6f06a987437986c  gcc/testsuite/gcc.dg/inline-40.c
  11fe410fd32445cd4e9ec94bae8bef30  gcc/testsuite/gcc.dg/inline-41.c
+ ecbb420d135dea5b382c10b3f807ec9f  gcc/testsuite/gcc.dg/inline-42.c
+ 5eb94e96e85a0b595afa6cb4cac5682d  gcc/testsuite/gcc.dg/inline-43.c
  7fc691c96ff167ea4acaf530fdfd717a  gcc/testsuite/gcc.dg/inline-5.c
  96b467a4117442b64211f4f3411003a4  gcc/testsuite/gcc.dg/inline-6.c
  ba66b4f621efcd9fab8ee6d7a3de2f82  gcc/testsuite/gcc.dg/inline-7.c
*************** be5489532ad8117e567e1ea5c8ad4b6a  gcc/te
*** 31333,31339 ****
--- 31516,31524 ----
  08cc0f0e647e9f82d05fad9ac3944635  gcc/testsuite/gcc.dg/ipa/ipcp-2.c
  2b28e86ef61a2946185db1daab03a644  gcc/testsuite/gcc.dg/ipa/ipcp-3.c
  5204e6cd28c18692d9b78b4d46f02179  gcc/testsuite/gcc.dg/ipa/ipcp-4.c
+ 1d6188a3ce8385221389a004eb653357  gcc/testsuite/gcc.dg/ipa/ipcp-5.c
  869bd19c205f2ccf580f8b640709d232  gcc/testsuite/gcc.dg/ipa/ipcp-agg-1.c
+ 46baba0a48d2f940bd891b54dec15a5c  gcc/testsuite/gcc.dg/ipa/ipcp-agg-12.c
  c71233f7e2ddb4a8889ca1fe57ea62cc  gcc/testsuite/gcc.dg/ipa/ipcp-agg-2.c
  b30637ee2dfddd2f33e1f6f41de2efa3  gcc/testsuite/gcc.dg/ipa/ipcp-agg-3.c
  4a75430bf24423bed7faf54d834e000d  gcc/testsuite/gcc.dg/ipa/ipcp-agg-4.c
*************** f18c98a6522174d4131ce51bb8396ca6  gcc/te
*** 33712,33717 ****
--- 33897,33903 ----
  5a08b5f125d40e80cbfa648fd7d53df7  gcc/testsuite/gcc.dg/pr83972.c
  9eeba6fce77e55ccdcedf59ccf4edfc7  gcc/testsuite/gcc.dg/pr83985.c
  0a681331473e7aabb020a483acf3d081  gcc/testsuite/gcc.dg/pr83986.c
+ 2868e3695169eaa8ab8fa3575074a00b  gcc/testsuite/gcc.dg/pr84032.c
  aa5aeeb9303713d11e8680d92dbd0bb3  gcc/testsuite/gcc.dg/pr84068.c
  70e4b16ceedc356882716fae5db2910c  gcc/testsuite/gcc.dg/pr84095.c
  cb37cbb046e6ce050aa898afb1c6a715  gcc/testsuite/gcc.dg/pr84100.c
*************** a7709838775630f3497d85e86ff842f1  gcc/te
*** 33783,33789 ****
--- 33969,33978 ----
  514a76717cc92cf8d94a3d039414a417  gcc/testsuite/gcc.dg/pr87320.c
  45a1003c5d24f4875b1c3a5d4f9569fe  gcc/testsuite/gcc.dg/pr8788-1.c
  0cb1263d58005e7943ed8e4e7280590d  gcc/testsuite/gcc.dg/pr87929.c
+ 4dc6a02b95b9de1998e24869985641df  gcc/testsuite/gcc.dg/pr87979.c
  474562e66d92f7597aaf0f5ab5013a1a  gcc/testsuite/gcc.dg/pr88071.c
+ b3735ce491eeb75e002c4d0e33f03f4c  gcc/testsuite/gcc.dg/pr88074-2.c
+ b4a69f8a95ed49f8ce827cea184da075  gcc/testsuite/gcc.dg/pr88074.c
  be04382a35ebb1cfae1b2168f1693a94  gcc/testsuite/gcc.dg/pr8835-1.c
  641b0297fe322803bfcf70efb484f184  gcc/testsuite/gcc.dg/pr88427.c
  ca44df045802a83545871c2e454164d1  gcc/testsuite/gcc.dg/pr88563.c
*************** ca44df045802a83545871c2e454164d1  gcc/te
*** 33791,33803 ****
--- 33980,34013 ----
  3d03b712ec5ddcf1011a2e3ad2937fab  gcc/testsuite/gcc.dg/pr88594.c
  9831a0e405bbc2e4df9d1b9d1d88b7f0  gcc/testsuite/gcc.dg/pr88870.c
  6c16d1c0a7bddee382161ec4f69c7e3e  gcc/testsuite/gcc.dg/pr88905.c
+ b6a6442523e13cc8d22cef6d9b29643f  gcc/testsuite/gcc.dg/pr89037.c
  b8275290466222c56ac76a85e9dc3e4f  gcc/testsuite/gcc.dg/pr89211.c
  6d86fe504f8715d8b161e54c57b05401  gcc/testsuite/gcc.dg/pr8927-1.c
  805c3b6133ae2a2da39e43c108f2cb04  gcc/testsuite/gcc.dg/pr89278.c
  e30bce51f7105571806672d1430b4476  gcc/testsuite/gcc.dg/pr89314.c
  e0bb97c06584dce3955740a9322025ef  gcc/testsuite/gcc.dg/pr89342.c
  db531a9355f9326f8fbafbee1a0c4e91  gcc/testsuite/gcc.dg/pr89354.c
+ 60832e2a572601eeddf23c8b9641b3ce  gcc/testsuite/gcc.dg/pr89520-1.c
+ a5f05c4ad343f3e9f77908f5e61b8319  gcc/testsuite/gcc.dg/pr89520-2.c
+ 257d6cccc19ffd7b76dfd92523ef410e  gcc/testsuite/gcc.dg/pr89521-1.c
+ 2c9315db914b2d546cfa5ba3a8d5d492  gcc/testsuite/gcc.dg/pr89521-2.c
+ 37d9958e568bd455cf03bd403e5d9560  gcc/testsuite/gcc.dg/pr89590.c
+ 7e94f0d5a822303e0339481ee07ad796  gcc/testsuite/gcc.dg/pr89679.c
+ e6faf0945d1f5f965c65759fe557a7d4  gcc/testsuite/gcc.dg/pr89734.c
+ a24193887db72f1e75b2698c04b4ef32  gcc/testsuite/gcc.dg/pr90010.c
+ 0a4f5fe719bf1ce6ae61fc33e03adf0f  gcc/testsuite/gcc.dg/pr90082.c
+ 007da9cc3379de76a6986f6c8d62f1aa  gcc/testsuite/gcc.dg/pr90733.c
+ 7c81184e9f0f9dead0859125d7a01a19  gcc/testsuite/gcc.dg/pr90756.c
+ a5cf54d159902a526ee7923257cf4b92  gcc/testsuite/gcc.dg/pr90760.c
+ f05824bb6a8ee4df57182feba94d6224  gcc/testsuite/gcc.dg/pr90898.c
+ 18854ec27df01fb8b6ad5529dff65b0d  gcc/testsuite/gcc.dg/pr91854.c
+ c4f72ee1103ecf59a0e370d5ea316570  gcc/testsuite/gcc.dg/pr92591-1.c
+ 324f6e8bdb8eabe75693890f36af369b  gcc/testsuite/gcc.dg/pr92591-2.c
+ 518252496da6c416ea3047044066d6ed  gcc/testsuite/gcc.dg/pr92768.c
+ f0bf805f3929cfb3d6a885914e28c380  gcc/testsuite/gcc.dg/pr93054.c
+ 2461eae71210d5808caccdbf7b68c684  gcc/testsuite/gcc.dg/pr93576.c
  3825638bdc3a2a004aba9b3d95352327  gcc/testsuite/gcc.dg/pr9365-1.c
+ 96f7c73b6cb0b7b5f65e07636845c78b  gcc/testsuite/gcc.dg/pr93820.c
  ec1830becced622760bda688ca2bb126  gcc/testsuite/gcc.dg/pr9814-1.c
  38d740dd13641c97d4f565dcd6338d23  gcc/testsuite/gcc.dg/pragma-align-2.c
  4c08191735eadb7c6ea607dfcc965cf5  gcc/testsuite/gcc.dg/pragma-align.c
*************** e18294d3404279a1f70b16e5f321d933  gcc/te
*** 34621,34626 ****
--- 34831,34837 ----
  33f2d5a949f3be0de5e28e8cf8bec90f  gcc/testsuite/gcc.dg/torture/mips-div-1.c
  4e40647acd4c0b0f635e3e9be60ce610  gcc/testsuite/gcc.dg/torture/mips-hilo-2.c
  d07ecd707fac97fa40042e04a59d4b1e  gcc/testsuite/gcc.dg/torture/mips-sdata-1.c
+ 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
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
*************** a84b6c59134ee4102ee04385d54f1251  gcc/te
*** 35471,35478 ****
--- 35682,35704 ----
  2b8d83c06ccd9531c5a3b756ad0efa34  gcc/testsuite/gcc.dg/torture/pr87700.c
  5f2931b968a25515ee413bfbfd4f1f71  gcc/testsuite/gcc.dg/torture/pr88223.c
  6e9fc245efc4c9fc3b6ac670e231ccc2  gcc/testsuite/gcc.dg/torture/pr89008.c
+ deaf9ef54f621df69db3af8cdd9248d8  gcc/testsuite/gcc.dg/torture/pr89091.c
  1a79c15fb77e621a36fd6989e4250a51  gcc/testsuite/gcc.dg/torture/pr89135.c
  bc5bedb53a5031564816c911cd9f7bd1  gcc/testsuite/gcc.dg/torture/pr89223.c
+ 5027d01e012944eed6e57508cf5efccf  gcc/testsuite/gcc.dg/torture/pr89505.c
+ 67023595cda810dfd27ab63686f32e54  gcc/testsuite/gcc.dg/torture/pr89572.c
+ ba6f72e4a8ab5754df06d745d705ced8  gcc/testsuite/gcc.dg/torture/pr89595.c
+ 66e6d1d850f181ba202147d0c255aafa  gcc/testsuite/gcc.dg/torture/pr89677.c
+ 3ebff6f9fdd08ad83f1b108d52ed3515  gcc/testsuite/gcc.dg/torture/pr89710.c
+ 03ff50043fe9b066d5d9805c81aeed55  gcc/testsuite/gcc.dg/torture/pr90020.c
+ f13f8d9bb577a47a3c6edb46c6c340b5  gcc/testsuite/gcc.dg/torture/pr90071.c
+ 00e6f1395499e5956a1821ce97b809c7  gcc/testsuite/gcc.dg/torture/pr90278.c
+ 1c6a61da912dfe2711fb64a23a660471  gcc/testsuite/gcc.dg/torture/pr90328.c
+ 6658d6f5893b06f49b107ca7db0f19e3  gcc/testsuite/gcc.dg/torture/pr91126.c
+ 9a517e2a6fabc62383485f161c86b5df  gcc/testsuite/gcc.dg/torture/pr91200.c
+ e398c88cb4160ec78fc9362787569fe9  gcc/testsuite/gcc.dg/torture/pr91812.c
+ 6c276b4b449ad6fca0e8f9e8705d1baf  gcc/testsuite/gcc.dg/torture/pr92704.c
+ c3582ca835373c2cd0065fc3f8a36154  gcc/testsuite/gcc.dg/torture/pr93381.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
*************** b82f09e52f40b5e142ca17a69421bfad  gcc/te
*** 35486,35491 ****
--- 35712,35718 ----
  5e4ed3eeb940f3f8f5de9b8951123bec  gcc/testsuite/gcc.dg/torture/restrict-4.c
  9bedd7550914e2e483d55e47c44723e3  gcc/testsuite/gcc.dg/torture/restrict-5.c
  b4bc986eae683153ce2c232320c5bd27  gcc/testsuite/gcc.dg/torture/restrict-6.c
+ 568321b2b1eea2f97749015ca7f0b1b0  gcc/testsuite/gcc.dg/torture/restrict-7.c
  ae4bd16210e8a183a5a9c10baeb4171c  gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c
  53a2ab81fc05f5ba0724c2020a12a151  gcc/testsuite/gcc.dg/torture/stackalign/alloca-1.c
  2d416072232dd69f1b2a756bbb4d1dfd  gcc/testsuite/gcc.dg/torture/stackalign/alloca-2.c
*************** d26396401dfe20236d8bef41e255057f  gcc/te
*** 36599,36604 ****
--- 36826,36836 ----
  531467a7bd70ca05a3efab1589e94109  gcc/testsuite/gcc.dg/tree-ssa/pr84859.c
  7b0e32d77316039c03b0187b750dcbd7  gcc/testsuite/gcc.dg/tree-ssa/pr84969.c
  a4316b6eac65dac735695e27081a1367  gcc/testsuite/gcc.dg/tree-ssa/pr87022.c
+ a8e99357ccf139e15cb199f14791dd62  gcc/testsuite/gcc.dg/tree-ssa/pr89546.c
+ 2a36aca5f712a030aa778e7ae5777731  gcc/testsuite/gcc.dg/tree-ssa/pr89725.c
+ e9230122742d9f2e19bb99dcd54db233  gcc/testsuite/gcc.dg/tree-ssa/pr89872.c
+ d23898ffe25f214674f480b4b21f7ebb  gcc/testsuite/gcc.dg/tree-ssa/pr91091-1.c
+ 7dfc09abf1b28ac3735cb4bd89a16ccd  gcc/testsuite/gcc.dg/tree-ssa/pr92930.c
  e6c9f2dd9d7405dee4bfd5d6d0fc455f  gcc/testsuite/gcc.dg/tree-ssa/pred-1.c
  90c3c1a872e4566cc043c50e818ef036  gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c
  ec45787b9b781da6181e7960a8cb76f0  gcc/testsuite/gcc.dg/tree-ssa/predcom-2.c
*************** ad0c910858cba8a5b3996305d7d5447d  gcc/te
*** 36670,36676 ****
  fb8e1542fc1472c62c777c39fb27803a  gcc/testsuite/gcc.dg/tree-ssa/reassoc-40.c
  0945a4a5876e31c0c04a5dcd26ecb09b  gcc/testsuite/gcc.dg/tree-ssa/reassoc-41.c
  854b9533e402a2c0f1a5576704a59839  gcc/testsuite/gcc.dg/tree-ssa/reassoc-42.c
! 8f4fa30012d9e79c1fb9b5737c9d60c3  gcc/testsuite/gcc.dg/tree-ssa/reassoc-43.c
  40306bba57979317f1b6ac5abc1c61aa  gcc/testsuite/gcc.dg/tree-ssa/reassoc-44.c
  43cedee8ba1282cf6b6558cafbaf9c24  gcc/testsuite/gcc.dg/tree-ssa/reassoc-45.c
  c75bffd403ebb6298962402a14677298  gcc/testsuite/gcc.dg/tree-ssa/reassoc-5.c
--- 36902,36908 ----
  fb8e1542fc1472c62c777c39fb27803a  gcc/testsuite/gcc.dg/tree-ssa/reassoc-40.c
  0945a4a5876e31c0c04a5dcd26ecb09b  gcc/testsuite/gcc.dg/tree-ssa/reassoc-41.c
  854b9533e402a2c0f1a5576704a59839  gcc/testsuite/gcc.dg/tree-ssa/reassoc-42.c
! bc54a55ac78e555806e7b448f49728b0  gcc/testsuite/gcc.dg/tree-ssa/reassoc-43.c
  40306bba57979317f1b6ac5abc1c61aa  gcc/testsuite/gcc.dg/tree-ssa/reassoc-44.c
  43cedee8ba1282cf6b6558cafbaf9c24  gcc/testsuite/gcc.dg/tree-ssa/reassoc-45.c
  c75bffd403ebb6298962402a14677298  gcc/testsuite/gcc.dg/tree-ssa/reassoc-5.c
*************** d3cb4389fc5f2080a551e055e7014893  gcc/te
*** 36940,36945 ****
--- 37172,37178 ----
  1a1969c9cac274e4a1b0151359849f0c  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-61.c
  4d704b1ed6e02c20a1479c44b5ab50eb  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-62.c
  fe887a26d5f3f55d50823a788a80b191  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-7.c
+ 2814bc2e5bf683800ae6bddc9f23c38c  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-78.c
  ee8929c75a08d3026beb2a71adce80fa  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-8.c
  6c8e375b119ce1b63e19eed89459c12f  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-9.c
  2957dc80c49929e08096f70c96f5df81  gcc/testsuite/gcc.dg/tree-ssa/ssa-hoist-1.c
*************** dbcccd12dda553ecb5a906b8fe24ab00  gcc/te
*** 37215,37220 ****
--- 37448,37454 ----
  016029e7b08dbc8fe1d266551df2fdd3  gcc/testsuite/gcc.dg/tree-ssa/writeonly.c
  22eb0b8eeae794a6956326b2c9383fb2  gcc/testsuite/gcc.dg/trunc-1.c
  dcc8ff133faffd3fe561dfe431569a07  gcc/testsuite/gcc.dg/tsan/pr88030.c
+ 65ac9eca3bcd49137d096a4f2573e2e2  gcc/testsuite/gcc.dg/tsan/pr90208-2.c
  f0d64000e95966a7c1501c28b23c98e9  gcc/testsuite/gcc.dg/tsan/tsan.exp
  01ec42502b146041504a5ab811e7f3b1  gcc/testsuite/gcc.dg/two-types-1.c
  95ad9b7c791f67ee2f4be1bd942e6718  gcc/testsuite/gcc.dg/two-types-10.c
*************** c611b4ad3ec4bad367027a6ab1ef6505  gcc/te
*** 37306,37312 ****
  c47999a5663fbe110a3d4134c92050c2  gcc/testsuite/gcc.dg/uninit-17-O0.c
  728401b250e40769899aeaa5eb3c4f2e  gcc/testsuite/gcc.dg/uninit-17.c
  997ae4c527f3facdc5684123c0d1cddb  gcc/testsuite/gcc.dg/uninit-18.c
! d9386e462790d6362e63704bf981cd41  gcc/testsuite/gcc.dg/uninit-19.c
  668c58e2312b2988b8c85c02786bdbeb  gcc/testsuite/gcc.dg/uninit-2-O0.c
  e7bbbf0090661e8a065ace2511f8f195  gcc/testsuite/gcc.dg/uninit-2.c
  ddfc3a41edab799f26758dadfa5a4d09  gcc/testsuite/gcc.dg/uninit-20.c
--- 37540,37546 ----
  c47999a5663fbe110a3d4134c92050c2  gcc/testsuite/gcc.dg/uninit-17-O0.c
  728401b250e40769899aeaa5eb3c4f2e  gcc/testsuite/gcc.dg/uninit-17.c
  997ae4c527f3facdc5684123c0d1cddb  gcc/testsuite/gcc.dg/uninit-18.c
! 266b9ed38dd712e0100f6a39a1764857  gcc/testsuite/gcc.dg/uninit-19.c
  668c58e2312b2988b8c85c02786bdbeb  gcc/testsuite/gcc.dg/uninit-2-O0.c
  e7bbbf0090661e8a065ace2511f8f195  gcc/testsuite/gcc.dg/uninit-2.c
  ddfc3a41edab799f26758dadfa5a4d09  gcc/testsuite/gcc.dg/uninit-20.c
*************** e5914ec194abe834db8656483a92fcdc  gcc/te
*** 37351,37356 ****
--- 37585,37591 ----
  e37d87bcbc2425be943ff59a8baa223d  gcc/testsuite/gcc.dg/uninit-pr81782.c
  0dc3986883a797fc93fd1e233ab39838  gcc/testsuite/gcc.dg/uninit-pr81897-2.c
  2cff9b0e356693e6320ee7ba4d4f02c2  gcc/testsuite/gcc.dg/uninit-pr81897.c
+ bc12979aeecbec0cc9fe92fcb51c30b9  gcc/testsuite/gcc.dg/uninit-pr89296.c
  2e2b2ca64d1c3db87c75755a21b4bc06  gcc/testsuite/gcc.dg/uninit-pred-2_a.c
  7d67cd7432d67994c6642a61e0020d9e  gcc/testsuite/gcc.dg/uninit-pred-2_b.c
  dc20b95e0c82e7593d7e562b3b1e5aaf  gcc/testsuite/gcc.dg/uninit-pred-2_c.c
*************** ddb0d9d02246d260424316fc51c4b34f  gcc/te
*** 37373,37379 ****
  ae9f63955208be4c16b0ba30bd16f5b4  gcc/testsuite/gcc.dg/uninit-pred-7_c.c
  7a3eae1faebb33a9f5f883ebc298164a  gcc/testsuite/gcc.dg/uninit-pred-7_d.c
  108959c442d69cdf432f24175e7af3ad  gcc/testsuite/gcc.dg/uninit-pred-8_a.c
! e1adecfd191ddb35b4dca5ed05ca11de  gcc/testsuite/gcc.dg/uninit-pred-8_b.c
  48dec70277ff9a8f83aba472bc7a6ea6  gcc/testsuite/gcc.dg/uninit-pred-8_c.c
  096e58c93515dd3678c391930e20efb7  gcc/testsuite/gcc.dg/uninit-pred-8_d.c
  f8c4f61a7dcf75600a176b4dab26db57  gcc/testsuite/gcc.dg/uninit-pred-9_a.c
--- 37608,37614 ----
  ae9f63955208be4c16b0ba30bd16f5b4  gcc/testsuite/gcc.dg/uninit-pred-7_c.c
  7a3eae1faebb33a9f5f883ebc298164a  gcc/testsuite/gcc.dg/uninit-pred-7_d.c
  108959c442d69cdf432f24175e7af3ad  gcc/testsuite/gcc.dg/uninit-pred-8_a.c
! 4f416029f00110db5c76cdc97e97568f  gcc/testsuite/gcc.dg/uninit-pred-8_b.c
  48dec70277ff9a8f83aba472bc7a6ea6  gcc/testsuite/gcc.dg/uninit-pred-8_c.c
  096e58c93515dd3678c391930e20efb7  gcc/testsuite/gcc.dg/uninit-pred-8_d.c
  f8c4f61a7dcf75600a176b4dab26db57  gcc/testsuite/gcc.dg/uninit-pred-9_a.c
*************** f746ae3bf44586fbe281fa0651586662  gcc/te
*** 37522,37527 ****
--- 37757,37763 ----
  cc1dd9969065b3ef679c1331eea3b974  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-2.c
  ba61bac9283801e9b73dee15e5669f8a  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-3.c
  0a3a3c00f359e5410f5697d124bdd5ca  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-4.c
+ a689d9ca07b59620e68b3c142ebeb12e  gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c
  5428e4471ece92d28564b1d30192ed87  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-1.c
  892d0604340291572dec6ee6deee1f79  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-2.c
  ac97f8715430e9981d35fdaf30359bcb  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c
*************** e5c69077d0a36436aad2e8772386c7b9  gcc/te
*** 37946,37951 ****
--- 38182,38189 ----
  3f00aa8bd4647b819ebad8742aae55ff  gcc/testsuite/gcc.dg/vect/pr81196.c
  9f6e75e9dbf6ab44b15e511f1ec5060c  gcc/testsuite/gcc.dg/vect/pr81410.c
  5d2ab81a9406e2000bbd06f6aba15b52  gcc/testsuite/gcc.dg/vect/pr81633.c
+ 29c150b7cf40ec651f6b59e757f2e5f6  gcc/testsuite/gcc.dg/vect/pr81740-1.c
+ 30064cf11164bcd330c5ef0687269582  gcc/testsuite/gcc.dg/vect/pr81740-2.c
  b01d1cf10e6bd44acf483b58e22aced4  gcc/testsuite/gcc.dg/vect/pr81815.c
  bddceeb2dcbec7478439798545334dc9  gcc/testsuite/gcc.dg/vect/pr82108.c
  13fb523d8fb02882b90caadcfa00e949  gcc/testsuite/gcc.dg/vect/pr82289.c
*************** dec135e959be35a2676395dffb879be7  gcc/te
*** 37971,37976 ****
--- 38209,38222 ----
  7674336c5d1b951d7050cb96ac3739f9  gcc/testsuite/gcc.dg/vect/pr87288-3.c
  706ffeb725a655c10c3af015fa40d1ea  gcc/testsuite/gcc.dg/vect/pr88903-1.c
  3fa6b0486dc4b237da9bc2ffa11dd19e  gcc/testsuite/gcc.dg/vect/pr88903-2.c
+ e886cbd86390cdb32bee3af3fdb38317  gcc/testsuite/gcc.dg/vect/pr90018.c
+ ac67ac2c3d8711dd155a41624852b861  gcc/testsuite/gcc.dg/vect/pr91293-1.c
+ db3576e77c43de369e47976aecb1d53c  gcc/testsuite/gcc.dg/vect/pr91293-2.c
+ 37fe9fcd52d12f73ee435eb9aa6d1c71  gcc/testsuite/gcc.dg/vect/pr91293-3.c
+ 6ff42a5a4a3e60344beb4ee415f9fa95  gcc/testsuite/gcc.dg/vect/pr91665.c
+ 8592f5133853519281066e3cdcdc9082  gcc/testsuite/gcc.dg/vect/pr92420.c
+ 9314244e8dd2629fd52faec10e7e5f47  gcc/testsuite/gcc.dg/vect/pr92723.c
+ 867fed4c196d4d64384bffad366ae916  gcc/testsuite/gcc.dg/vect/pr93767.c
  32d06c886c85516fbdce4ca1bd516496  gcc/testsuite/gcc.dg/vect/section-anchors-pr27770.c
  d7c598d838a7c98392febc88239e2769  gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c
  cd2f0240aaa18dda8ac3a18459c93d29  gcc/testsuite/gcc.dg/vect/slp-1.c
*************** e4a970a6789a84727813478c59877533  gcc/te
*** 38063,38069 ****
  c77542cf1371fae8cf65124b4c29b25b  gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
  62e9316c7cbab5a448977f3e9bf89472  gcc/testsuite/gcc.dg/vect/slp-reduc-7.c
  030cb8061ca9614b756c8f4471116e37  gcc/testsuite/gcc.dg/vect/slp-reduc-8.c
! ff21e08c6d4a28efb0abd3587fa89dc4  gcc/testsuite/gcc.dg/vect/slp-reduc-sad.c
  0ec5265308cf0a1fd6bfb6502f0e83f3  gcc/testsuite/gcc.dg/vect/slp-widen-mult-half.c
  b1336a4a12ea0ec587c41f16332879bc  gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c
  31669e2cb35c18913f0b7f913f2a0f63  gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c
--- 38309,38315 ----
  c77542cf1371fae8cf65124b4c29b25b  gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
  62e9316c7cbab5a448977f3e9bf89472  gcc/testsuite/gcc.dg/vect/slp-reduc-7.c
  030cb8061ca9614b756c8f4471116e37  gcc/testsuite/gcc.dg/vect/slp-reduc-8.c
! 7caf9c505d57c40f3c61b7b29427a0e3  gcc/testsuite/gcc.dg/vect/slp-reduc-sad.c
  0ec5265308cf0a1fd6bfb6502f0e83f3  gcc/testsuite/gcc.dg/vect/slp-widen-mult-half.c
  b1336a4a12ea0ec587c41f16332879bc  gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c
  31669e2cb35c18913f0b7f913f2a0f63  gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c
*************** c8c679e672173f52fbc0d86757b5c05a  gcc/te
*** 39718,39727 ****
--- 39964,39985 ----
  face3a8c6631236fedad3dce5526b762  gcc/testsuite/gcc.target/aarch64/ngc.c
  fb19dd57034e67da13f2a5b22815fcc5  gcc/testsuite/gcc.target/aarch64/no-inline-lrint_1.c
  56f1cae94d74d605f3127ff54df58e5e  gcc/testsuite/gcc.target/aarch64/no-inline-lrint_2.c
+ 9567b5cb1744b0c5a301604d3a25bbc2  gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c
  a8bddbe3eece3831dd80ac4cdf09f85e  gcc/testsuite/gcc.target/aarch64/nofp_1.c
  16f10ec9128105b137b7139eec150171  gcc/testsuite/gcc.target/aarch64/noplt_1.c
  a08d94353bf55af1d22441a406d830ca  gcc/testsuite/gcc.target/aarch64/noplt_2.c
  5adbb32c5ec104efca72061e09229b8f  gcc/testsuite/gcc.target/aarch64/noplt_3.c
+ 5d43e2829488a18473d4b2ca37cdaf82  gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c
+ 773bc5b0a8368679f7d4856edfb4d60f  gcc/testsuite/gcc.target/aarch64/options_set_1.c
+ d6e1d0cb7cb44f50985db131c62ba20b  gcc/testsuite/gcc.target/aarch64/options_set_10.c
+ 38913b9d93786135bbb9f14461fcb591  gcc/testsuite/gcc.target/aarch64/options_set_2.c
+ 7f4c8da035a3fac4e823b922b071f373  gcc/testsuite/gcc.target/aarch64/options_set_3.c
+ 6acdd0168da65a1ce59810d19a1bda89  gcc/testsuite/gcc.target/aarch64/options_set_4.c
+ 8f27bf551906208d070df1b7012a68a2  gcc/testsuite/gcc.target/aarch64/options_set_5.c
+ 18a48c819a40a0d0c0bb86b8cb3ccab2  gcc/testsuite/gcc.target/aarch64/options_set_6.c
+ 3c7fc6e40b171e0b03c095ccf5773192  gcc/testsuite/gcc.target/aarch64/options_set_7.c
+ 51f0102245f943732739fa2da8b863ee  gcc/testsuite/gcc.target/aarch64/options_set_8.c
+ df4e11a3114d2114f873039e70aa26eb  gcc/testsuite/gcc.target/aarch64/options_set_9.c
  2ba9e0951fadcf5ce5f2eab080c09a68  gcc/testsuite/gcc.target/aarch64/orr_imm_1.c
  03797fef944cc43885e1c80c25f368e4  gcc/testsuite/gcc.target/aarch64/pic-constantpool1.c
  8084b7f8a23ba9dc5bb389d20d29ec1b  gcc/testsuite/gcc.target/aarch64/pic-small.c
*************** aa2dfd18bc6784e0bc7ee00c3ef8561a  gcc/te
*** 39777,39782 ****
--- 40035,40041 ----
  61509ec6c4ac78da70369f76797f43be  gcc/testsuite/gcc.target/aarch64/pr81647.c
  83d999153e7b99641d3f07b79d3dd12f  gcc/testsuite/gcc.target/aarch64/pr83370.c
  d1d34ae8edbb84b094c7f011971b77f4  gcc/testsuite/gcc.target/aarch64/pr84252.c
+ 476fb6d37ab03368b4eead6712633cd2  gcc/testsuite/gcc.target/aarch64/pr90075.c
  d3e6defa85b5cd4bb506306377e59a53  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1.c
  1f95766b4ed5bfb5f2cf1f168a607a8d  gcc/testsuite/gcc.target/aarch64/predefine_large.c
  d38e476730748c653068e7cb2d8d6ca6  gcc/testsuite/gcc.target/aarch64/predefine_small.c
*************** b36471f8edbf2a11ce23359823ecc10b  gcc/te
*** 40819,40824 ****
--- 41078,41084 ----
  e6d1333accc73a351e98b7ad842cd2be  gcc/testsuite/gcc.target/alpha/pr83628-1.c
  2052308560c0cb7bee41dddbff1ae5f4  gcc/testsuite/gcc.target/alpha/pr83628-2.c
  38c58f9ce3fd2fd442a1637ac9e5e8bd  gcc/testsuite/gcc.target/alpha/pr83628-3.c
+ a28c8b957006268fb63ac90eaea21d90  gcc/testsuite/gcc.target/alpha/pr86984.c
  5821aa7e8ef51d9e9f03077c43721bd0  gcc/testsuite/gcc.target/alpha/sqrt.c
  96315e3201d2fa31fb4cbdf30fb2ba4d  gcc/testsuite/gcc.target/arc/abitest.S
  a125f0012bfc0fdad155c9b9bcc0f009  gcc/testsuite/gcc.target/arc/abitest.h
*************** a7f2e5349eb3677d4e532197beb261b8  gcc/te
*** 41015,41020 ****
--- 41275,41281 ----
  70d3af1373b3a49fb1912dca6e377274  gcc/testsuite/gcc.target/arm/acle/crc32d.c
  21b20cecbc6689dc6367a96e210b956e  gcc/testsuite/gcc.target/arm/acle/crc32h.c
  2d7c8358817ecb57e689202c2e4f2dd6  gcc/testsuite/gcc.target/arm/acle/crc32w.c
+ 8e835118eed3d1e8f3b8108aac735957  gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c
  15caa7f54c3a3e06d97de61aaaa7ca1c  gcc/testsuite/gcc.target/arm/acle/ldc.c
  343921f8186546d1f5253679431b890b  gcc/testsuite/gcc.target/arm/acle/ldc2.c
  deee7c31c5c250e8d2a4897962cdea6b  gcc/testsuite/gcc.target/arm/acle/ldc2l.c
*************** d721a88ae72a8be261b58663490fc7ee  gcc/te
*** 41247,41252 ****
--- 41508,41514 ----
  14c1154266333682f985fe7c6c6e3911  gcc/testsuite/gcc.target/arm/eliminate.c
  35daa2bef7020b26f98b70184aa411d4  gcc/testsuite/gcc.target/arm/empty_fiq_handler.c
  78487646e9710e62b0d506909e9588a8  gcc/testsuite/gcc.target/arm/epilog-1.c
+ 98721ddb43f41d55892aac39cc051828  gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c
  af1ccf2d19987a11d4e08cd9cccf8a69  gcc/testsuite/gcc.target/arm/fixed-point-exec.c
  30d8dad9a97da5758da204e1f71d1aa1  gcc/testsuite/gcc.target/arm/fixed_float_conversion.c
  6619cf7c22b0ec3c6ca6626d69a8f826  gcc/testsuite/gcc.target/arm/flip-thumb.c
*************** c3c03d98bf1110fec6902ef64b984fde  gcc/te
*** 41641,41648 ****
--- 41903,41915 ----
  f8d96076841643c7c01ef5410173dbad  gcc/testsuite/gcc.target/arm/pr83712.c
  18ff5a03c344c3f612c5c9241ebc0d0e  gcc/testsuite/gcc.target/arm/pr84826.c
  9ceeccdcbe7c4f80a03690b8e3133f43  gcc/testsuite/gcc.target/arm/pr85173.c
+ 33227127167a7e170af10f0beecbff03  gcc/testsuite/gcc.target/arm/pr86487.c
  40076045a4c00e49c70de6a7a08bea67  gcc/testsuite/gcc.target/arm/pr86640.c
+ 13b419ece183c8289f8cd381a21bd825  gcc/testsuite/gcc.target/arm/pr88167-1.c
+ 061a3fd61673c5c82f24f6000121e426  gcc/testsuite/gcc.target/arm/pr88167-2.c
  c11a83f6e8e6cfecb2d201bb9832efb3  gcc/testsuite/gcc.target/arm/pr88648-asm-syntax-unified.c
+ eb13a55564e5e8fb2982994c3b17a08c  gcc/testsuite/gcc.target/arm/pr89190.c
+ 7e118390a8f6adc60508c71323d3a526  gcc/testsuite/gcc.target/arm/pr89222.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
*************** ab15d222e706bd85c87c037d1e9b6f51  gcc/te
*** 42582,42587 ****
--- 42849,42855 ----
  15722fba52fd43dd64c47b080c1c307c  gcc/testsuite/gcc.target/i386/avx-pr80286.c
  0c470227f4a8ce9ace3b799a8ebecbc0  gcc/testsuite/gcc.target/i386/avx-pr80846.c
  cb21d2e64c04a9daab66338cc0a66e65  gcc/testsuite/gcc.target/i386/avx-pr82370.c
+ 9b926829d7de933c61b0300157acbfc5  gcc/testsuite/gcc.target/i386/avx-pr93637.c
  4e3d37bb04b99394790fa9e8caddf790  gcc/testsuite/gcc.target/i386/avx-recip-vec.c
  02ae18a66bd7b76f7a651b896f066b70  gcc/testsuite/gcc.target/i386/avx-reduc-1.c
  901c452df22c91b2a6a7b58fc968d5f4  gcc/testsuite/gcc.target/i386/avx-rint-sfix-2-vec.c
*************** f55df70acaaa1a05030d45495848eb2b  gcc/te
*** 43520,43531 ****
  1db2c2106138cc396b1ae8c512625b33  gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssd-2.c
  5052cdd63fbafc27cd3d7534458acaec  gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-1.c
  925a068450d57f20740e5ce6e8fe217e  gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-2.c
! 9de875f6f41e554337ea12937f31b749  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb-1.c
! fb81b2b2a3a46912d73cc1760be004e7  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb.c
! 199af992e17bd9c64dcfa9985d1f367e  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntbvl.c
! 8af06593173fa44cb3ccf5e8a4d0ee1a  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw-1.c
! 80398fed0e3d0fb221f2b8b497ff4150  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw.c
! 2321f4d32ab673621ab22cd88183f167  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntwvl.c
  eabafa4926a7abff1e6146a7ef0143e0  gcc/testsuite/gcc.target/i386/avx512bitalg-vpshufbitqmb-1.c
  358bee5b8508f8bec0558e9193d60046  gcc/testsuite/gcc.target/i386/avx512bitalg-vpshufbitqmb.c
  b2b1fe9e25a1a50c9e88e7a8d168d328  gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpopcntb-1.c
--- 43788,43799 ----
  1db2c2106138cc396b1ae8c512625b33  gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssd-2.c
  5052cdd63fbafc27cd3d7534458acaec  gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-1.c
  925a068450d57f20740e5ce6e8fe217e  gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-2.c
! 84a11e540e8533df61152a30c873a575  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb-1.c
! d728d0693656bb9b505f505356762d3c  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb.c
! 7f84f82c7512e69110cd9ace71cf5f78  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntbvl.c
! 2840f678f86d3934d9e12bd4efe274c8  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw-1.c
! 137fee4b6bc1f1276f3a325244117c02  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw.c
! 0ed417774de76c917c5a1a3494fb4bdd  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntwvl.c
  eabafa4926a7abff1e6146a7ef0143e0  gcc/testsuite/gcc.target/i386/avx512bitalg-vpshufbitqmb-1.c
  358bee5b8508f8bec0558e9193d60046  gcc/testsuite/gcc.target/i386/avx512bitalg-vpshufbitqmb.c
  b2b1fe9e25a1a50c9e88e7a8d168d328  gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpopcntb-1.c
*************** a27fb111df1b083f6396bafe5a66337b  gcc/te
*** 43588,43593 ****
--- 43856,43863 ----
  e35d933dd19222a47493fe48e2676f39  gcc/testsuite/gcc.target/i386/avx512bw-pr85090-3.c
  6e21df3d0e9193e9625eed725e327919  gcc/testsuite/gcc.target/i386/avx512bw-pr85169.c
  c3f19932e24d2aa723b1d3fc00ae4836  gcc/testsuite/gcc.target/i386/avx512bw-pr87138.c
+ f43b98d89586a44186b9c785eedf7a28  gcc/testsuite/gcc.target/i386/avx512bw-pr91150.c
+ e8db4d816e2c3378fdfdbb76bcefc8d4  gcc/testsuite/gcc.target/i386/avx512bw-pr93673.c
  186b4d26f65c47b5b328795efe473c71  gcc/testsuite/gcc.target/i386/avx512bw-vdbpsadbw-1.c
  aa76e419ea439da7ae72280b04d232b8  gcc/testsuite/gcc.target/i386/avx512bw-vdbpsadbw-2.c
  c8ba4cce715fd7698d0bd8d7cc7eca78  gcc/testsuite/gcc.target/i386/avx512bw-vmovdqu16-1.c
*************** ab945e2a7f2066639ab19534fdb0271b  gcc/te
*** 43729,43743 ****
  ce62431e0d6dc730be7080f0cdba44c2  gcc/testsuite/gcc.target/i386/avx512bw-vpmovm2b-2.c
  bae2525291d77b14d3c948717486e172  gcc/testsuite/gcc.target/i386/avx512bw-vpmovm2w-1.c
  2d631a58d4ba9d40cb0081f84837581b  gcc/testsuite/gcc.target/i386/avx512bw-vpmovm2w-2.c
! 06a3164dbd380706d2da61d543128d87  gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-1.c
  d89a3e7fea8841425db8f8334b6bf852  gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-2.c
  8a56f5d9d1e0901d2961599ce258247b  gcc/testsuite/gcc.target/i386/avx512bw-vpmovsxbw-1.c
  ed602259785dd505ce43fedc83608fa2  gcc/testsuite/gcc.target/i386/avx512bw-vpmovsxbw-2.c
! 871ff4f86a33d5c9bbbb34ce309c5f9e  gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-1.c
  082edd4008d3b3a00b57e8d3ea996a89  gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-2.c
  678e81e4832220102333a7d756adaadd  gcc/testsuite/gcc.target/i386/avx512bw-vpmovw2m-1.c
  9504524787b82a0ccf486f89f4fe27e1  gcc/testsuite/gcc.target/i386/avx512bw-vpmovw2m-2.c
! ff492e91d9f879ceaaad2e456e4a220e  gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-1.c
  7d6fcb3c926679157d1535ecb9ef00af  gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-2.c
  36fd23835105aebbfe3ccb58e069edda  gcc/testsuite/gcc.target/i386/avx512bw-vpmovzxbw-1.c
  6d3d5643ba38c610b31450cf8057ed44  gcc/testsuite/gcc.target/i386/avx512bw-vpmovzxbw-2.c
--- 43999,44013 ----
  ce62431e0d6dc730be7080f0cdba44c2  gcc/testsuite/gcc.target/i386/avx512bw-vpmovm2b-2.c
  bae2525291d77b14d3c948717486e172  gcc/testsuite/gcc.target/i386/avx512bw-vpmovm2w-1.c
  2d631a58d4ba9d40cb0081f84837581b  gcc/testsuite/gcc.target/i386/avx512bw-vpmovm2w-2.c
! 66b7371c44a2141bc879c8295f24662c  gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-1.c
  d89a3e7fea8841425db8f8334b6bf852  gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-2.c
  8a56f5d9d1e0901d2961599ce258247b  gcc/testsuite/gcc.target/i386/avx512bw-vpmovsxbw-1.c
  ed602259785dd505ce43fedc83608fa2  gcc/testsuite/gcc.target/i386/avx512bw-vpmovsxbw-2.c
! 8c716e1e77b74aecf16d86bbff7fb082  gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-1.c
  082edd4008d3b3a00b57e8d3ea996a89  gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-2.c
  678e81e4832220102333a7d756adaadd  gcc/testsuite/gcc.target/i386/avx512bw-vpmovw2m-1.c
  9504524787b82a0ccf486f89f4fe27e1  gcc/testsuite/gcc.target/i386/avx512bw-vpmovw2m-2.c
! 7d06d207fbd0d03584e33f481722e2be  gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-1.c
  7d6fcb3c926679157d1535ecb9ef00af  gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-2.c
  36fd23835105aebbfe3ccb58e069edda  gcc/testsuite/gcc.target/i386/avx512bw-vpmovzxbw-1.c
  6d3d5643ba38c610b31450cf8057ed44  gcc/testsuite/gcc.target/i386/avx512bw-vpmovzxbw-2.c
*************** d79dbf020eaec36e633ca9fe66abc687  gcc/te
*** 43850,43855 ****
--- 44120,44126 ----
  5c96173f399e38ddd940558c0971cefa  gcc/testsuite/gcc.target/i386/avx512dq-pr77476.c
  11ee8aa3053087e52b57627c5e78c508  gcc/testsuite/gcc.target/i386/avx512dq-pr81532.c
  8f0c61768e5bacf2b0e2ff43d584735d  gcc/testsuite/gcc.target/i386/avx512dq-pr82855.c
+ 5b7eeade63f43c643092ab9e82d0bc38  gcc/testsuite/gcc.target/i386/avx512dq-pr93673.c
  802a65b817227165abdd16614cc84b66  gcc/testsuite/gcc.target/i386/avx512dq-vandnpd-1.c
  16658064864d12d7e0b7ea05daac767c  gcc/testsuite/gcc.target/i386/avx512dq-vandnpd-2.c
  f106641a7d12e3bd58bae9ca7a4d556b  gcc/testsuite/gcc.target/i386/avx512dq-vandnps-1.c
*************** f5e2d9cb20058374157f0683dddeff73  gcc/te
*** 44092,44097 ****
--- 44363,44369 ----
  8f7bb029bc3fd998efd8ccadf1f0edf2  gcc/testsuite/gcc.target/i386/avx512f-pr85169.c
  33ef0191b116f2207f8cae72da53f074  gcc/testsuite/gcc.target/i386/avx512f-pr85177.c
  44b94a02b283cd9b531e1679a63bb550  gcc/testsuite/gcc.target/i386/avx512f-pr85255.c
+ d02e54fef14f48afcc720ef0004da5fa  gcc/testsuite/gcc.target/i386/avx512f-pr93673.c
  c03d8cf4fa3fd17be806ad4e6adc4bca  gcc/testsuite/gcc.target/i386/avx512f-prefer.c
  fa779c05cab9a2378601e3ad5ae642ef  gcc/testsuite/gcc.target/i386/avx512f-reduce-op-1.c
  ada32523be27898684e961dc8a530319  gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-1.c
*************** c75f41a84b0ff9e1454ea517888cf42e  gcc/te
*** 44826,44831 ****
--- 45098,45105 ----
  901b5f592de42b8641315e7a0e470c78  gcc/testsuite/gcc.target/i386/avx512vbmi-vpermt2b-2.c
  da943fec8529ab4219ae92fa7701f4f3  gcc/testsuite/gcc.target/i386/avx512vbmi-vpmultishiftqb-1.c
  b3bb92860a7a7725c03afa6bd022047f  gcc/testsuite/gcc.target/i386/avx512vbmi-vpmultishiftqb-2.c
+ 894c1afa27bde11c6d50e1f6fae905b8  gcc/testsuite/gcc.target/i386/avx512vbmi2-vpshld-1.c
+ 1a47d56ff1d6271c07878c0fee5ba0e6  gcc/testsuite/gcc.target/i386/avx512vbmi2-vpshrd-1.c
  00c640a9ee145099cd26543b8b9bfcff  gcc/testsuite/gcc.target/i386/avx512vl-abs-copysign-1.c
  d2d79308516c8d8c17653303db1b5237  gcc/testsuite/gcc.target/i386/avx512vl-abs-copysign-2.c
  84a6c4a5cbbf76f5118a4fa4d8e45dbf  gcc/testsuite/gcc.target/i386/avx512vl-aesdec-2.c
*************** e3cc31b3308cdb56423451f2cd8c2a00  gcc/te
*** 44867,44872 ****
--- 45141,45147 ----
  7cff0350d919ed5edc42e841b11e38f2  gcc/testsuite/gcc.target/i386/avx512vl-pr82370.c
  22c31bf03678131c3d0a583fba1ee269  gcc/testsuite/gcc.target/i386/avx512vl-pr87214-1.c
  dd0303ef457dc2b0fdc13d8c6e3f9345  gcc/testsuite/gcc.target/i386/avx512vl-pr87214-2.c
+ e83e4ca7bfde31c45ab7a663d2cbb1ee  gcc/testsuite/gcc.target/i386/avx512vl-pr93670.c
  a7e85788730f7acc7e5174c636d29676  gcc/testsuite/gcc.target/i386/avx512vl-vaddpd-1.c
  2b0c748a58e54ffa4102710cc467b33b  gcc/testsuite/gcc.target/i386/avx512vl-vaddpd-2.c
  df4c1c2e223dab18c858a16ca0d5bb83  gcc/testsuite/gcc.target/i386/avx512vl-vaddps-1.c
*************** e95da9727388a59b0b2ebe9d1ee7d278  gcc/te
*** 45543,45552 ****
  c292ba048c97e84fe04aa26984af35f1  gcc/testsuite/gcc.target/i386/avx512vl-vxorpd-2.c
  91c9b414d4e752a1bdfcd70fc683eb70  gcc/testsuite/gcc.target/i386/avx512vl-vxorps-2.c
  e8b40df1b29caa7e7a5ad3533f175e18  gcc/testsuite/gcc.target/i386/avx512vlbw-pr82370.c
! f6b7d0b72d217c57bd0c953b18c2bb51  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd-1.c
! 3f0e9e21f8daf76273838121c569322a  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd.c
! 302654a622ec78f477d30938f066623b  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq-1.c
! 88ad44c8930b8f8ccba5c508e25d4bfa  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq.c
  fa2414b7f0b02ba46bfc1187b11b0120  gcc/testsuite/gcc.target/i386/avx512vpopcntdqvl-vpopcntd-1.c
  17d28bf7cef176269dc5873687b13c9f  gcc/testsuite/gcc.target/i386/avx512vpopcntdqvl-vpopcntq-1.c
  5da8354c1b0f081b6c64be550d4b604e  gcc/testsuite/gcc.target/i386/avxfp-1.c
--- 45818,45827 ----
  c292ba048c97e84fe04aa26984af35f1  gcc/testsuite/gcc.target/i386/avx512vl-vxorpd-2.c
  91c9b414d4e752a1bdfcd70fc683eb70  gcc/testsuite/gcc.target/i386/avx512vl-vxorps-2.c
  e8b40df1b29caa7e7a5ad3533f175e18  gcc/testsuite/gcc.target/i386/avx512vlbw-pr82370.c
! 4ee014789b932f3aea1da6e759de7e75  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd-1.c
! 848d7f2507183d53d35a08030c471c3e  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd.c
! d8084141e791dfdf62ee3dc66173d458  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq-1.c
! 776a22660c657e8df374084201fce5f6  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq.c
  fa2414b7f0b02ba46bfc1187b11b0120  gcc/testsuite/gcc.target/i386/avx512vpopcntdqvl-vpopcntd-1.c
  17d28bf7cef176269dc5873687b13c9f  gcc/testsuite/gcc.target/i386/avx512vpopcntdqvl-vpopcntq-1.c
  5da8354c1b0f081b6c64be550d4b604e  gcc/testsuite/gcc.target/i386/avxfp-1.c
*************** e2f92fc61b085e4497461eff83299ca3  gcc/te
*** 45671,45695 ****
  952021d619f2d303a2b0e49db7c8ff04  gcc/testsuite/gcc.target/i386/cet-notrack-3.c
  5c49d05a89027d834db9e8a1a3fcdb75  gcc/testsuite/gcc.target/i386/cet-notrack-4a.c
  23e59cfc2a2ff42cf3c52d39115e995a  gcc/testsuite/gcc.target/i386/cet-notrack-4b.c
! b1ee419bd7c9ff903b2b13c165490544  gcc/testsuite/gcc.target/i386/cet-notrack-5a.c
! 213f3220e27f73cd096deee29bfe795a  gcc/testsuite/gcc.target/i386/cet-notrack-5b.c
  6cc33f7183c2ffe0f20e2fa470b4e950  gcc/testsuite/gcc.target/i386/cet-notrack-6a.c
! 5f1bfc9956dcdc071cf8a8b695cbc0f1  gcc/testsuite/gcc.target/i386/cet-notrack-6b.c
  f46cdc03f831aa997cbc8fa392d93334  gcc/testsuite/gcc.target/i386/cet-notrack-7.c
! dc077e746c37527c5597c2b179544c74  gcc/testsuite/gcc.target/i386/cet-notrack-icf-1.c
! 335fe180a1ba4ffa720a6e9ebf12b263  gcc/testsuite/gcc.target/i386/cet-notrack-icf-2.c
! e4c654c0e4db35ad4940163e3ba44ecf  gcc/testsuite/gcc.target/i386/cet-notrack-icf-3.c
! abba25302d24634f3ddae070ea2fb58d  gcc/testsuite/gcc.target/i386/cet-notrack-icf-4.c
  b8e1eda2f252f129a90e54617fa39500  gcc/testsuite/gcc.target/i386/cet-property-1.c
  f03688bba56369ec92f324db56599b3d  gcc/testsuite/gcc.target/i386/cet-property-2.c
  a4dff4664eff59fc1d1d6ac49e52a6b6  gcc/testsuite/gcc.target/i386/cet-rdssp-1.c
  30e87cc5b4f9a47bb19c047aa978eede  gcc/testsuite/gcc.target/i386/cet-sjlj-1.c
  6a05c49ca46aa3dbc8ba88fa2f003a28  gcc/testsuite/gcc.target/i386/cet-sjlj-2.c
! 935dcef0d444f5fc49aab71a46277269  gcc/testsuite/gcc.target/i386/cet-sjlj-3.c
  468e8aa10ace6b5e1389e5c01cbdb8f2  gcc/testsuite/gcc.target/i386/cet-sjlj-4.c
! 931d0e144a7b6f768acd12086fbb8cfb  gcc/testsuite/gcc.target/i386/cet-sjlj-5.c
  fe18bceea056fa7c5ce2c0eb9fd0f2ce  gcc/testsuite/gcc.target/i386/cet-sjlj-6a.c
! f057c0e2b7799367849b89b799a5ec98  gcc/testsuite/gcc.target/i386/cet-sjlj-6b.c
  a2960f70e9092f35ab7846d97bc2cd2a  gcc/testsuite/gcc.target/i386/cet-switch-1.c
  d9248423c9f1c716a36c066054a7f5b9  gcc/testsuite/gcc.target/i386/cet-switch-2.c
  b20d49e3df7ecba263d6a023f199461f  gcc/testsuite/gcc.target/i386/cet-switch-3.c
--- 45946,45970 ----
  952021d619f2d303a2b0e49db7c8ff04  gcc/testsuite/gcc.target/i386/cet-notrack-3.c
  5c49d05a89027d834db9e8a1a3fcdb75  gcc/testsuite/gcc.target/i386/cet-notrack-4a.c
  23e59cfc2a2ff42cf3c52d39115e995a  gcc/testsuite/gcc.target/i386/cet-notrack-4b.c
! bded049788a0336bba8e18d79c809023  gcc/testsuite/gcc.target/i386/cet-notrack-5a.c
! 5241539010053ebc2e34eeda477d9d8e  gcc/testsuite/gcc.target/i386/cet-notrack-5b.c
  6cc33f7183c2ffe0f20e2fa470b4e950  gcc/testsuite/gcc.target/i386/cet-notrack-6a.c
! d41dd713d6dd7428c1d052ef2972f941  gcc/testsuite/gcc.target/i386/cet-notrack-6b.c
  f46cdc03f831aa997cbc8fa392d93334  gcc/testsuite/gcc.target/i386/cet-notrack-7.c
! a81e13973980d88cc966d202e3240a0a  gcc/testsuite/gcc.target/i386/cet-notrack-icf-1.c
! e420c76b5d51167be532aea06e242b7d  gcc/testsuite/gcc.target/i386/cet-notrack-icf-2.c
! 8314a1039bf8725bf8863476b57fe857  gcc/testsuite/gcc.target/i386/cet-notrack-icf-3.c
! 8f1538b43a15c0827f66b6f4352ef5fb  gcc/testsuite/gcc.target/i386/cet-notrack-icf-4.c
  b8e1eda2f252f129a90e54617fa39500  gcc/testsuite/gcc.target/i386/cet-property-1.c
  f03688bba56369ec92f324db56599b3d  gcc/testsuite/gcc.target/i386/cet-property-2.c
  a4dff4664eff59fc1d1d6ac49e52a6b6  gcc/testsuite/gcc.target/i386/cet-rdssp-1.c
  30e87cc5b4f9a47bb19c047aa978eede  gcc/testsuite/gcc.target/i386/cet-sjlj-1.c
  6a05c49ca46aa3dbc8ba88fa2f003a28  gcc/testsuite/gcc.target/i386/cet-sjlj-2.c
! 0ce34b19fb1aba3fae48ca22781d12e2  gcc/testsuite/gcc.target/i386/cet-sjlj-3.c
  468e8aa10ace6b5e1389e5c01cbdb8f2  gcc/testsuite/gcc.target/i386/cet-sjlj-4.c
! 90c8ac5897434d5e30c476a51d6a1fe4  gcc/testsuite/gcc.target/i386/cet-sjlj-5.c
  fe18bceea056fa7c5ce2c0eb9fd0f2ce  gcc/testsuite/gcc.target/i386/cet-sjlj-6a.c
! 5cd340cda5b41736cb38e2a525269e74  gcc/testsuite/gcc.target/i386/cet-sjlj-6b.c
  a2960f70e9092f35ab7846d97bc2cd2a  gcc/testsuite/gcc.target/i386/cet-switch-1.c
  d9248423c9f1c716a36c066054a7f5b9  gcc/testsuite/gcc.target/i386/cet-switch-2.c
  b20d49e3df7ecba263d6a023f199461f  gcc/testsuite/gcc.target/i386/cet-switch-3.c
*************** a8f61a3e9626bdd65b4e124dbc719d3e  gcc/te
*** 45883,45889 ****
  41b53063e22afc0a435659c465424d74  gcc/testsuite/gcc.target/i386/fpcvt-2.c
  fc83f958b3df91c520e859127c479d26  gcc/testsuite/gcc.target/i386/fpcvt-3.c
  f4728a5ddd8f5b7d2932dd853b2fc88f  gcc/testsuite/gcc.target/i386/fpcvt-4.c
! de21850aa1ee59ff7fed86c89e17eb4a  gcc/testsuite/gcc.target/i386/fpprec-1.c
  c7969e1cd5d8b5cc915431d457857508  gcc/testsuite/gcc.target/i386/funcspec-1.c
  6806422c170b295fd8ff09ca22b12150  gcc/testsuite/gcc.target/i386/funcspec-10.c
  c1320fd604803bc04257c984f1e3ba77  gcc/testsuite/gcc.target/i386/funcspec-11.c
--- 46158,46164 ----
  41b53063e22afc0a435659c465424d74  gcc/testsuite/gcc.target/i386/fpcvt-2.c
  fc83f958b3df91c520e859127c479d26  gcc/testsuite/gcc.target/i386/fpcvt-3.c
  f4728a5ddd8f5b7d2932dd853b2fc88f  gcc/testsuite/gcc.target/i386/fpcvt-4.c
! 7b2c5d3679acd1583e1591dbf6d4c2e5  gcc/testsuite/gcc.target/i386/fpprec-1.c
  c7969e1cd5d8b5cc915431d457857508  gcc/testsuite/gcc.target/i386/funcspec-1.c
  6806422c170b295fd8ff09ca22b12150  gcc/testsuite/gcc.target/i386/funcspec-10.c
  c1320fd604803bc04257c984f1e3ba77  gcc/testsuite/gcc.target/i386/funcspec-11.c
*************** d21f379846343509bea073a20fab4286  gcc/te
*** 45896,45905 ****
  35655de5c9348f2a36254312a8d17908  gcc/testsuite/gcc.target/i386/funcspec-7.c
  c5cbddeb1b01f35a7fa7f281fb2acdb4  gcc/testsuite/gcc.target/i386/funcspec-8.c
  98162f894173cc3f53a1739d65f4341d  gcc/testsuite/gcc.target/i386/funcspec-9.c
! a01d3229673b2eb02bbfb6d1191f0b4a  gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c
  b24def76cda5e6910ee6d0acbaa240e6  gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm-run.c
! d9dbff8ba7e41565da26487dba05d168  gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c
! 2d33bd1acc40ca1c46ab6778a9ee92ac  gcc/testsuite/gcc.target/i386/fuse-caller-save.c
  374b8a1c71832c58fa214de004488fce  gcc/testsuite/gcc.target/i386/fxrstor-1.c
  4ba171e5929e217bf7404c8b2936f4dd  gcc/testsuite/gcc.target/i386/fxrstor64-1.c
  997710cd1065bc38da6deb8c74781d45  gcc/testsuite/gcc.target/i386/fxsave-1.c
--- 46171,46180 ----
  35655de5c9348f2a36254312a8d17908  gcc/testsuite/gcc.target/i386/funcspec-7.c
  c5cbddeb1b01f35a7fa7f281fb2acdb4  gcc/testsuite/gcc.target/i386/funcspec-8.c
  98162f894173cc3f53a1739d65f4341d  gcc/testsuite/gcc.target/i386/funcspec-9.c
! 3a08303eb38d70d9bd8e13a2c173ac97  gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c
  b24def76cda5e6910ee6d0acbaa240e6  gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm-run.c
! bf2ba8b379ebd6007b1d051966393d53  gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c
! 2b0fb9cbf57f10cb2e97ffa7daa9ca55  gcc/testsuite/gcc.target/i386/fuse-caller-save.c
  374b8a1c71832c58fa214de004488fce  gcc/testsuite/gcc.target/i386/fxrstor-1.c
  4ba171e5929e217bf7404c8b2936f4dd  gcc/testsuite/gcc.target/i386/fxrstor64-1.c
  997710cd1065bc38da6deb8c74781d45  gcc/testsuite/gcc.target/i386/fxsave-1.c
*************** b56cbb83f01d0feeec0ec874e60a703c  gcc/te
*** 45974,45992 ****
  cdd25f9aac1f47c227bf3e42b258efa9  gcc/testsuite/gcc.target/i386/incoming-7.c
  74e35cf742c4e2fe9ce50213ed289958  gcc/testsuite/gcc.target/i386/incoming-8.c
  9be1a58062ffa2d8454af884da1b9f81  gcc/testsuite/gcc.target/i386/incoming-9.c
! 05d3ff7fd6d107eff7cfa9af54aed600  gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
  20988adf9b08c4b293517a2c73863343  gcc/testsuite/gcc.target/i386/indirect-thunk-10.c
  a7b1d57cf31d0eab2d7d39d8e1e4464d  gcc/testsuite/gcc.target/i386/indirect-thunk-11.c
  932137e6ed9cc1dd3810fc7ce20c629a  gcc/testsuite/gcc.target/i386/indirect-thunk-12.c
! d5a10c340aca1e4c1b2116dc0bc19ebe  gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
! 4d5fc6b525071b2c53d5f7bd50a1cd89  gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
! fbd8e0dce417f40298be825ed78f88c9  gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
  76b5340f3d1cae758f7f24f209df6970  gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
  44ba2c34bc32936af532c39182517a5f  gcc/testsuite/gcc.target/i386/indirect-thunk-6.c
! 63f3f75fb9218c46a8907df2585e5a34  gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
  136c6b3bb1163a3077d4207bfc4e5275  gcc/testsuite/gcc.target/i386/indirect-thunk-8.c
  c6d529ddda0429e0c528b2de3c8384d4  gcc/testsuite/gcc.target/i386/indirect-thunk-9.c
! e506d2eeeb5b8b6b43de5c106e80ef80  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
  b346e03904cb1d652c2c4820cca183ee  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-10.c
  4bdf208508a160ea7a3791b56b304575  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-11.c
  5e81f089db4d854be34315d7e483471e  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-12.c
--- 46249,46267 ----
  cdd25f9aac1f47c227bf3e42b258efa9  gcc/testsuite/gcc.target/i386/incoming-7.c
  74e35cf742c4e2fe9ce50213ed289958  gcc/testsuite/gcc.target/i386/incoming-8.c
  9be1a58062ffa2d8454af884da1b9f81  gcc/testsuite/gcc.target/i386/incoming-9.c
! adb09d5162a99729c58768a1bbd44763  gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
  20988adf9b08c4b293517a2c73863343  gcc/testsuite/gcc.target/i386/indirect-thunk-10.c
  a7b1d57cf31d0eab2d7d39d8e1e4464d  gcc/testsuite/gcc.target/i386/indirect-thunk-11.c
  932137e6ed9cc1dd3810fc7ce20c629a  gcc/testsuite/gcc.target/i386/indirect-thunk-12.c
! c95e46383fd5a4501004a0bc1f5d9d21  gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
! 9ff9f61cd5b668186b7c213dca7378ae  gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
! 7519f59c10ed77932ed2015e31053234  gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
  76b5340f3d1cae758f7f24f209df6970  gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
  44ba2c34bc32936af532c39182517a5f  gcc/testsuite/gcc.target/i386/indirect-thunk-6.c
! cd9517f2fb2890df6ac085a32cef6533  gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
  136c6b3bb1163a3077d4207bfc4e5275  gcc/testsuite/gcc.target/i386/indirect-thunk-8.c
  c6d529ddda0429e0c528b2de3c8384d4  gcc/testsuite/gcc.target/i386/indirect-thunk-9.c
! 5f543478181e42734efbd6110e7a3598  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
  b346e03904cb1d652c2c4820cca183ee  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-10.c
  4bdf208508a160ea7a3791b56b304575  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-11.c
  5e81f089db4d854be34315d7e483471e  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-12.c
*************** a4d4ac47a9c336b9947886236539baea  gcc/te
*** 45994,46032 ****
  106f345e11b8b4cded15dbf3ffb2edb0  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-14.c
  a4d96121729449511a36dec6e52a2d54  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-15.c
  87be5d0cddfe925ec07c32de7dd7dcac  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-16.c
! ea5b37cade05b968b2f5aae50077c1c3  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
! ee3b180c37ee9f060fe5b24fbacc428f  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
! e852a496ae80ad82a0595c6f008a2722  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
! 3c36cf61aba8f95f05132704b4b0c8eb  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
! 0bf52c88118e706a56766cfe59df0852  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
! c1a69bca2e988ac9383792e0f01d065e  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c
! 867bd0927104666fdf41c8c325a2553d  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c
  f062bd94d2bcc6229905c541b481a03c  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-9.c
! 77b1a8e1b258b90e1edbf0d45372c0eb  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c
! d58705acef59a328f4fd1bbe1a065bac  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c
  6b017ce0cbb85638db969dbc3bd5bf0e  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c
  57fbd8dfbb47b45fbd1ce000c16c7a6c  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c
! 14cc4f9a9b2dd94edd821f84af94c611  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
  4a99e43607f0c6aa8988113aa56bacae  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-10.c
! 4a1f3c4792dd58316fcbf552deda210a  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
! 1bbe5649136f8a47208ce67e71058493  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
! 8995ae15651c704262997baa0032794a  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
  d60595421b98710f0053736975cb92fb  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c
  159efa6bc07479836c1f52e007ec64f0  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c
! b3b67e4893c9cef21a178bd6d24de60d  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
  99f3e5d8d0922ca800161322c831a20a  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-8.c
  0485e0ab743074b88468ebcd125a49b8  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-9.c
! d908699f85e4c95b098f3d81dbba9a45  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
! 4b8df590855bc29c6f9a503d85024db8  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
! 2942c6699b3b2e99c37686f596473393  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
! 8c08ad924ba0e02e7ff6522ade53773b  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
  22d3ec31148d7eb42f889f412e80b98e  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c
  4bb39d2b0069f6a250bb165c0280899d  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c
! 097bfd363392d403f5385d77cbb64786  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
! 1a18d20db658bd8f06db72e826e24451  gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c
! 2f7b88c05e6f84c135d8684048b1ddfb  gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c
! 0f53eb2f8dd4745fc0d56597a3a5cc39  gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c
! cc84faa83bbaff46af08a97446ceeeb8  gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c
  ee5ee3c3feb8c1952691f98991ee7be3  gcc/testsuite/gcc.target/i386/indjmp-1.c
  aa8a4b5daac0c21a379120ce3ab4e865  gcc/testsuite/gcc.target/i386/inline-mcpy.c
  e72f30e619db24586870d8d3878cd987  gcc/testsuite/gcc.target/i386/inline_error.c
--- 46269,46307 ----
  106f345e11b8b4cded15dbf3ffb2edb0  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-14.c
  a4d96121729449511a36dec6e52a2d54  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-15.c
  87be5d0cddfe925ec07c32de7dd7dcac  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-16.c
! 266256bf9c72b3811751520548dcdf0e  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
! 7ad61ec0982e9eba391693dbb5e52d1c  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
! 7acc4f7264d2475c20aeb874707181ee  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
! b97ad0329e6caafdacfeb7480b4b75cc  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
! c27b27ac0212566fd3133978c6ad8edf  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
! 9e211cadb1b686a1d6b8c68737f2cc8f  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c
! 1a3da150db1b16fc41bda9bbd7ca308e  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c
  f062bd94d2bcc6229905c541b481a03c  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-9.c
! 248485e93728454351ce9e7bd278b507  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c
! c2a04a6c09ea9da2269bab141681c226  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c
  6b017ce0cbb85638db969dbc3bd5bf0e  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c
  57fbd8dfbb47b45fbd1ce000c16c7a6c  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c
! b56dd85b92863436bb371da8d9f1a9b8  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
  4a99e43607f0c6aa8988113aa56bacae  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-10.c
! 2965e739e22d2a2f074cf21684e44d79  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
! 642fe8dc37b80cd5a23db87f2790d7da  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
! a7eb6eedf20a23f9562103441bfe762e  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
  d60595421b98710f0053736975cb92fb  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c
  159efa6bc07479836c1f52e007ec64f0  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c
! 7caad64af2c8b081cc9641db901f52f1  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
  99f3e5d8d0922ca800161322c831a20a  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-8.c
  0485e0ab743074b88468ebcd125a49b8  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-9.c
! dc38272c2c77f004e9b1432854810cc0  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
! 3647393dca68e3247168db40d40dfddc  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
! c0f49c5ea58f441879a0a937ede627ef  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
! 577426cf82a5f996238328bf79562260  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
  22d3ec31148d7eb42f889f412e80b98e  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c
  4bb39d2b0069f6a250bb165c0280899d  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c
! 9b18301c6819350bef178c74ce5003b1  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
! efda0af05107f5f099c13c03e1157e44  gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c
! a09ada0e82af6f6e6522d77d6b3e549d  gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c
! 995443abdd47a45dcd059145549ffe13  gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c
! 2589f31cac8d58723b7156ade58d680a  gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c
  ee5ee3c3feb8c1952691f98991ee7be3  gcc/testsuite/gcc.target/i386/indjmp-1.c
  aa8a4b5daac0c21a379120ce3ab4e865  gcc/testsuite/gcc.target/i386/inline-mcpy.c
  e72f30e619db24586870d8d3878cd987  gcc/testsuite/gcc.target/i386/inline_error.c
*************** cda0d89452347311cc45a79be2d8f0fc  gcc/te
*** 46200,46211 ****
  536862ceddae932e3d7da830f0866d31  gcc/testsuite/gcc.target/i386/memcpy-3.c
  39eae588cd264db47b4b4188c56710e7  gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c
  29f6565471ceb4dea82eb41bb79559df  gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c
! 36eea93d2314b17dabcb2b0a81e809d9  gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c
  6e857b4eb94b8707c380e73efcbc5a51  gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c
  c311ee7acf008e98e58f5984f29e567b  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c
  c84ec8a2cd4608e33d447c561108ce97  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c
  40cce91585f47cde61390171cd489668  gcc/testsuite/gcc.target/i386/memset-1.c
! 8dc0b20158a4bbdad650a8874321918c  gcc/testsuite/gcc.target/i386/memset-strategy-1.c
  e34fc4954adf255e63dd959604f68e95  gcc/testsuite/gcc.target/i386/memset-strategy-2.c
  abacd2e1491b7c40915d4be18c0229b4  gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c
  87dbca58e427b20c0f83b7a2aefbd38a  gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c
--- 46475,46486 ----
  536862ceddae932e3d7da830f0866d31  gcc/testsuite/gcc.target/i386/memcpy-3.c
  39eae588cd264db47b4b4188c56710e7  gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c
  29f6565471ceb4dea82eb41bb79559df  gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c
! 9724a363e64e9b37caa5ac0cf2159afd  gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c
  6e857b4eb94b8707c380e73efcbc5a51  gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c
  c311ee7acf008e98e58f5984f29e567b  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c
  c84ec8a2cd4608e33d447c561108ce97  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c
  40cce91585f47cde61390171cd489668  gcc/testsuite/gcc.target/i386/memset-1.c
! 5d42d8053ea9c0f90ccef1a5662638be  gcc/testsuite/gcc.target/i386/memset-strategy-1.c
  e34fc4954adf255e63dd959604f68e95  gcc/testsuite/gcc.target/i386/memset-strategy-2.c
  abacd2e1491b7c40915d4be18c0229b4  gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c
  87dbca58e427b20c0f83b7a2aefbd38a  gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c
*************** bccc40fa95a11c992c5319581f1c269f  gcc/te
*** 46596,46602 ****
  b6587e8091b873e052b86981b4c6dd26  gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
  56f7ac50c182627b5551065184b25a3b  gcc/testsuite/gcc.target/i386/pclmul-check.h
  15dd7e15fc38c0bad00692ec554b7cd1  gcc/testsuite/gcc.target/i386/pclmulqdq.c
! 8b3b679a09af74c65842ad3923421a1f  gcc/testsuite/gcc.target/i386/pconfig-1.c
  9679e778097966e5b39d1c4130b0ee74  gcc/testsuite/gcc.target/i386/pentium4-not-mull.c
  51cadc9814c437e72abf8293afd36241  gcc/testsuite/gcc.target/i386/perm-concat.c
  6b3a29397edcea192308598d8a9d0cce  gcc/testsuite/gcc.target/i386/pic-1.c
--- 46871,46877 ----
  b6587e8091b873e052b86981b4c6dd26  gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
  56f7ac50c182627b5551065184b25a3b  gcc/testsuite/gcc.target/i386/pclmul-check.h
  15dd7e15fc38c0bad00692ec554b7cd1  gcc/testsuite/gcc.target/i386/pclmulqdq.c
! 242d92e5ef4346cc2cfc13adcf2f3314  gcc/testsuite/gcc.target/i386/pconfig-1.c
  9679e778097966e5b39d1c4130b0ee74  gcc/testsuite/gcc.target/i386/pentium4-not-mull.c
  51cadc9814c437e72abf8293afd36241  gcc/testsuite/gcc.target/i386/perm-concat.c
  6b3a29397edcea192308598d8a9d0cce  gcc/testsuite/gcc.target/i386/pic-1.c
*************** e8b5b0802fdf96fc410ecd02fd9f6c85  gcc/te
*** 46643,46649 ****
  fdacb6b61a5d36e161500b14166654ae  gcc/testsuite/gcc.target/i386/pr21101.c
  6043d0b4998dd913e2d9e533a24f6a55  gcc/testsuite/gcc.target/i386/pr21291.c
  95f61d1360614e076d6888229ba0588f  gcc/testsuite/gcc.target/i386/pr21518.c
! a4e2299ab741326b41b7c96d680454dc  gcc/testsuite/gcc.target/i386/pr22076.c
  7c75138083b8282a0a6352ac179a89b4  gcc/testsuite/gcc.target/i386/pr22141.c
  8f2b174cc8f2156d82ca023e56a0b480  gcc/testsuite/gcc.target/i386/pr22152.c
  8ba2071af1172c3cd6d8259c589bc794  gcc/testsuite/gcc.target/i386/pr22362.c
--- 46918,46924 ----
  fdacb6b61a5d36e161500b14166654ae  gcc/testsuite/gcc.target/i386/pr21101.c
  6043d0b4998dd913e2d9e533a24f6a55  gcc/testsuite/gcc.target/i386/pr21291.c
  95f61d1360614e076d6888229ba0588f  gcc/testsuite/gcc.target/i386/pr21518.c
! 873aea068e102b2d11c7796945eba0e6  gcc/testsuite/gcc.target/i386/pr22076.c
  7c75138083b8282a0a6352ac179a89b4  gcc/testsuite/gcc.target/i386/pr22141.c
  8f2b174cc8f2156d82ca023e56a0b480  gcc/testsuite/gcc.target/i386/pr22152.c
  8ba2071af1172c3cd6d8259c589bc794  gcc/testsuite/gcc.target/i386/pr22362.c
*************** e99eb064d503f38b5a9c419915b38ae9  gcc/te
*** 46660,46666 ****
  d0e5cc510ff9f517c83e2f7086ecb411  gcc/testsuite/gcc.target/i386/pr24178.c
  7757504bdc3b5bd70de1a5960fb48a38  gcc/testsuite/gcc.target/i386/pr24306.c
  32fe0462a1b53d3fc2901ef49c868f00  gcc/testsuite/gcc.target/i386/pr24315.c
! 9e228011509a5ea1e0aa6c774b08d522  gcc/testsuite/gcc.target/i386/pr24414.c
  7374a381241b2f4065e5ce84cfc03f77  gcc/testsuite/gcc.target/i386/pr25196.c
  e2e1fa15682cd42c52206538adc05f64  gcc/testsuite/gcc.target/i386/pr25254.c
  303aec7f9e7bd15228b804c19e082f1e  gcc/testsuite/gcc.target/i386/pr25293.c
--- 46935,46941 ----
  d0e5cc510ff9f517c83e2f7086ecb411  gcc/testsuite/gcc.target/i386/pr24178.c
  7757504bdc3b5bd70de1a5960fb48a38  gcc/testsuite/gcc.target/i386/pr24306.c
  32fe0462a1b53d3fc2901ef49c868f00  gcc/testsuite/gcc.target/i386/pr24315.c
! 0f58cd327f51c6024b5baa09e289c4e1  gcc/testsuite/gcc.target/i386/pr24414.c
  7374a381241b2f4065e5ce84cfc03f77  gcc/testsuite/gcc.target/i386/pr25196.c
  e2e1fa15682cd42c52206538adc05f64  gcc/testsuite/gcc.target/i386/pr25254.c
  303aec7f9e7bd15228b804c19e082f1e  gcc/testsuite/gcc.target/i386/pr25293.c
*************** a07b3ac10c2e8d8960d5f94aacc75325  gcc/te
*** 46695,46708 ****
  9b916b67c68cce873259ce7198b6593b  gcc/testsuite/gcc.target/i386/pr32065-1.c
  694842da5eb4c5254d8b4bfe1dc8c111  gcc/testsuite/gcc.target/i386/pr32065-2.c
  1f9ce93e6d6ec25c764294b90cdb8d4a  gcc/testsuite/gcc.target/i386/pr32191.c
! 22203c7ad5e43b79eb21de05c3452845  gcc/testsuite/gcc.target/i386/pr32219-1.c
! 55289efe9ecdd9f86bee8fb362351170  gcc/testsuite/gcc.target/i386/pr32219-2.c
! 78624072da7312f0eb3cca7f219f416a  gcc/testsuite/gcc.target/i386/pr32219-3.c
! 3300f67245e33576cce58d6bc96e779c  gcc/testsuite/gcc.target/i386/pr32219-4.c
! 8ea5bd47a0cead9c4356e12ff6b5dcef  gcc/testsuite/gcc.target/i386/pr32219-5.c
! efa58ffb44f624da36aeac4c205d0d78  gcc/testsuite/gcc.target/i386/pr32219-6.c
! a63c6aefa093092a5201851c6a0ebc55  gcc/testsuite/gcc.target/i386/pr32219-7.c
! 07c126afe0aa2853ccc8538da083fd19  gcc/testsuite/gcc.target/i386/pr32219-8.c
  0d754f3296fed9daf149740a268d8931  gcc/testsuite/gcc.target/i386/pr32219-9.c
  d165bed09148366aaa31f611e7089751  gcc/testsuite/gcc.target/i386/pr32268.c
  23769d8ea259071995070dc88b8cefc7  gcc/testsuite/gcc.target/i386/pr32280-1.c
--- 46970,46983 ----
  9b916b67c68cce873259ce7198b6593b  gcc/testsuite/gcc.target/i386/pr32065-1.c
  694842da5eb4c5254d8b4bfe1dc8c111  gcc/testsuite/gcc.target/i386/pr32065-2.c
  1f9ce93e6d6ec25c764294b90cdb8d4a  gcc/testsuite/gcc.target/i386/pr32191.c
! 3ef466a500bee78557e9f8543d11be2f  gcc/testsuite/gcc.target/i386/pr32219-1.c
! 79a2e189766746b2f0f07d4459e83e18  gcc/testsuite/gcc.target/i386/pr32219-2.c
! 324eb5d6acff05e4f8056c7dbee9683c  gcc/testsuite/gcc.target/i386/pr32219-3.c
! 31e1ff1e1dea7eb33b16e3b0e7b51cc1  gcc/testsuite/gcc.target/i386/pr32219-4.c
! b4936c47ad27f5cfcac7ada484a24cac  gcc/testsuite/gcc.target/i386/pr32219-5.c
! 786db7c45dc2a6ae29200eac1b80c7d3  gcc/testsuite/gcc.target/i386/pr32219-6.c
! 89fc6d77f9488a3112b71f1d23bc8864  gcc/testsuite/gcc.target/i386/pr32219-7.c
! 51cdace97592cf8fb6a08aa60c3eb253  gcc/testsuite/gcc.target/i386/pr32219-8.c
  0d754f3296fed9daf149740a268d8931  gcc/testsuite/gcc.target/i386/pr32219-9.c
  d165bed09148366aaa31f611e7089751  gcc/testsuite/gcc.target/i386/pr32268.c
  23769d8ea259071995070dc88b8cefc7  gcc/testsuite/gcc.target/i386/pr32280-1.c
*************** b17093c3bfb7dce01e2961b9007a74f1  gcc/te
*** 46777,46784 ****
  302fd577a2a020db1af8817a3e4168ac  gcc/testsuite/gcc.target/i386/pr38824.c
  cc52fb6e855215f99580b9fa0002669f  gcc/testsuite/gcc.target/i386/pr38931.c
  776dfcacbe92f325df29c325a1a39d91  gcc/testsuite/gcc.target/i386/pr38988.c
! c8d1ff9429ba4604dabba902390d2bb7  gcc/testsuite/gcc.target/i386/pr39013-1.c
! 209afdf599b8ee30768436785833894b  gcc/testsuite/gcc.target/i386/pr39013-2.c
  1441ac15d0d7e61256bb4a348e29d6cf  gcc/testsuite/gcc.target/i386/pr39058.c
  b11c8e619e3aa58383c3682c25436e38  gcc/testsuite/gcc.target/i386/pr39082-1.c
  94f116f1e5835fc4ff466f7510f151e4  gcc/testsuite/gcc.target/i386/pr39139.c
--- 47052,47059 ----
  302fd577a2a020db1af8817a3e4168ac  gcc/testsuite/gcc.target/i386/pr38824.c
  cc52fb6e855215f99580b9fa0002669f  gcc/testsuite/gcc.target/i386/pr38931.c
  776dfcacbe92f325df29c325a1a39d91  gcc/testsuite/gcc.target/i386/pr38988.c
! 139b8a82970c0216c2382ef1c3fafd48  gcc/testsuite/gcc.target/i386/pr39013-1.c
! 8ed5e3e1acfe24d9701317573d9c1a1b  gcc/testsuite/gcc.target/i386/pr39013-2.c
  1441ac15d0d7e61256bb4a348e29d6cf  gcc/testsuite/gcc.target/i386/pr39058.c
  b11c8e619e3aa58383c3682c25436e38  gcc/testsuite/gcc.target/i386/pr39082-1.c
  94f116f1e5835fc4ff466f7510f151e4  gcc/testsuite/gcc.target/i386/pr39139.c
*************** e96e89bee2b35c95b790aab0af5d4c57  gcc/te
*** 46949,46955 ****
  d6e516d1e403892d4cc4985025b0655a  gcc/testsuite/gcc.target/i386/pr49715-1.c
  f2fc960bed4e328a5f9df7a309ea139d  gcc/testsuite/gcc.target/i386/pr49715-2.c
  f7ab73a2fd4f6a3dd974d04abb4a16b0  gcc/testsuite/gcc.target/i386/pr49781-1.c
! a1b436434f76fdc1fde0e433a1c5b3b4  gcc/testsuite/gcc.target/i386/pr49866.c
  f6f60a959460e8b78dd6402b43af4809  gcc/testsuite/gcc.target/i386/pr49920.c
  4e2731d8a8d0fba23d5859b02be21702  gcc/testsuite/gcc.target/i386/pr49927.c
  4e15899cf7cde94f403bc044accb5f22  gcc/testsuite/gcc.target/i386/pr50038.c
--- 47224,47230 ----
  d6e516d1e403892d4cc4985025b0655a  gcc/testsuite/gcc.target/i386/pr49715-1.c
  f2fc960bed4e328a5f9df7a309ea139d  gcc/testsuite/gcc.target/i386/pr49715-2.c
  f7ab73a2fd4f6a3dd974d04abb4a16b0  gcc/testsuite/gcc.target/i386/pr49781-1.c
! 60f4b57b6b6a4d210042d2f56e1d33cf  gcc/testsuite/gcc.target/i386/pr49866.c
  f6f60a959460e8b78dd6402b43af4809  gcc/testsuite/gcc.target/i386/pr49920.c
  4e2731d8a8d0fba23d5859b02be21702  gcc/testsuite/gcc.target/i386/pr49927.c
  4e15899cf7cde94f403bc044accb5f22  gcc/testsuite/gcc.target/i386/pr50038.c
*************** aff7074250516571a07457eace3f2639  gcc/te
*** 46965,46981 ****
  e2c5c9c01d62f181543c46c15e625efc  gcc/testsuite/gcc.target/i386/pr51236.c
  cc3feb019a23f31f22f8d90ea35306a2  gcc/testsuite/gcc.target/i386/pr51393.c
  feae34d686df3d5dc6348f1e08292d5f  gcc/testsuite/gcc.target/i386/pr51987.c
! 9e2c6dc3ff1a53066110e22a1b8878fa  gcc/testsuite/gcc.target/i386/pr52146.c
  fa01242d5badde4691345c598d6cad72  gcc/testsuite/gcc.target/i386/pr52171.c
  ef886cc6e383e494a854c7e9478d4347  gcc/testsuite/gcc.target/i386/pr52252-atom.c
  66960d383ca0ec04f2cfc2ce546d9746  gcc/testsuite/gcc.target/i386/pr52252-core.c
  e90dc7f0b1e6d26c11b5224430e328db  gcc/testsuite/gcc.target/i386/pr52330.c
! 663a04de8e14ab888ac539e83abb3848  gcc/testsuite/gcc.target/i386/pr52698.c
  0c3fdc1f40423ab5e185c0b1d9df7215  gcc/testsuite/gcc.target/i386/pr52736.c
  d5747936af421343d3d26320d8dd18a6  gcc/testsuite/gcc.target/i386/pr52754.c
! f3734af93c1735fb407310153bbcc265  gcc/testsuite/gcc.target/i386/pr52857-1.c
! 3c73c51d0b4edd63528474f20107a721  gcc/testsuite/gcc.target/i386/pr52857-2.c
! 8567c3e77e9c76d198a3c6cdfdd49a41  gcc/testsuite/gcc.target/i386/pr52876.c
  ae96f2a6ec3876560fe977282760bda7  gcc/testsuite/gcc.target/i386/pr52882.c
  908f895d749fbe4b41db70b705b92270  gcc/testsuite/gcc.target/i386/pr52883.c
  7cd607f59acbf5495f51e7f583bdfaaf  gcc/testsuite/gcc.target/i386/pr53249.c
--- 47240,47256 ----
  e2c5c9c01d62f181543c46c15e625efc  gcc/testsuite/gcc.target/i386/pr51236.c
  cc3feb019a23f31f22f8d90ea35306a2  gcc/testsuite/gcc.target/i386/pr51393.c
  feae34d686df3d5dc6348f1e08292d5f  gcc/testsuite/gcc.target/i386/pr51987.c
! 28bbe8fb8e03847360d72e655a04541c  gcc/testsuite/gcc.target/i386/pr52146.c
  fa01242d5badde4691345c598d6cad72  gcc/testsuite/gcc.target/i386/pr52171.c
  ef886cc6e383e494a854c7e9478d4347  gcc/testsuite/gcc.target/i386/pr52252-atom.c
  66960d383ca0ec04f2cfc2ce546d9746  gcc/testsuite/gcc.target/i386/pr52252-core.c
  e90dc7f0b1e6d26c11b5224430e328db  gcc/testsuite/gcc.target/i386/pr52330.c
! c48d1106f891da8cb9f2181a389e01b7  gcc/testsuite/gcc.target/i386/pr52698.c
  0c3fdc1f40423ab5e185c0b1d9df7215  gcc/testsuite/gcc.target/i386/pr52736.c
  d5747936af421343d3d26320d8dd18a6  gcc/testsuite/gcc.target/i386/pr52754.c
! 517bbfb07279a94cd6901ed62f114aa9  gcc/testsuite/gcc.target/i386/pr52857-1.c
! 2d8dc92c147e4d0bcabd8dc699be03f3  gcc/testsuite/gcc.target/i386/pr52857-2.c
! 95e57e45c052d6f02d8aa1f9d072f874  gcc/testsuite/gcc.target/i386/pr52876.c
  ae96f2a6ec3876560fe977282760bda7  gcc/testsuite/gcc.target/i386/pr52882.c
  908f895d749fbe4b41db70b705b92270  gcc/testsuite/gcc.target/i386/pr52883.c
  7cd607f59acbf5495f51e7f583bdfaaf  gcc/testsuite/gcc.target/i386/pr53249.c
*************** fd40b61a82fba3ab0c6bb50cfedfb117  gcc/te
*** 46991,47001 ****
  438890bd8588325bfdd31602ae74f65c  gcc/testsuite/gcc.target/i386/pr53425-1.c
  384ba022d2854e096a4ab0f145961c51  gcc/testsuite/gcc.target/i386/pr53425-2.c
  b39743561f1aade37b33835b241fb062  gcc/testsuite/gcc.target/i386/pr53623.c
! fab0d7a06b537344b89206ac0118ede7  gcc/testsuite/gcc.target/i386/pr53698.c
  7a5c747070caa41b5e773ef449165641  gcc/testsuite/gcc.target/i386/pr53712.c
  a9790955f72731a48e8cc07e79081c86  gcc/testsuite/gcc.target/i386/pr53759.c
  b845585001d3aa1599603bf8f8438393  gcc/testsuite/gcc.target/i386/pr53907.c
! a1bce0d57b6fd35c2faf04c2f80d6550  gcc/testsuite/gcc.target/i386/pr54157.c
  dba42c939904ce7e33213ea822d41659  gcc/testsuite/gcc.target/i386/pr54400.c
  414b8adf659b6e0fae2493215e4c8e43  gcc/testsuite/gcc.target/i386/pr54445-1.c
  f69bb6692a438b6c4c3ae59e8151f9e5  gcc/testsuite/gcc.target/i386/pr54445-2.c
--- 47266,47276 ----
  438890bd8588325bfdd31602ae74f65c  gcc/testsuite/gcc.target/i386/pr53425-1.c
  384ba022d2854e096a4ab0f145961c51  gcc/testsuite/gcc.target/i386/pr53425-2.c
  b39743561f1aade37b33835b241fb062  gcc/testsuite/gcc.target/i386/pr53623.c
! 179de2cb7520586109384b9edf5a9b30  gcc/testsuite/gcc.target/i386/pr53698.c
  7a5c747070caa41b5e773ef449165641  gcc/testsuite/gcc.target/i386/pr53712.c
  a9790955f72731a48e8cc07e79081c86  gcc/testsuite/gcc.target/i386/pr53759.c
  b845585001d3aa1599603bf8f8438393  gcc/testsuite/gcc.target/i386/pr53907.c
! c6b9296a558aaf5187a02addf73c05d0  gcc/testsuite/gcc.target/i386/pr54157.c
  dba42c939904ce7e33213ea822d41659  gcc/testsuite/gcc.target/i386/pr54400.c
  414b8adf659b6e0fae2493215e4c8e43  gcc/testsuite/gcc.target/i386/pr54445-1.c
  f69bb6692a438b6c4c3ae59e8151f9e5  gcc/testsuite/gcc.target/i386/pr54445-2.c
*************** f69bb6692a438b6c4c3ae59e8151f9e5  gcc/te
*** 47003,47012 ****
  49bc157be86e0960ae4e4637c5986069  gcc/testsuite/gcc.target/i386/pr54592.c
  6d7b053bbb28bb9e1a4e8c1967a60835  gcc/testsuite/gcc.target/i386/pr54694.c
  c502c143bfe08e286784446e3a530233  gcc/testsuite/gcc.target/i386/pr54703.c
! 94c3ae931dcc50fe3b4806ac10d8b49d  gcc/testsuite/gcc.target/i386/pr55049-1.c
! e64fab110c29e7a7dac4eab53a510cd4  gcc/testsuite/gcc.target/i386/pr55093.c
! 971529c1cb0a306601d8a61d4df7716c  gcc/testsuite/gcc.target/i386/pr55116-1.c
! 9fa9c0c5f09f31e76035778e3bf46b4f  gcc/testsuite/gcc.target/i386/pr55116-2.c
  850e83f914a40f18a2e5580f476368ec  gcc/testsuite/gcc.target/i386/pr55130.c
  815f3e59894f23400b8f65f47018b0a6  gcc/testsuite/gcc.target/i386/pr55141.c
  f87cf0427662776b6b805de195141d67  gcc/testsuite/gcc.target/i386/pr55142-1.c
--- 47278,47287 ----
  49bc157be86e0960ae4e4637c5986069  gcc/testsuite/gcc.target/i386/pr54592.c
  6d7b053bbb28bb9e1a4e8c1967a60835  gcc/testsuite/gcc.target/i386/pr54694.c
  c502c143bfe08e286784446e3a530233  gcc/testsuite/gcc.target/i386/pr54703.c
! f9b778e3b98dfbae81a8d9edc0e6e7f0  gcc/testsuite/gcc.target/i386/pr55049-1.c
! 2d60942307fe4e7e807550a8a784f351  gcc/testsuite/gcc.target/i386/pr55093.c
! 65f2fe2ece7ea124fb44ac3412f502b0  gcc/testsuite/gcc.target/i386/pr55116-1.c
! daa42859823476fca1b35a79f1daabe0  gcc/testsuite/gcc.target/i386/pr55116-2.c
  850e83f914a40f18a2e5580f476368ec  gcc/testsuite/gcc.target/i386/pr55130.c
  815f3e59894f23400b8f65f47018b0a6  gcc/testsuite/gcc.target/i386/pr55141.c
  f87cf0427662776b6b805de195141d67  gcc/testsuite/gcc.target/i386/pr55142-1.c
*************** b4fb0c886229835ec55bd681f831812b  gcc/te
*** 47028,47034 ****
  2d3d0716987d79a9b2427e2e7237c420  gcc/testsuite/gcc.target/i386/pr55512-4.c
  ed1ba8dd30b6e7d0c41497405b5c6d08  gcc/testsuite/gcc.target/i386/pr55590-1.c
  f36e5b68f83ad7f55d170085ad4c4fff  gcc/testsuite/gcc.target/i386/pr55590-2.c
! 3a737ef7a5b3519c35502247ffe7f87c  gcc/testsuite/gcc.target/i386/pr55597.c
  05e04dbd1677ad71dcef52e0ba2805c7  gcc/testsuite/gcc.target/i386/pr55672.c
  f10a165430aeef45c61d11278003318d  gcc/testsuite/gcc.target/i386/pr55686.c
  12194a8a936bb0fdc429c4ad3ad689df  gcc/testsuite/gcc.target/i386/pr55775.c
--- 47303,47309 ----
  2d3d0716987d79a9b2427e2e7237c420  gcc/testsuite/gcc.target/i386/pr55512-4.c
  ed1ba8dd30b6e7d0c41497405b5c6d08  gcc/testsuite/gcc.target/i386/pr55590-1.c
  f36e5b68f83ad7f55d170085ad4c4fff  gcc/testsuite/gcc.target/i386/pr55590-2.c
! bdfd75705a8ed1ae370d0e6397e89e61  gcc/testsuite/gcc.target/i386/pr55597.c
  05e04dbd1677ad71dcef52e0ba2805c7  gcc/testsuite/gcc.target/i386/pr55672.c
  f10a165430aeef45c61d11278003318d  gcc/testsuite/gcc.target/i386/pr55686.c
  12194a8a936bb0fdc429c4ad3ad689df  gcc/testsuite/gcc.target/i386/pr55775.c
*************** af5df137e86c7cfd11e8d68f07c8d25c  gcc/te
*** 47130,47139 ****
  0c2d582f00adc7472660160cba8ba19b  gcc/testsuite/gcc.target/i386/pr59839.c
  d1a0e61387e72001b140b22cec7d1a93  gcc/testsuite/gcc.target/i386/pr59874-1.c
  5e70c91e6aef9c124836dbc1d66c0bdc  gcc/testsuite/gcc.target/i386/pr59874-2.c
! 2ec6baf4aeb86d68a84163d2477d428e  gcc/testsuite/gcc.target/i386/pr59874-3.c
  918053d5181acfecc88c708f27f8f436  gcc/testsuite/gcc.target/i386/pr59880.c
  b87fe1f8e7496a37c4723f6e51a2ea39  gcc/testsuite/gcc.target/i386/pr59927.c
! 45e03a75da61788fe5e604ebad69b06f  gcc/testsuite/gcc.target/i386/pr59929.c
  fb96b888f73b2dddf89b41b3dbc9da0e  gcc/testsuite/gcc.target/i386/pr60077-1.c
  87f9b9773ac7d3c76e952ed8199c7a7c  gcc/testsuite/gcc.target/i386/pr60077-2.c
  ca6424ec4af0910766ce85dcf738c0c9  gcc/testsuite/gcc.target/i386/pr60205-1.c
--- 47405,47414 ----
  0c2d582f00adc7472660160cba8ba19b  gcc/testsuite/gcc.target/i386/pr59839.c
  d1a0e61387e72001b140b22cec7d1a93  gcc/testsuite/gcc.target/i386/pr59874-1.c
  5e70c91e6aef9c124836dbc1d66c0bdc  gcc/testsuite/gcc.target/i386/pr59874-2.c
! aeab82c6005d256c58b161b65c623187  gcc/testsuite/gcc.target/i386/pr59874-3.c
  918053d5181acfecc88c708f27f8f436  gcc/testsuite/gcc.target/i386/pr59880.c
  b87fe1f8e7496a37c4723f6e51a2ea39  gcc/testsuite/gcc.target/i386/pr59927.c
! 64ee275f9d63edbf1b06ed2ca865a50b  gcc/testsuite/gcc.target/i386/pr59929.c
  fb96b888f73b2dddf89b41b3dbc9da0e  gcc/testsuite/gcc.target/i386/pr60077-1.c
  87f9b9773ac7d3c76e952ed8199c7a7c  gcc/testsuite/gcc.target/i386/pr60077-2.c
  ca6424ec4af0910766ce85dcf738c0c9  gcc/testsuite/gcc.target/i386/pr60205-1.c
*************** a2283164e9ac8a9ecb6ab0a475ca6ce4  gcc/te
*** 47162,47168 ****
  c2ad80ced67848aa724c64790fae16e7  gcc/testsuite/gcc.target/i386/pr61423.c
  c862a3c17ff7c49e42a7fd543dbaf3ab  gcc/testsuite/gcc.target/i386/pr61446.c
  41c81c5a9c11d9139ad858d341f4ab52  gcc/testsuite/gcc.target/i386/pr61572.c
! 3f4cbdecf1917a066aa3efa5412627d9  gcc/testsuite/gcc.target/i386/pr61599-1.c
  e12bd6c5d5e4249892681c3ca63428e6  gcc/testsuite/gcc.target/i386/pr61599-2.c
  2ee0efa258974320c9447d777ed0cd1e  gcc/testsuite/gcc.target/i386/pr61794.c
  0af95498db628ce9ab87f06bcc3818c2  gcc/testsuite/gcc.target/i386/pr61801.c
--- 47437,47443 ----
  c2ad80ced67848aa724c64790fae16e7  gcc/testsuite/gcc.target/i386/pr61423.c
  c862a3c17ff7c49e42a7fd543dbaf3ab  gcc/testsuite/gcc.target/i386/pr61446.c
  41c81c5a9c11d9139ad858d341f4ab52  gcc/testsuite/gcc.target/i386/pr61572.c
! 051e752e6f5f3b5c6c426d1626da2a1e  gcc/testsuite/gcc.target/i386/pr61599-1.c
  e12bd6c5d5e4249892681c3ca63428e6  gcc/testsuite/gcc.target/i386/pr61599-2.c
  2ee0efa258974320c9447d777ed0cd1e  gcc/testsuite/gcc.target/i386/pr61794.c
  0af95498db628ce9ab87f06bcc3818c2  gcc/testsuite/gcc.target/i386/pr61801.c
*************** c401b2b80062c0d9567f773adca682d1  gcc/te
*** 47178,47184 ****
  c5d5a6e45cbe795c19e3ccb075e2c353  gcc/testsuite/gcc.target/i386/pr63495.c
  d411131829e4182bcd0f01c491669453  gcc/testsuite/gcc.target/i386/pr63527.c
  50ea06065d2e674f38033361f71fea26  gcc/testsuite/gcc.target/i386/pr63534.c
! b94984e7c628f56d531f92149504a0ed  gcc/testsuite/gcc.target/i386/pr63538.c
  561aeb698494e71bb2a1de5b9848f5f5  gcc/testsuite/gcc.target/i386/pr63542-1.c
  c2179fbbe68a40ce1e3486b98db6a47f  gcc/testsuite/gcc.target/i386/pr63542-2.c
  9c17e1a161d05dcffaa896376c5ecc02  gcc/testsuite/gcc.target/i386/pr63563.c
--- 47453,47459 ----
  c5d5a6e45cbe795c19e3ccb075e2c353  gcc/testsuite/gcc.target/i386/pr63495.c
  d411131829e4182bcd0f01c491669453  gcc/testsuite/gcc.target/i386/pr63527.c
  50ea06065d2e674f38033361f71fea26  gcc/testsuite/gcc.target/i386/pr63534.c
! 30aaae44143ac2a44f16e0db0cec0af6  gcc/testsuite/gcc.target/i386/pr63538.c
  561aeb698494e71bb2a1de5b9848f5f5  gcc/testsuite/gcc.target/i386/pr63542-1.c
  c2179fbbe68a40ce1e3486b98db6a47f  gcc/testsuite/gcc.target/i386/pr63542-2.c
  9c17e1a161d05dcffaa896376c5ecc02  gcc/testsuite/gcc.target/i386/pr63563.c
*************** e70e8eb63cff3610044e38fdad89e34b  gcc/te
*** 47200,47206 ****
  516133a673f4f174a446f2fc7a80e412  gcc/testsuite/gcc.target/i386/pr64114.c
  06cb0e7a72d6bb5683ff9652a80c6ae9  gcc/testsuite/gcc.target/i386/pr64291-1.c
  2b7674a20e784b4cf390cb695a576dfe  gcc/testsuite/gcc.target/i386/pr64291-2.c
! 49608ce01a9e0d30d5e69f3723ac732a  gcc/testsuite/gcc.target/i386/pr64317.c
  062641897c1f576f8e34f6685a28feab  gcc/testsuite/gcc.target/i386/pr64386.c
  4ab995a39be1d9f6ab51bed74868b4d9  gcc/testsuite/gcc.target/i386/pr64387.c
  7f461e790905a6a59c18169efe63b087  gcc/testsuite/gcc.target/i386/pr64393.c
--- 47475,47481 ----
  516133a673f4f174a446f2fc7a80e412  gcc/testsuite/gcc.target/i386/pr64114.c
  06cb0e7a72d6bb5683ff9652a80c6ae9  gcc/testsuite/gcc.target/i386/pr64291-1.c
  2b7674a20e784b4cf390cb695a576dfe  gcc/testsuite/gcc.target/i386/pr64291-2.c
! e05ae6facbbbf26826893a785e206bc4  gcc/testsuite/gcc.target/i386/pr64317.c
  062641897c1f576f8e34f6685a28feab  gcc/testsuite/gcc.target/i386/pr64386.c
  4ab995a39be1d9f6ab51bed74868b4d9  gcc/testsuite/gcc.target/i386/pr64387.c
  7f461e790905a6a59c18169efe63b087  gcc/testsuite/gcc.target/i386/pr64393.c
*************** a26eeafdab2d0e6340c7d268ec090c8c  gcc/te
*** 47237,47242 ****
--- 47512,47518 ----
  bac2b79055e3298741ce9969d7ee6b11  gcc/testsuite/gcc.target/i386/pr65671.c
  c4ad4fe09848c714ef20bd7b3bec80c3  gcc/testsuite/gcc.target/i386/pr65693.c
  2ea7c4202a1e5497cafa1c5ff17ba1ae  gcc/testsuite/gcc.target/i386/pr65753.c
+ 78cbe4007cdbf9c2e9d9906666e65340  gcc/testsuite/gcc.target/i386/pr65782.c
  6f6047a71bbe57979dd5ffb6dbc92efa  gcc/testsuite/gcc.target/i386/pr65871-1.c
  4e9323ac4312d95a31dedce674927010  gcc/testsuite/gcc.target/i386/pr65871-2.c
  5775c5a6318f1243ca0d6b370dfa80a8  gcc/testsuite/gcc.target/i386/pr65871-3.c
*************** d77f5c5aaeda2ba3b6d6e23d3ff452ed  gcc/te
*** 47269,47275 ****
  9691b9fb2206de681ed083de689c89c7  gcc/testsuite/gcc.target/i386/pr66334.c
  7e1d59ce8293eee1a626a8693fdb6e4f  gcc/testsuite/gcc.target/i386/pr66412.c
  bbcc4bad6e85470b150a7b32458d3e35  gcc/testsuite/gcc.target/i386/pr66424.c
! a15e6d4602a8708a08f7528489b4c898  gcc/testsuite/gcc.target/i386/pr66470.c
  adcb62c54481141a24a282aa3efd51eb  gcc/testsuite/gcc.target/i386/pr66473.c
  a90810efc19810051c42bbf05fc2f72b  gcc/testsuite/gcc.target/i386/pr66560-1.c
  e67da57ff2aa6286b42715d71c873ffa  gcc/testsuite/gcc.target/i386/pr66560-2.c
--- 47545,47551 ----
  9691b9fb2206de681ed083de689c89c7  gcc/testsuite/gcc.target/i386/pr66334.c
  7e1d59ce8293eee1a626a8693fdb6e4f  gcc/testsuite/gcc.target/i386/pr66412.c
  bbcc4bad6e85470b150a7b32458d3e35  gcc/testsuite/gcc.target/i386/pr66424.c
! 19bb97a482a9e3d01f67c4fe65bfdb96  gcc/testsuite/gcc.target/i386/pr66470.c
  adcb62c54481141a24a282aa3efd51eb  gcc/testsuite/gcc.target/i386/pr66473.c
  a90810efc19810051c42bbf05fc2f72b  gcc/testsuite/gcc.target/i386/pr66560-1.c
  e67da57ff2aa6286b42715d71c873ffa  gcc/testsuite/gcc.target/i386/pr66560-2.c
*************** ab260630154714d6a92fa264356ec077  gcc/te
*** 47291,47298 ****
  2736f559d9ed3001d877f7450d819853  gcc/testsuite/gcc.target/i386/pr66818.c
  3a8525427a2c06a8b1267e82570c0b32  gcc/testsuite/gcc.target/i386/pr66819-1.c
  706dbaecc1d6996b81f72c1443d9709e  gcc/testsuite/gcc.target/i386/pr66819-2.c
! 3b93308bdecf42fb2c2176aa9e4b5b1e  gcc/testsuite/gcc.target/i386/pr66819-3.c
! c775a183cd78571eb1b5fb056475ab2a  gcc/testsuite/gcc.target/i386/pr66819-4.c
  a085a03f3e2cb2efe81768c469c38448  gcc/testsuite/gcc.target/i386/pr66819-5.c
  977ca8ebf3373ba11feedebeb69aea2c  gcc/testsuite/gcc.target/i386/pr66821.c
  32a7bc9b1156780a17e61321fa5d0b20  gcc/testsuite/gcc.target/i386/pr66824.c
--- 47567,47574 ----
  2736f559d9ed3001d877f7450d819853  gcc/testsuite/gcc.target/i386/pr66818.c
  3a8525427a2c06a8b1267e82570c0b32  gcc/testsuite/gcc.target/i386/pr66819-1.c
  706dbaecc1d6996b81f72c1443d9709e  gcc/testsuite/gcc.target/i386/pr66819-2.c
! 84d18626653364c4aeae9aa54f1304e1  gcc/testsuite/gcc.target/i386/pr66819-3.c
! 6f5c7f70b4c803c33e6e9c040c4e1d69  gcc/testsuite/gcc.target/i386/pr66819-4.c
  a085a03f3e2cb2efe81768c469c38448  gcc/testsuite/gcc.target/i386/pr66819-5.c
  977ca8ebf3373ba11feedebeb69aea2c  gcc/testsuite/gcc.target/i386/pr66821.c
  32a7bc9b1156780a17e61321fa5d0b20  gcc/testsuite/gcc.target/i386/pr66824.c
*************** c3b077ecd7c86d02b425005a9cb043c1  gcc/te
*** 47328,47334 ****
  20023d24d21d62dd6789da2589104070  gcc/testsuite/gcc.target/i386/pr67963-2.c
  139b1bdb98e3296f9ddee0838954fe94  gcc/testsuite/gcc.target/i386/pr67963-3.c
  1821cb97402be7ffe7bdc5f23f8e3199  gcc/testsuite/gcc.target/i386/pr67985-1.c
! 4212d7a5843c1b880161949554647739  gcc/testsuite/gcc.target/i386/pr67985-2.c
  4f7ff503d6a736a2ea199675c6262322  gcc/testsuite/gcc.target/i386/pr67985-3.c
  4f8f5573505d9b60bab0ee48c5fe922f  gcc/testsuite/gcc.target/i386/pr67995-1.c
  e5e29507fd1dff3f68bf471a7ebabe04  gcc/testsuite/gcc.target/i386/pr67995-2.c
--- 47604,47610 ----
  20023d24d21d62dd6789da2589104070  gcc/testsuite/gcc.target/i386/pr67963-2.c
  139b1bdb98e3296f9ddee0838954fe94  gcc/testsuite/gcc.target/i386/pr67963-3.c
  1821cb97402be7ffe7bdc5f23f8e3199  gcc/testsuite/gcc.target/i386/pr67985-1.c
! dd5ee7ef74ea9dfe9ed9da3e757be1a2  gcc/testsuite/gcc.target/i386/pr67985-2.c
  4f7ff503d6a736a2ea199675c6262322  gcc/testsuite/gcc.target/i386/pr67985-3.c
  4f8f5573505d9b60bab0ee48c5fe922f  gcc/testsuite/gcc.target/i386/pr67995-1.c
  e5e29507fd1dff3f68bf471a7ebabe04  gcc/testsuite/gcc.target/i386/pr67995-2.c
*************** fb74d73535ae13841ad274eed8746e1d  gcc/te
*** 47468,47474 ****
  1b44db35f8df9b2763028de6125de9e3  gcc/testsuite/gcc.target/i386/pr70738-4.c
  61eaf57653733d78911ae6debba297f3  gcc/testsuite/gcc.target/i386/pr70738-5.c
  2c2031d1591def6dc255c3c4e1b5ea98  gcc/testsuite/gcc.target/i386/pr70738-6.c
! a12202905bd4ab853068b48a260a39fc  gcc/testsuite/gcc.target/i386/pr70738-7.c
  3a1ef414c243d704288672ae2ed719ae  gcc/testsuite/gcc.target/i386/pr70738-8.c
  b79c0bcdf58f6e1bba3f6620fefa6f0f  gcc/testsuite/gcc.target/i386/pr70738-9.c
  b8aaa1c61d237ea27d230f6584ce5adf  gcc/testsuite/gcc.target/i386/pr70750-1.c
--- 47744,47750 ----
  1b44db35f8df9b2763028de6125de9e3  gcc/testsuite/gcc.target/i386/pr70738-4.c
  61eaf57653733d78911ae6debba297f3  gcc/testsuite/gcc.target/i386/pr70738-5.c
  2c2031d1591def6dc255c3c4e1b5ea98  gcc/testsuite/gcc.target/i386/pr70738-6.c
! 234057751bd4af4434ba4b09c32e7465  gcc/testsuite/gcc.target/i386/pr70738-7.c
  3a1ef414c243d704288672ae2ed719ae  gcc/testsuite/gcc.target/i386/pr70738-8.c
  b79c0bcdf58f6e1bba3f6620fefa6f0f  gcc/testsuite/gcc.target/i386/pr70738-9.c
  b8aaa1c61d237ea27d230f6584ce5adf  gcc/testsuite/gcc.target/i386/pr70750-1.c
*************** b4e9ddfcff5392084623bc865a470f0d  gcc/te
*** 47476,47483 ****
  3ac0ee054148d8f590a224e725fc0e89  gcc/testsuite/gcc.target/i386/pr70799-1.c
  b27b2690cfdc8b79c2ce0f89b171b834  gcc/testsuite/gcc.target/i386/pr70799-2.c
  f353395bccf918949658ea5606b5bc6e  gcc/testsuite/gcc.target/i386/pr70799-3.c
- 45f696c5d0f8378ebb4864d2a8c6b652  gcc/testsuite/gcc.target/i386/pr70799-4.c
- 17303f2a45401efd58622846a6deecb2  gcc/testsuite/gcc.target/i386/pr70799-5.c
  4a1998a131bd50329d33a11477629de5  gcc/testsuite/gcc.target/i386/pr70821.c
  1003b2af30448864252327bd08ddb57b  gcc/testsuite/gcc.target/i386/pr70858.c
  c4f6a31f14b030cd9290db1df9495760  gcc/testsuite/gcc.target/i386/pr70876.c
--- 47752,47757 ----
*************** c912bb68571e4d5714afa27a8a0bbfbb  gcc/te
*** 47518,47524 ****
  6b0d02fbe2f46273848e2a4f2e1562cb  gcc/testsuite/gcc.target/i386/pr77761.c
  e24e16431564ae1db7f06ba62681abaa  gcc/testsuite/gcc.target/i386/pr77833.c
  e5be6cf6d0060be81cbbeb24d1b45ac8  gcc/testsuite/gcc.target/i386/pr77856.c
! ddcb7f5cb340f4cab23fd0392eed65ce  gcc/testsuite/gcc.target/i386/pr77881.c
  ebdf78610e5253029e5305e68875b6c9  gcc/testsuite/gcc.target/i386/pr77991.c
  e92468cd3d6db284b41cbd24c3b82524  gcc/testsuite/gcc.target/i386/pr78035.c
  a0f1a716d3aa44f2dbe260d265da5118  gcc/testsuite/gcc.target/i386/pr78037.c
--- 47792,47798 ----
  6b0d02fbe2f46273848e2a4f2e1562cb  gcc/testsuite/gcc.target/i386/pr77761.c
  e24e16431564ae1db7f06ba62681abaa  gcc/testsuite/gcc.target/i386/pr77833.c
  e5be6cf6d0060be81cbbeb24d1b45ac8  gcc/testsuite/gcc.target/i386/pr77856.c
! 93e914077bc0a0fec60293774cf1fb84  gcc/testsuite/gcc.target/i386/pr77881.c
  ebdf78610e5253029e5305e68875b6c9  gcc/testsuite/gcc.target/i386/pr77991.c
  e92468cd3d6db284b41cbd24c3b82524  gcc/testsuite/gcc.target/i386/pr78035.c
  a0f1a716d3aa44f2dbe260d265da5118  gcc/testsuite/gcc.target/i386/pr78037.c
*************** ec965c6c04e6eccada8b8ad3ae3be837  gcc/te
*** 47679,47689 ****
  d7c0264a0141e7dada7356837078fe1f  gcc/testsuite/gcc.target/i386/pr82628.c
  af640e6417bda894b964dcafe04ebb19  gcc/testsuite/gcc.target/i386/pr82659-1.c
  74ed9ea54350e72c8ff175a0019a05fd  gcc/testsuite/gcc.target/i386/pr82659-2.c
! aa2558037d3d720202a8c600f3aa47aa  gcc/testsuite/gcc.target/i386/pr82659-3.c
  5e76a6f37dea0349d6e7aa6a97a1f7a6  gcc/testsuite/gcc.target/i386/pr82659-4.c
  49f4dfdcf0385c77c063607993abc8c4  gcc/testsuite/gcc.target/i386/pr82659-5.c
  ad0f59e4fe0e9407ebaddb65a2989530  gcc/testsuite/gcc.target/i386/pr82659-6.c
! d759476918b912aa5fa84cdf06f95aba  gcc/testsuite/gcc.target/i386/pr82662.c
  ee329bea3f1c92f52009173ce2dce510  gcc/testsuite/gcc.target/i386/pr82673.c
  63efe3801cd250766ce11b7933f4bcf7  gcc/testsuite/gcc.target/i386/pr82699-1.c
  36c9132901555db6d76239335b5a9d5a  gcc/testsuite/gcc.target/i386/pr82699-2.c
--- 47953,47963 ----
  d7c0264a0141e7dada7356837078fe1f  gcc/testsuite/gcc.target/i386/pr82628.c
  af640e6417bda894b964dcafe04ebb19  gcc/testsuite/gcc.target/i386/pr82659-1.c
  74ed9ea54350e72c8ff175a0019a05fd  gcc/testsuite/gcc.target/i386/pr82659-2.c
! 00e3537b81b03eeb4a7565828f61b2fd  gcc/testsuite/gcc.target/i386/pr82659-3.c
  5e76a6f37dea0349d6e7aa6a97a1f7a6  gcc/testsuite/gcc.target/i386/pr82659-4.c
  49f4dfdcf0385c77c063607993abc8c4  gcc/testsuite/gcc.target/i386/pr82659-5.c
  ad0f59e4fe0e9407ebaddb65a2989530  gcc/testsuite/gcc.target/i386/pr82659-6.c
! e73aed461dc16fd9b7669c6321cda770  gcc/testsuite/gcc.target/i386/pr82662.c
  ee329bea3f1c92f52009173ce2dce510  gcc/testsuite/gcc.target/i386/pr82673.c
  63efe3801cd250766ce11b7933f4bcf7  gcc/testsuite/gcc.target/i386/pr82699-1.c
  36c9132901555db6d76239335b5a9d5a  gcc/testsuite/gcc.target/i386/pr82699-2.c
*************** bfc63737303c346862df5e9d8928d4f0  gcc/te
*** 47770,47775 ****
--- 48044,48050 ----
  51e373c9a10bdce46b6bd839fecfedeb  gcc/testsuite/gcc.target/i386/pr85508.c
  c9b6441c0d7b7f884874e0499b1458cd  gcc/testsuite/gcc.target/i386/pr85511.c
  d57c15d8d315998b09f9cd1a9f85541d  gcc/testsuite/gcc.target/i386/pr85593.c
+ 15df978a52bf5f2e4062a114c41b47db  gcc/testsuite/gcc.target/i386/pr85860.c
  dd2eb8b8e0da9871c78cecc6af291003  gcc/testsuite/gcc.target/i386/pr85934.c
  c19a9d9e41959574f6c21d72429137da  gcc/testsuite/gcc.target/i386/pr85950.c
  2360ffb748aff9fb6627cff8522f74d8  gcc/testsuite/gcc.target/i386/pr85984.c
*************** e89855e4afbc8be3009567aa4b7ef483  gcc/te
*** 47782,47787 ****
--- 48057,48063 ----
  c2ca631fa7bb41bff427b4c2a6a6aaa1  gcc/testsuite/gcc.target/i386/pr87198.c
  4bcf1f2404bf83c2e402690653adf2bc  gcc/testsuite/gcc.target/i386/pr87370.c
  640f95ee3bcfcdd3ddddf350e70a219e  gcc/testsuite/gcc.target/i386/pr87550.c
+ b91162801f7d0d6af855bd692e22ab63  gcc/testsuite/gcc.target/i386/pr87853.c
  4b54801016bc4b3cc228ac7dd70de407  gcc/testsuite/gcc.target/i386/pr87928.c
  8aa15a462c33644313684b33656a3512  gcc/testsuite/gcc.target/i386/pr88416.c
  561c19e980c43266fc4b3d3a28fe8bc2  gcc/testsuite/gcc.target/i386/pr88418.c
*************** c2ca631fa7bb41bff427b4c2a6a6aaa1  gcc/te
*** 47790,47795 ****
--- 48066,48102 ----
  f32a1aef3d374a5b4ad42047396a3805  gcc/testsuite/gcc.target/i386/pr88938.c
  141169b2e8ff64bdba2208ca1feb4a7c  gcc/testsuite/gcc.target/i386/pr88948.c
  956a0e340ae4dfe5721ba6a3ab98969f  gcc/testsuite/gcc.target/i386/pr89290.c
+ 741d1c44cbb9ba8dfdfc363a84b46d20  gcc/testsuite/gcc.target/i386/pr89523-1a.c
+ bcb8ff722b8b594bcfd9075d37eaff6f  gcc/testsuite/gcc.target/i386/pr89523-1b.c
+ 1a7b71dea5f1b81b4c20d53bd27d1604  gcc/testsuite/gcc.target/i386/pr89523-2.c
+ c477d7333d280aa9ba0232f363826175  gcc/testsuite/gcc.target/i386/pr89523-3.c
+ 37d95d0f23ac1bfc04510b1a7b4a0ed7  gcc/testsuite/gcc.target/i386/pr89523-4.c
+ b9dc216c8935f73126bb07b75ef58c82  gcc/testsuite/gcc.target/i386/pr89523-5.c
+ 21b4d2c258f9255ac099efdcceba396c  gcc/testsuite/gcc.target/i386/pr89523-6.c
+ 104a2416e74048f45915a5e09656c2aa  gcc/testsuite/gcc.target/i386/pr89523-7.c
+ fa633632e627d7c0fcb34ba2673e196b  gcc/testsuite/gcc.target/i386/pr89523-8.c
+ aab7cb035d0456e2d0bf25f7f53cfd30  gcc/testsuite/gcc.target/i386/pr89523-9.c
+ 8c3d1b44db7a8ab2be0a823e6604c679  gcc/testsuite/gcc.target/i386/pr89684.c
+ 673b7f390c915c1784df3e6226b2ea65  gcc/testsuite/gcc.target/i386/pr89827.c
+ 246798e6fdd75c72604b74965a056935  gcc/testsuite/gcc.target/i386/pr89848.c
+ 17b51e3fde50f413030ac13d4da5f92d  gcc/testsuite/gcc.target/i386/pr89902.c
+ e225d6b5ab365db1e6c8d7a75e04345d  gcc/testsuite/gcc.target/i386/pr89903.c
+ f529a8c1dee59aa4275d01977b57a0f2  gcc/testsuite/gcc.target/i386/pr89945.c
+ 2b740660f12ab9c7636b35db2ec19c55  gcc/testsuite/gcc.target/i386/pr89965.c
+ c04294701860868605e6d4177d1f5a28  gcc/testsuite/gcc.target/i386/pr90193.c
+ 71daed2fce58de22bfa193c1d29d8205  gcc/testsuite/gcc.target/i386/pr90547.c
+ 82fd34c6f4f79a15f4144b67a4507d26  gcc/testsuite/gcc.target/i386/pr90867.c
+ 1d0e83324035b21be27951b192325a1c  gcc/testsuite/gcc.target/i386/pr90899.c
+ 214e297c0a7eb9cbfdb0fe5aaefdfaa2  gcc/testsuite/gcc.target/i386/pr91131.c
+ aabdcb10437f47e089de6bb37a6dd901  gcc/testsuite/gcc.target/i386/pr91298-1.c
+ adfc05287817683065c60617c1638c3b  gcc/testsuite/gcc.target/i386/pr91298-2.c
+ b1033a73e69ce631508fb5810b3eb39c  gcc/testsuite/gcc.target/i386/pr91623.c
+ acc82a5b459bf1433e5f0d6d4849c00a  gcc/testsuite/gcc.target/i386/pr91704.c
+ b7cac4959f15ba45f067fec51fddab75  gcc/testsuite/gcc.target/i386/pr92615.c
+ 62ade5dc105d6119dff3a6aa23ee6a45  gcc/testsuite/gcc.target/i386/pr93088.c
+ 0cbbfb6a80b114bf60fcfd0fce913fdb  gcc/testsuite/gcc.target/i386/pr93656.c
+ 77b9ee8512c8e923363a5e2d927e99b1  gcc/testsuite/gcc.target/i386/pr93696-1.c
+ b35da961377f3aa60ef57bb47462f48e  gcc/testsuite/gcc.target/i386/pr93696-2.c
  849234c7a569c1e86023244bc5561263  gcc/testsuite/gcc.target/i386/pr9771-1.c
  24ceb6d5f3f5cde4b9d852839bdb98ae  gcc/testsuite/gcc.target/i386/prefetchw-1.c
  f11f4731c396f099373c033ab016a64f  gcc/testsuite/gcc.target/i386/prefetchwt1-1.c
*************** e2839913fadc6a00676c8f02deb3f59e  gcc/te
*** 47818,47849 ****
  27b94da412b0e514a304cb667a1125f1  gcc/testsuite/gcc.target/i386/regparm-stdcall.c
  f460909450afd8b803c32061496a4d75  gcc/testsuite/gcc.target/i386/regparm.c
  e47bbd1acfd37236fccff011d4c82e82  gcc/testsuite/gcc.target/i386/reload-1.c
! e7bdddab413e9342ceea674dcc11efa9  gcc/testsuite/gcc.target/i386/ret-thunk-1.c
! 07608fba857fa4155e300a8ab038eb73  gcc/testsuite/gcc.target/i386/ret-thunk-10.c
! 0e917c21adaa8ed8f2ef1aba8e2f74dd  gcc/testsuite/gcc.target/i386/ret-thunk-11.c
! f586d3b6d44cf751b4c96abd41d73a53  gcc/testsuite/gcc.target/i386/ret-thunk-12.c
! c7716ba4d15d568304b3d15fa4dd1efa  gcc/testsuite/gcc.target/i386/ret-thunk-13.c
! a115b1a64b3d2e61e179f8cb9c41c216  gcc/testsuite/gcc.target/i386/ret-thunk-14.c
! 1001b8218da78b5babe016a4811af780  gcc/testsuite/gcc.target/i386/ret-thunk-15.c
! eab910bbf14695323d54cd2754f6c13c  gcc/testsuite/gcc.target/i386/ret-thunk-16.c
  cc34b9f508b9c8334f3288b096cb78f7  gcc/testsuite/gcc.target/i386/ret-thunk-17.c
  7d462469a74829644f625dfd13e56245  gcc/testsuite/gcc.target/i386/ret-thunk-18.c
  43b59ba2c7eee4d8d807697e3b13092c  gcc/testsuite/gcc.target/i386/ret-thunk-19.c
! dd35d0e1f55e30827da00a7a3b72f2fc  gcc/testsuite/gcc.target/i386/ret-thunk-2.c
  f3573edd139415913734286a945036c2  gcc/testsuite/gcc.target/i386/ret-thunk-20.c
  b2806d5288ed6597c93c3c78b98f8d80  gcc/testsuite/gcc.target/i386/ret-thunk-21.c
! 2c5f8484e1fe3ff717433984bd9e430e  gcc/testsuite/gcc.target/i386/ret-thunk-22.c
! 224c4a6a3890adb17f39118b19a33a3b  gcc/testsuite/gcc.target/i386/ret-thunk-23.c
! 0ec08e1985573ff0205c8a7332d5f386  gcc/testsuite/gcc.target/i386/ret-thunk-24.c
! 97183e70692a615a0923a028c6a93205  gcc/testsuite/gcc.target/i386/ret-thunk-25.c
  5c8cf1edc83ad31d94dba18df2541bd3  gcc/testsuite/gcc.target/i386/ret-thunk-26.c
! fd5c5e9bb01a2b8dc7c5f900d1d87998  gcc/testsuite/gcc.target/i386/ret-thunk-3.c
! ca53ce2b9665ac27d11a2ef828928360  gcc/testsuite/gcc.target/i386/ret-thunk-4.c
! b0ef8962f326b0e0b7e4311f2dc69a16  gcc/testsuite/gcc.target/i386/ret-thunk-5.c
! c7853edb1c95703c93c35ebe12f833be  gcc/testsuite/gcc.target/i386/ret-thunk-6.c
! b51e205421f10208d462405cedb0f344  gcc/testsuite/gcc.target/i386/ret-thunk-7.c
! 848e6463fd3be83bbddee8c7c6dbfdf3  gcc/testsuite/gcc.target/i386/ret-thunk-8.c
! 2f2c6e5c76f0d73d3f69a5c58a4ddf1d  gcc/testsuite/gcc.target/i386/ret-thunk-9.c
  fe7ee8a9110596ef272c4f9b6ad8adad  gcc/testsuite/gcc.target/i386/retarg.c
  7a1e62697051aa68ade1f41fac61f6f8  gcc/testsuite/gcc.target/i386/rop1.c
  63bd489c03ce382cdba38349c30041ad  gcc/testsuite/gcc.target/i386/rotate-1.c
--- 48125,48156 ----
  27b94da412b0e514a304cb667a1125f1  gcc/testsuite/gcc.target/i386/regparm-stdcall.c
  f460909450afd8b803c32061496a4d75  gcc/testsuite/gcc.target/i386/regparm.c
  e47bbd1acfd37236fccff011d4c82e82  gcc/testsuite/gcc.target/i386/reload-1.c
! 9205036382fb9371e714bf429d4a169a  gcc/testsuite/gcc.target/i386/ret-thunk-1.c
! 5c518b4de98553182b09eb3872117c87  gcc/testsuite/gcc.target/i386/ret-thunk-10.c
! e37a168c17859bf43f180a3cb76b47dc  gcc/testsuite/gcc.target/i386/ret-thunk-11.c
! 7fde81ddca4708120e5f5125ba9c9fbf  gcc/testsuite/gcc.target/i386/ret-thunk-12.c
! 14d89c82cb35544a32336240ef58c500  gcc/testsuite/gcc.target/i386/ret-thunk-13.c
! 8165c1fc58be1608397622f39d926c07  gcc/testsuite/gcc.target/i386/ret-thunk-14.c
! 03f2947228ea023c8f8d07076c33eb4c  gcc/testsuite/gcc.target/i386/ret-thunk-15.c
! 18e90525f1abe3c52128427f9fb39b3e  gcc/testsuite/gcc.target/i386/ret-thunk-16.c
  cc34b9f508b9c8334f3288b096cb78f7  gcc/testsuite/gcc.target/i386/ret-thunk-17.c
  7d462469a74829644f625dfd13e56245  gcc/testsuite/gcc.target/i386/ret-thunk-18.c
  43b59ba2c7eee4d8d807697e3b13092c  gcc/testsuite/gcc.target/i386/ret-thunk-19.c
! a1802923debe6064d056b780f4ee6111  gcc/testsuite/gcc.target/i386/ret-thunk-2.c
  f3573edd139415913734286a945036c2  gcc/testsuite/gcc.target/i386/ret-thunk-20.c
  b2806d5288ed6597c93c3c78b98f8d80  gcc/testsuite/gcc.target/i386/ret-thunk-21.c
! 29d69e15cf5da161b7801ded9cd2d41c  gcc/testsuite/gcc.target/i386/ret-thunk-22.c
! 4b91204f1e7fb9ce122819bf38a258c0  gcc/testsuite/gcc.target/i386/ret-thunk-23.c
! 80f22614da15e0c6c503229e825594bb  gcc/testsuite/gcc.target/i386/ret-thunk-24.c
! 3fbc6374d7bea54c795b6b7f151f22ae  gcc/testsuite/gcc.target/i386/ret-thunk-25.c
  5c8cf1edc83ad31d94dba18df2541bd3  gcc/testsuite/gcc.target/i386/ret-thunk-26.c
! 32bd7ac2d14f8f3a3b38d58c04171c4f  gcc/testsuite/gcc.target/i386/ret-thunk-3.c
! c0e1cf033713f4d9f46705d898afe08a  gcc/testsuite/gcc.target/i386/ret-thunk-4.c
! 3eaad5daa9f6529dc9f4448e224a4c08  gcc/testsuite/gcc.target/i386/ret-thunk-5.c
! d51fd9f2d7e7069d77886270f69d0f12  gcc/testsuite/gcc.target/i386/ret-thunk-6.c
! 4234854200abfc91e34d2fc53f42eff3  gcc/testsuite/gcc.target/i386/ret-thunk-7.c
! 6f9c6a5223282b22bc65105d4a0e7e53  gcc/testsuite/gcc.target/i386/ret-thunk-8.c
! 7a7a1d5a4517a13ebf3484508670a5bf  gcc/testsuite/gcc.target/i386/ret-thunk-9.c
  fe7ee8a9110596ef272c4f9b6ad8adad  gcc/testsuite/gcc.target/i386/retarg.c
  7a1e62697051aa68ade1f41fac61f6f8  gcc/testsuite/gcc.target/i386/rop1.c
  63bd489c03ce382cdba38349c30041ad  gcc/testsuite/gcc.target/i386/rotate-1.c
*************** b5540c2e6c4aa6f5730ae17876c12e1f  gcc/te
*** 47901,47909 ****
  cc8a162617784a2e883a5e726d28ebde  gcc/testsuite/gcc.target/i386/sse-1.c
  31f7ce4356be3b5523e49df7d4ad0951  gcc/testsuite/gcc.target/i386/sse-10.c
  49bde97b271274cb2bc26697ce2b19be  gcc/testsuite/gcc.target/i386/sse-11.c
! 769a782b181b404f593c14e1409cb073  gcc/testsuite/gcc.target/i386/sse-12.c
! 16ef70df28911136173a027d49658b59  gcc/testsuite/gcc.target/i386/sse-13.c
! 3ce8f5debc77ff8df28cbea0e8d2dd93  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
--- 48208,48216 ----
  cc8a162617784a2e883a5e726d28ebde  gcc/testsuite/gcc.target/i386/sse-1.c
  31f7ce4356be3b5523e49df7d4ad0951  gcc/testsuite/gcc.target/i386/sse-10.c
  49bde97b271274cb2bc26697ce2b19be  gcc/testsuite/gcc.target/i386/sse-11.c
! 0fda9371039ad1a80f11530a4dcd4d85  gcc/testsuite/gcc.target/i386/sse-12.c
! d262b68507761e7e55065b2d5c463117  gcc/testsuite/gcc.target/i386/sse-13.c
! 32e48ea71901a395330059ac83c2744e  gcc/testsuite/gcc.target/i386/sse-14.c
  92ad37b5ad7426d489b1b6f1ba0f41ea  gcc/testsuite/gcc.target/i386/sse-15.c
  2e7b115c4bd7984925f1a8d17a5faf67  gcc/testsuite/gcc.target/i386/sse-16.c
  f660e67b22cb44e6a6b38a247b1d78c3  gcc/testsuite/gcc.target/i386/sse-17.c
*************** f660e67b22cb44e6a6b38a247b1d78c3  gcc/te
*** 47912,47918 ****
  bb148b6e9dd40de90aed723794e38216  gcc/testsuite/gcc.target/i386/sse-2.c
  c23a0ea446a060d55e49e48429513f7d  gcc/testsuite/gcc.target/i386/sse-20.c
  d5e7e4c7d488a953399d853e48aa484e  gcc/testsuite/gcc.target/i386/sse-21.c
! 5cd4bb713088bd28562449e528363b63  gcc/testsuite/gcc.target/i386/sse-22.c
  1c2df57cb3d7d6a3daf4084135ba9b1b  gcc/testsuite/gcc.target/i386/sse-22a.c
  e384d95774132b2ab442fe5313b7517f  gcc/testsuite/gcc.target/i386/sse-23.c
  3fe1d48ff9d52631da56f04cc922a9cb  gcc/testsuite/gcc.target/i386/sse-24.c
--- 48219,48225 ----
  bb148b6e9dd40de90aed723794e38216  gcc/testsuite/gcc.target/i386/sse-2.c
  c23a0ea446a060d55e49e48429513f7d  gcc/testsuite/gcc.target/i386/sse-20.c
  d5e7e4c7d488a953399d853e48aa484e  gcc/testsuite/gcc.target/i386/sse-21.c
! 69e76211c38f1ddffa433f9a96955061  gcc/testsuite/gcc.target/i386/sse-22.c
  1c2df57cb3d7d6a3daf4084135ba9b1b  gcc/testsuite/gcc.target/i386/sse-22a.c
  e384d95774132b2ab442fe5313b7517f  gcc/testsuite/gcc.target/i386/sse-23.c
  3fe1d48ff9d52631da56f04cc922a9cb  gcc/testsuite/gcc.target/i386/sse-24.c
*************** d6fca7d0a14d69c06eab7b10a94824aa  gcc/te
*** 48364,48370 ****
  7f01eb1d223c56a0d719d6be43a7369b  gcc/testsuite/gcc.target/i386/stack-check-19.c
  ca5571ee490db85826dd15cbfd5c6555  gcc/testsuite/gcc.target/i386/stack-prot-guard.c
  79da87a540843a0e1db2e7c3a4c97b4a  gcc/testsuite/gcc.target/i386/stack-prot-kernel.c
! e978e3862d24eaf222b97c35818e8ea3  gcc/testsuite/gcc.target/i386/stack-prot-sym.c
  734f9c675c89f8938b16af80f2c9e1b8  gcc/testsuite/gcc.target/i386/stack-realign-win.c
  f005410b5bda86af8a785a48fccbbc30  gcc/testsuite/gcc.target/i386/stack-realign.c
  f2432fa4e94240719fb29b95541fb57b  gcc/testsuite/gcc.target/i386/stack-usage-realign.c
--- 48671,48677 ----
  7f01eb1d223c56a0d719d6be43a7369b  gcc/testsuite/gcc.target/i386/stack-check-19.c
  ca5571ee490db85826dd15cbfd5c6555  gcc/testsuite/gcc.target/i386/stack-prot-guard.c
  79da87a540843a0e1db2e7c3a4c97b4a  gcc/testsuite/gcc.target/i386/stack-prot-kernel.c
! d4a0de32b5fc72f0848beec394a4cb3e  gcc/testsuite/gcc.target/i386/stack-prot-sym.c
  734f9c675c89f8938b16af80f2c9e1b8  gcc/testsuite/gcc.target/i386/stack-realign-win.c
  f005410b5bda86af8a785a48fccbbc30  gcc/testsuite/gcc.target/i386/stack-realign.c
  f2432fa4e94240719fb29b95541fb57b  gcc/testsuite/gcc.target/i386/stack-usage-realign.c
*************** f32d0d602b6f58b940bf95892b0db34a  gcc/te
*** 48492,48499 ****
  44fec3573c80bd08c5d402045b97645b  gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
  374df7a1c2f21fcd160b142454a349e7  gcc/testsuite/gcc.target/i386/warn-vect-op-2.c
  66d1d77278077916978319dc1f32ebb7  gcc/testsuite/gcc.target/i386/warn-vect-op-3.c
! 6c062d7e0d068b5f99caee590a530a90  gcc/testsuite/gcc.target/i386/wbinvd-1.c
! 5bf54bb626ab3fa4b6aa8a79a9c66456  gcc/testsuite/gcc.target/i386/wbnoinvd-1.c
  a2033299875112ec8a8d46645cf7d9b0  gcc/testsuite/gcc.target/i386/wmul-1.c
  4ad4e72fa1607f98dfaf4b54d6bb5d32  gcc/testsuite/gcc.target/i386/wmul-2.c
  27ad6112330741456181c2be05f60c1f  gcc/testsuite/gcc.target/i386/wmul-3.c
--- 48799,48806 ----
  44fec3573c80bd08c5d402045b97645b  gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
  374df7a1c2f21fcd160b142454a349e7  gcc/testsuite/gcc.target/i386/warn-vect-op-2.c
  66d1d77278077916978319dc1f32ebb7  gcc/testsuite/gcc.target/i386/warn-vect-op-3.c
! 732431c1122c6fec401dab5065f048c2  gcc/testsuite/gcc.target/i386/wbinvd-1.c
! efca2d14ddeeb4b9d4b258a40c5017ef  gcc/testsuite/gcc.target/i386/wbnoinvd-1.c
  a2033299875112ec8a8d46645cf7d9b0  gcc/testsuite/gcc.target/i386/wmul-1.c
  4ad4e72fa1607f98dfaf4b54d6bb5d32  gcc/testsuite/gcc.target/i386/wmul-2.c
  27ad6112330741456181c2be05f60c1f  gcc/testsuite/gcc.target/i386/wmul-3.c
*************** cc9f6556f139a09d0fde4192c4bd5898  gcc/te
*** 48774,48779 ****
--- 49081,49089 ----
  15a6a09f926d9cadc5efa71d9a537bd9  gcc/testsuite/gcc.target/mips/call-saved-7.c
  b6598997f99e11ea5cde760f16bc51b8  gcc/testsuite/gcc.target/mips/call-saved-8.c
  5ef31c16124e446128af2ccfc80a1ceb  gcc/testsuite/gcc.target/mips/call-saved-9.c
+ 251d8644980f5886f8aeb79798fe635a  gcc/testsuite/gcc.target/mips/cfgcleanup-jalr1.c
+ 848a10454fcc4968030b6fee3060abfe  gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c
+ ae780e823d07817d6b6704ba974cdd01  gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c
  0e811556243ef05a090351b71010af15  gcc/testsuite/gcc.target/mips/clear-cache-1.c
  10c7701a3904364c72d3dc09d3612abd  gcc/testsuite/gcc.target/mips/clear-cache-2.c
  44d569798a91e2c06f1ea5e924b754dc  gcc/testsuite/gcc.target/mips/code-readable-1.c
*************** b55929dabbb4b0c1f9cfa4c6e4b0c589  gcc/te
*** 48814,48819 ****
--- 49124,49134 ----
  344d6cf89f1a8075ade946556c121579  gcc/testsuite/gcc.target/mips/dsp-no-lhx.c
  054b59c240c0a05c0533b4653555ae5d  gcc/testsuite/gcc.target/mips/dspr2-MULT.c
  25cca6d613a8cece43e1219e700d9cec  gcc/testsuite/gcc.target/mips/dspr2-MULTU.c
+ e9ef81a89f459482496a3c1471c1986f  gcc/testsuite/gcc.target/mips/dwarfregtable-1.c
+ 830c9f4e30e0ba0bc84b1a3baa6f42f4  gcc/testsuite/gcc.target/mips/dwarfregtable-2.c
+ 11bff7641c0c758d7c30257dc468db79  gcc/testsuite/gcc.target/mips/dwarfregtable-3.c
+ 03fe5459ac3f6802a18085e01248c384  gcc/testsuite/gcc.target/mips/dwarfregtable-4.c
+ c8083c4579b9c1fbfcd99780e8ae96c7  gcc/testsuite/gcc.target/mips/dwarfregtable.h
  6f9e51b8c25866e2827e7200aab30706  gcc/testsuite/gcc.target/mips/ext-1.c
  a0f0152f684621e3c5d9fb7f4592097f  gcc/testsuite/gcc.target/mips/ext-2.c
  c5e7f849981b87558b7a06bbb5c10d92  gcc/testsuite/gcc.target/mips/ext-3.c
*************** f5708a14d24fa3ec5113806245448661  gcc/te
*** 48890,48895 ****
--- 49205,49211 ----
  5dd1ae591090d75e1b427f8aa22f3d0c  gcc/testsuite/gcc.target/mips/gcc-have-sync-compare-and-swap-4.c
  0b11ee2c842b84b4bc066e44c1cdb1d4  gcc/testsuite/gcc.target/mips/get-fcsr-1.c
  0b438608d3e1f6097d6deafb8cc1adcc  gcc/testsuite/gcc.target/mips/get-fcsr-2.c
+ 3e8c2c752342d245655270615111d225  gcc/testsuite/gcc.target/mips/get-fcsr-3.c
  16d43ceaf979632be1e1d4b9aa8de52c  gcc/testsuite/gcc.target/mips/inline-memcpy-1.c
  b5002e9e5369181413c9ffddd38c11f9  gcc/testsuite/gcc.target/mips/inline-memcpy-2.c
  4bb37f55e916928ff7048e252937636b  gcc/testsuite/gcc.target/mips/inline-memcpy-3.c
*************** e673ccfc74205709a2572a5600a74ef8  gcc/te
*** 49023,49028 ****
--- 49339,49346 ----
  5866667840ee5a0f66ed2572999e9116  gcc/testsuite/gcc.target/mips/msa-builtins-err.c
  5b2c6ad1cf12ab0a6723c98b20dcae7e  gcc/testsuite/gcc.target/mips/msa-builtins.c
  2eadbb80b2f27ea5dec2927523282eac  gcc/testsuite/gcc.target/mips/msa-dotp.c
+ 27a766579a6d69bf5da7215900f5c157  gcc/testsuite/gcc.target/mips/msa-fmadd-n64.c
+ 6ca28b1dbd353df15b9215ec8b8ac903  gcc/testsuite/gcc.target/mips/msa-fmadd-o32.c
  4aeaa4b74503d004f53a0c826972e294  gcc/testsuite/gcc.target/mips/msa-fp-cc.c
  742c80a0278cc84958d4742348970683  gcc/testsuite/gcc.target/mips/msa-minmax.c
  ca4d4a3ec4e436ef21672b91f010b939  gcc/testsuite/gcc.target/mips/msa.c
*************** f7e7c3525d555350473e6eaeb20a763c  gcc/te
*** 49550,49556 ****
  85dc85078f2d2ae86f55b273d87d2c08  gcc/testsuite/gcc.target/powerpc/bcd-1.c
  f55a4a424770bf4f75c2fa11fd36c033  gcc/testsuite/gcc.target/powerpc/bcd-2.c
  34d1c9b3182933bf7fe8dce899d2dd24  gcc/testsuite/gcc.target/powerpc/bcd-3.c
! b2d687bbb31ba5dec8bf205866996794  gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp
  50b9b13be56cde20a9deafd8957022cb  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-0.c
  ed537806770a6bd863695dc3c1c6db97  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-1.c
  27f640c3dd0f153836274fa2c0d5960d  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c
--- 49868,49874 ----
  85dc85078f2d2ae86f55b273d87d2c08  gcc/testsuite/gcc.target/powerpc/bcd-1.c
  f55a4a424770bf4f75c2fa11fd36c033  gcc/testsuite/gcc.target/powerpc/bcd-2.c
  34d1c9b3182933bf7fe8dce899d2dd24  gcc/testsuite/gcc.target/powerpc/bcd-3.c
! ada899d02eb4b2c56d583447a5e513af  gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp
  50b9b13be56cde20a9deafd8957022cb  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-0.c
  ed537806770a6bd863695dc3c1c6db97  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-1.c
  27f640c3dd0f153836274fa2c0d5960d  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c
*************** c0744700061ef044f794d3f292f70fe4  gcc/te
*** 49681,49687 ****
  ac6fbf41ad19d891d3fdc790fb5f2b79  gcc/testsuite/gcc.target/powerpc/bmi-tzcnt-2.c
  2522f354a88ffbf69670aeb86a40c3f2  gcc/testsuite/gcc.target/powerpc/bmi2-bzhi32-1.c
  df37e5d6c28140935347c611bd06ef2f  gcc/testsuite/gcc.target/powerpc/bmi2-bzhi64-1.c
! 6c24934247952ffbe4809eed3841df92  gcc/testsuite/gcc.target/powerpc/bmi2-bzhi64-1a.c
  ba01782a183ed1c8acdfca0a5aee5de9  gcc/testsuite/gcc.target/powerpc/bmi2-check.h
  63f721848571ec5e6b0029b3c1bdde19  gcc/testsuite/gcc.target/powerpc/bmi2-mulx32-1.c
  beeee58dc54e517ac38855a0e08962de  gcc/testsuite/gcc.target/powerpc/bmi2-mulx32-2.c
--- 49999,50005 ----
  ac6fbf41ad19d891d3fdc790fb5f2b79  gcc/testsuite/gcc.target/powerpc/bmi-tzcnt-2.c
  2522f354a88ffbf69670aeb86a40c3f2  gcc/testsuite/gcc.target/powerpc/bmi2-bzhi32-1.c
  df37e5d6c28140935347c611bd06ef2f  gcc/testsuite/gcc.target/powerpc/bmi2-bzhi64-1.c
! 5494775912b2f1707b37b40517b48f4a  gcc/testsuite/gcc.target/powerpc/bmi2-bzhi64-1a.c
  ba01782a183ed1c8acdfca0a5aee5de9  gcc/testsuite/gcc.target/powerpc/bmi2-check.h
  63f721848571ec5e6b0029b3c1bdde19  gcc/testsuite/gcc.target/powerpc/bmi2-mulx32-1.c
  beeee58dc54e517ac38855a0e08962de  gcc/testsuite/gcc.target/powerpc/bmi2-mulx32-2.c
*************** a12779173ff410afc2edfb105cc93f42  gcc/te
*** 49718,49724 ****
  77f4cc7ca27ab5f1eaac6d0ad22a87aa  gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h
  2343bc1b52052bc05d5d1fb1abd7a42f  gcc/testsuite/gcc.target/powerpc/builtins-1.h
  4a21cfa6efc194e065396e8eee656f75  gcc/testsuite/gcc.target/powerpc/builtins-2-p9-runnable.c
! f2a1b1e6b9938f58e73b467b021816af  gcc/testsuite/gcc.target/powerpc/builtins-2.c
  305cb8266fcbbefc92f5b16dff7646ce  gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c
  0573a9a7baf98bab25999128bfa831bd  gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c
  a934e482b46e519d71ca5abd85d5c3f8  gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c
--- 50036,50042 ----
  77f4cc7ca27ab5f1eaac6d0ad22a87aa  gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h
  2343bc1b52052bc05d5d1fb1abd7a42f  gcc/testsuite/gcc.target/powerpc/builtins-1.h
  4a21cfa6efc194e065396e8eee656f75  gcc/testsuite/gcc.target/powerpc/builtins-2-p9-runnable.c
! 2630988418f250e16cc8ecfe908c023a  gcc/testsuite/gcc.target/powerpc/builtins-2.c
  305cb8266fcbbefc92f5b16dff7646ce  gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c
  0573a9a7baf98bab25999128bfa831bd  gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c
  a934e482b46e519d71ca5abd85d5c3f8  gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c
*************** caf3aba39c0565b4369f2e0263b16af5  gcc/te
*** 49767,49773 ****
  4b60a8662648a73cedee85dd08e278eb  gcc/testsuite/gcc.target/powerpc/cprophard.c
  90d6297f496119a66def439f404c01cb  gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c
  81b6f286dd2f5fda45d87e46682a7d3a  gcc/testsuite/gcc.target/powerpc/cr_shrink-wrap.c
! 74216269f1f99492649a898d8eb5b78d  gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c
  553c685b2707b80e1320960a0027f71a  gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c
  4e3992362b37b544083ac6eaeaa1acca  gcc/testsuite/gcc.target/powerpc/ctz-1.c
  9266181f224f779baa6b98a2f3b171e8  gcc/testsuite/gcc.target/powerpc/ctz-2.c
--- 50085,50091 ----
  4b60a8662648a73cedee85dd08e278eb  gcc/testsuite/gcc.target/powerpc/cprophard.c
  90d6297f496119a66def439f404c01cb  gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c
  81b6f286dd2f5fda45d87e46682a7d3a  gcc/testsuite/gcc.target/powerpc/cr_shrink-wrap.c
! 724786c133f0de0287754f6221210ce2  gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c
  553c685b2707b80e1320960a0027f71a  gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c
  4e3992362b37b544083ac6eaeaa1acca  gcc/testsuite/gcc.target/powerpc/ctz-1.c
  9266181f224f779baa6b98a2f3b171e8  gcc/testsuite/gcc.target/powerpc/ctz-2.c
*************** a531e6d5d781e8f5b8f3987351a73f4f  gcc/te
*** 49776,49781 ****
--- 50094,50100 ----
  dff00811bdc4a0d32afb132f16084b8c  gcc/testsuite/gcc.target/powerpc/darn-0.c
  a3b7e0d3cc77ae3e0b0aea94e91b58e5  gcc/testsuite/gcc.target/powerpc/darn-1.c
  3a484a34727d320db4da25fdd45adeeb  gcc/testsuite/gcc.target/powerpc/darn-2.c
+ 7f5ef611c24ec8821112bbf698514fe7  gcc/testsuite/gcc.target/powerpc/darn-3.c
  965986b227062a2b8c664c916a71ad45  gcc/testsuite/gcc.target/powerpc/darwin-abi-1.c
  9a0e4836781f28669ddca26eb214c2b2  gcc/testsuite/gcc.target/powerpc/darwin-abi-10.c
  66e5cfd1b7491e37c0ef258d09b6634d  gcc/testsuite/gcc.target/powerpc/darwin-abi-11.c
*************** dc2cf23b07f8ee916ff7449cc8184804  gcc/te
*** 49788,49794 ****
  077c78cf99209d89283cbb5bddc4cb00  gcc/testsuite/gcc.target/powerpc/darwin-abi-7.c
  fbafe20fb642af275b59d470cbb84ac9  gcc/testsuite/gcc.target/powerpc/darwin-abi-8.c
  0f82424f87427f46ef95b80a9c04784a  gcc/testsuite/gcc.target/powerpc/darwin-abi-9.c
! f8920aee2833fd404308e7134a58361a  gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c
  d898994d2dd12e123fcb756d46aed2c4  gcc/testsuite/gcc.target/powerpc/darwin-bool-2.c
  4d1a56e3fa08f8cd9ab9a96132d6f7a7  gcc/testsuite/gcc.target/powerpc/darwin-ehreturn-1.c
  e5a3f954e535f339c4a0f35fc50c6302  gcc/testsuite/gcc.target/powerpc/darwin-longdouble.c
--- 50107,50113 ----
  077c78cf99209d89283cbb5bddc4cb00  gcc/testsuite/gcc.target/powerpc/darwin-abi-7.c
  fbafe20fb642af275b59d470cbb84ac9  gcc/testsuite/gcc.target/powerpc/darwin-abi-8.c
  0f82424f87427f46ef95b80a9c04784a  gcc/testsuite/gcc.target/powerpc/darwin-abi-9.c
! 42da5af8a68c5b53856fefe7531c3a1f  gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c
  d898994d2dd12e123fcb756d46aed2c4  gcc/testsuite/gcc.target/powerpc/darwin-bool-2.c
  4d1a56e3fa08f8cd9ab9a96132d6f7a7  gcc/testsuite/gcc.target/powerpc/darwin-ehreturn-1.c
  e5a3f954e535f339c4a0f35fc50c6302  gcc/testsuite/gcc.target/powerpc/darwin-longdouble.c
*************** edc590c61b2a5fd6c1f8da5e10b52099  gcc/te
*** 49808,49814 ****
  918f43d2707c381ec6a3c8f95d06ba7a  gcc/testsuite/gcc.target/powerpc/dfp-td-2.c
  d29a538f7ef7ada44a91b35380ca809c  gcc/testsuite/gcc.target/powerpc/dfp-td-3.c
  f99e26532b9bfe0b24631290281df325  gcc/testsuite/gcc.target/powerpc/dfp-td.c
! 48e31f401a0a5b5f767e49474ee68ab7  gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp
  03cc7e47a4479ec2055b9af5a2055522  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-0.c
  e04d4ab9986d2eb2e4b508bb6566bb66  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c
  8f82047dd5d13bd7808101a6cae2f96a  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-10.c
--- 50127,50133 ----
  918f43d2707c381ec6a3c8f95d06ba7a  gcc/testsuite/gcc.target/powerpc/dfp-td-2.c
  d29a538f7ef7ada44a91b35380ca809c  gcc/testsuite/gcc.target/powerpc/dfp-td-3.c
  f99e26532b9bfe0b24631290281df325  gcc/testsuite/gcc.target/powerpc/dfp-td.c
! 9cb78bb8586a8258dc9c600feb2548ce  gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp
  03cc7e47a4479ec2055b9af5a2055522  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-0.c
  e04d4ab9986d2eb2e4b508bb6566bb66  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c
  8f82047dd5d13bd7808101a6cae2f96a  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-10.c
*************** aecbb30f163d5f651b0975a0fa8c5e71  gcc/te
*** 50152,50158 ****
  fb85288628e320243d8a8147e9bac540  gcc/testsuite/gcc.target/powerpc/mmx-psrld-1.c
  86c54000cf078efa4c7173547f0af1d8  gcc/testsuite/gcc.target/powerpc/mmx-psrlw-1.c
  55bb37adcf290bc3905eb1d50905dbde  gcc/testsuite/gcc.target/powerpc/mmx-psubb-2.c
! 172eb4d242b69715a127f3ff03a7a428  gcc/testsuite/gcc.target/powerpc/mmx-psubd-2.c
  d57ca77ac7b576914b615bb8e32d703a  gcc/testsuite/gcc.target/powerpc/mmx-psubsb-1.c
  d6a742c11f93c2bcf3b615a4f04963c9  gcc/testsuite/gcc.target/powerpc/mmx-psubsw-1.c
  f8dcc8076832e6da6725b6a50e130dad  gcc/testsuite/gcc.target/powerpc/mmx-psubusb-1.c
--- 50471,50477 ----
  fb85288628e320243d8a8147e9bac540  gcc/testsuite/gcc.target/powerpc/mmx-psrld-1.c
  86c54000cf078efa4c7173547f0af1d8  gcc/testsuite/gcc.target/powerpc/mmx-psrlw-1.c
  55bb37adcf290bc3905eb1d50905dbde  gcc/testsuite/gcc.target/powerpc/mmx-psubb-2.c
! 90529c812f2854954927b49e2008eb86  gcc/testsuite/gcc.target/powerpc/mmx-psubd-2.c
  d57ca77ac7b576914b615bb8e32d703a  gcc/testsuite/gcc.target/powerpc/mmx-psubsb-1.c
  d6a742c11f93c2bcf3b615a4f04963c9  gcc/testsuite/gcc.target/powerpc/mmx-psubsw-1.c
  f8dcc8076832e6da6725b6a50e130dad  gcc/testsuite/gcc.target/powerpc/mmx-psubusb-1.c
*************** acdb85d1e6351c6dda55142bbb79b8be  gcc/te
*** 50257,50263 ****
  384725f498b861af6f8bed0530eeac73  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-1.c
  b49bfc8892e32ccd4715b924f41106d6  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-2.c
  90d042fffee10d77e01ab7cf9fcbb7c1  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-3.c
! 6225aa701ea238d6bc3b5ad76ce51526  gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
  cd849caf869859f7f2e720c8b398cd3a  gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr80108-1.f90
  1a62bdfc178bf86d15b16a17a9630d50  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-1.c
  99555fa75b23b831a7288cf5b7c9e9da  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-10.c
--- 50576,50582 ----
  384725f498b861af6f8bed0530eeac73  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-1.c
  b49bfc8892e32ccd4715b924f41106d6  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-2.c
  90d042fffee10d77e01ab7cf9fcbb7c1  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-3.c
! 6caca55b748879ddda33666fbb753c12  gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
  cd849caf869859f7f2e720c8b398cd3a  gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr80108-1.f90
  1a62bdfc178bf86d15b16a17a9630d50  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-1.c
  99555fa75b23b831a7288cf5b7c9e9da  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-10.c
*************** b5f67a5154b009c6dec03e4ced76145b  gcc/te
*** 50388,50394 ****
  90631e1f2929b792894198b96774c9fc  gcc/testsuite/gcc.target/powerpc/pr63354.c
  04a0032cc5edd0bc278f243f6959cd70  gcc/testsuite/gcc.target/powerpc/pr63491.c
  b5e8ef9958a6aa3dfdb0759b64d46722  gcc/testsuite/gcc.target/powerpc/pr64019.c
! b5d79d6bf4e28d0d317e05267972c454  gcc/testsuite/gcc.target/powerpc/pr64205.c
  ce56e41279d8db54c64a5fd047e0cfcf  gcc/testsuite/gcc.target/powerpc/pr64505.c
  564b9b7942b8363816b2ed8864ac1b7a  gcc/testsuite/gcc.target/powerpc/pr65058.c
  a284d0dacfcd6f771fef90d01d3a6372  gcc/testsuite/gcc.target/powerpc/pr65456.c
--- 50707,50713 ----
  90631e1f2929b792894198b96774c9fc  gcc/testsuite/gcc.target/powerpc/pr63354.c
  04a0032cc5edd0bc278f243f6959cd70  gcc/testsuite/gcc.target/powerpc/pr63491.c
  b5e8ef9958a6aa3dfdb0759b64d46722  gcc/testsuite/gcc.target/powerpc/pr64019.c
! b046ef8139fb2996a14da78fc4d5d49a  gcc/testsuite/gcc.target/powerpc/pr64205.c
  ce56e41279d8db54c64a5fd047e0cfcf  gcc/testsuite/gcc.target/powerpc/pr64505.c
  564b9b7942b8363816b2ed8864ac1b7a  gcc/testsuite/gcc.target/powerpc/pr65058.c
  a284d0dacfcd6f771fef90d01d3a6372  gcc/testsuite/gcc.target/powerpc/pr65456.c
*************** faf2ed46677346059dd2b7fd42254985  gcc/te
*** 50409,50414 ****
--- 50728,50737 ----
  3b3600883b142990a643f5b787bb22cb  gcc/testsuite/gcc.target/powerpc/pr69548.c
  c12c18f334b92db27768fc61c21a1b4a  gcc/testsuite/gcc.target/powerpc/pr69946.c
  03eb7b91e6fcf641d03ca949346d2dc9  gcc/testsuite/gcc.target/powerpc/pr69969.c
+ 325a069d871f180ee18e5ae4b3e8fadf  gcc/testsuite/gcc.target/powerpc/pr70010-1.c
+ 41104bdcf432978b1bb8217791c89c23  gcc/testsuite/gcc.target/powerpc/pr70010-3.c
+ f04c5add43326054cacbb6544404890d  gcc/testsuite/gcc.target/powerpc/pr70010-4.c
+ 9fb845b29067ab4979f300fb551b5702  gcc/testsuite/gcc.target/powerpc/pr70010.c
  7b679fd8b036308859824a29a78c13fd  gcc/testsuite/gcc.target/powerpc/pr70117.c
  222fda9019693e635c2d63ebdda27d2b  gcc/testsuite/gcc.target/powerpc/pr70640.c
  0a81f0b3117fb4f77424c3bc81a2a663  gcc/testsuite/gcc.target/powerpc/pr70669.c
*************** c9b0e6a1691a38bdd6d5045a4df02574  gcc/te
*** 50426,50432 ****
  43bb198cb008845fd64b0a0f340be13c  gcc/testsuite/gcc.target/powerpc/pr71698.c
  140c404b55422d7f1ea527d9803d6b5f  gcc/testsuite/gcc.target/powerpc/pr71720.c
  d9ccfe0048f3d64bbe5861c9aea6294f  gcc/testsuite/gcc.target/powerpc/pr71763.c
! a1a29a276bb3f6f8436c361b1ef31e74  gcc/testsuite/gcc.target/powerpc/pr71785.c
  743729f568d85b4bd156413e92dea820  gcc/testsuite/gcc.target/powerpc/pr71805.c
  10c2cc153d28f4b411dd877ecf747261  gcc/testsuite/gcc.target/powerpc/pr71977-1.c
  3c9ef43b11806c6399ebc3c9458c2ec3  gcc/testsuite/gcc.target/powerpc/pr71977-2.c
--- 50749,50755 ----
  43bb198cb008845fd64b0a0f340be13c  gcc/testsuite/gcc.target/powerpc/pr71698.c
  140c404b55422d7f1ea527d9803d6b5f  gcc/testsuite/gcc.target/powerpc/pr71720.c
  d9ccfe0048f3d64bbe5861c9aea6294f  gcc/testsuite/gcc.target/powerpc/pr71763.c
! 1a2ab1b5ac9370a9c043f60e7d47c0b8  gcc/testsuite/gcc.target/powerpc/pr71785.c
  743729f568d85b4bd156413e92dea820  gcc/testsuite/gcc.target/powerpc/pr71805.c
  10c2cc153d28f4b411dd877ecf747261  gcc/testsuite/gcc.target/powerpc/pr71977-1.c
  3c9ef43b11806c6399ebc3c9458c2ec3  gcc/testsuite/gcc.target/powerpc/pr71977-2.c
*************** e16e95e49a068e3c198ca05f1f517f27  gcc/te
*** 50467,50473 ****
  467b382b65b1ebbac6326ad8455010b0  gcc/testsuite/gcc.target/powerpc/pr79799-4.c
  6fb3807ef298bd1214fdd2135b1c617a  gcc/testsuite/gcc.target/powerpc/pr79799-5.c
  e88cc112bb1e58cac7a9d9b275f446e1  gcc/testsuite/gcc.target/powerpc/pr79907.c
! 1f37d371237a2549ab8743e019930f85  gcc/testsuite/gcc.target/powerpc/pr79909.c
  5cf4cc3547cf50f1b1d82e4e1a8f3f42  gcc/testsuite/gcc.target/powerpc/pr79916.c
  c4116b75f2059a7e1bab2e403b724598  gcc/testsuite/gcc.target/powerpc/pr79947.c
  8fe70e669118bfd74ac64bf553741d89  gcc/testsuite/gcc.target/powerpc/pr79951.c
--- 50790,50796 ----
  467b382b65b1ebbac6326ad8455010b0  gcc/testsuite/gcc.target/powerpc/pr79799-4.c
  6fb3807ef298bd1214fdd2135b1c617a  gcc/testsuite/gcc.target/powerpc/pr79799-5.c
  e88cc112bb1e58cac7a9d9b275f446e1  gcc/testsuite/gcc.target/powerpc/pr79907.c
! 839e8b59fffd1864e14e5cdcca752621  gcc/testsuite/gcc.target/powerpc/pr79909.c
  5cf4cc3547cf50f1b1d82e4e1a8f3f42  gcc/testsuite/gcc.target/powerpc/pr79916.c
  c4116b75f2059a7e1bab2e403b724598  gcc/testsuite/gcc.target/powerpc/pr79947.c
  8fe70e669118bfd74ac64bf553741d89  gcc/testsuite/gcc.target/powerpc/pr79951.c
*************** f2403ecf9bc868f8ced8c5516eebb625  gcc/te
*** 50475,50481 ****
  f3c185b1d8600748afca8de2e673d9d4  gcc/testsuite/gcc.target/powerpc/pr80098-2.c
  5ad121df1443ca4f01565b0e4dc9152d  gcc/testsuite/gcc.target/powerpc/pr80098-3.c
  e3724d1b8faf6dcacb8d047defe64496  gcc/testsuite/gcc.target/powerpc/pr80101-1.c
! 66ae7647dd692b6ddc6355ddda4f0fa6  gcc/testsuite/gcc.target/powerpc/pr80125.c
  0c08f4c83d90538f2c1ff74965ce6a2b  gcc/testsuite/gcc.target/powerpc/pr80210-2.c
  32dc6ec7c4a1a3cefe2efbb3b602ef2c  gcc/testsuite/gcc.target/powerpc/pr80210.c
  c74100b0e24e645cbd51ff8d93f11730  gcc/testsuite/gcc.target/powerpc/pr80246.c
--- 50798,50804 ----
  f3c185b1d8600748afca8de2e673d9d4  gcc/testsuite/gcc.target/powerpc/pr80098-2.c
  5ad121df1443ca4f01565b0e4dc9152d  gcc/testsuite/gcc.target/powerpc/pr80098-3.c
  e3724d1b8faf6dcacb8d047defe64496  gcc/testsuite/gcc.target/powerpc/pr80101-1.c
! d898a03a0134d7a17ff89a9859557dc9  gcc/testsuite/gcc.target/powerpc/pr80125.c
  0c08f4c83d90538f2c1ff74965ce6a2b  gcc/testsuite/gcc.target/powerpc/pr80210-2.c
  32dc6ec7c4a1a3cefe2efbb3b602ef2c  gcc/testsuite/gcc.target/powerpc/pr80210.c
  c74100b0e24e645cbd51ff8d93f11730  gcc/testsuite/gcc.target/powerpc/pr80246.c
*************** d86d5375cd27e7c265ce5093d761b62e  gcc/te
*** 50540,50546 ****
--- 50863,50879 ----
  8b275f7c4459d196031008305f80704f  gcc/testsuite/gcc.target/powerpc/pr87496-1.c
  5afbc71c04a26008e3fa99dce0a9f392  gcc/testsuite/gcc.target/powerpc/pr87496-2.c
  cf1e47fa56707db6216ed5de8f6df09f  gcc/testsuite/gcc.target/powerpc/pr87496-3.c
+ a3fcebbcc49f4e8e80184966262e4f7c  gcc/testsuite/gcc.target/powerpc/pr87532-mc.c
+ 5fd4bcc0443a583aade647593b461bf0  gcc/testsuite/gcc.target/powerpc/pr87532.c
+ cb0a8c588bb900030e2258e13d748a25  gcc/testsuite/gcc.target/powerpc/pr88100.c
  dd95a2250e2db6dba5532882d6c626fd  gcc/testsuite/gcc.target/powerpc/pr88965.c
+ c37f43ea14b9c2771195287a84b61d7f  gcc/testsuite/gcc.target/powerpc/pr89424-0.c
+ 641d52f8caa1635a7b47a9370f9b19ed  gcc/testsuite/gcc.target/powerpc/pr89765-mc.c
+ 212a3d50b8d112a6d4111e1f90023028  gcc/testsuite/gcc.target/powerpc/pr91275.c
+ 7448525e70a4c28a22cd002cbe417693  gcc/testsuite/gcc.target/powerpc/pr92090-2.c
+ 0572cf2070522083edcd09bb76b49b46  gcc/testsuite/gcc.target/powerpc/pr92090.c
+ 6ed2bd11c87cb97b53a02a6da437dd68  gcc/testsuite/gcc.target/powerpc/pr93073.c
+ 3ba8ef2a92d4982a4dc0e12f6d60290b  gcc/testsuite/gcc.target/powerpc/pure-builtin-redundant-load.c
  fb5aed78c31f2dd1317f24c4fa7835bb  gcc/testsuite/gcc.target/powerpc/quad-atomic.c
  4c4c29d599264356e1c6bc46cac8a876  gcc/testsuite/gcc.target/powerpc/r2_shrink-wrap.c
  171a411d14f30e8450dc3f2ef38b1bd7  gcc/testsuite/gcc.target/powerpc/recip-1.c
*************** ea174970897965faf63723778a9865af  gcc/te
*** 50586,50598 ****
  6d1873d2fbd2d019218b78d3b706b27b  gcc/testsuite/gcc.target/powerpc/sad-vectorize-2.c
  76c0fa8a6799cc205e741501f506d07e  gcc/testsuite/gcc.target/powerpc/sad-vectorize-3.c
  17056c52f1056b5b1839e452c96d0fa8  gcc/testsuite/gcc.target/powerpc/sad-vectorize-4.c
! e8409a903c25e73258a07cc7263f0fff  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c
  15bd7d0b1c9766ac9c14300c015d5793  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c
  fecbca1485084d70d917631126a31ef1  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c
  440a279cd4b54a0d56f1725ad5e57d55  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-4.c
  ef8eb7cbf624be95837254f86c894d5b  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c
  24a2f6cdda4929c5eaa245cc358ce7c6  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-6.c
! ca1b282ad40b24683e13c46737288d7e  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c
  f66a7c7a9b7cdd49a6b9860dbb16d90a  gcc/testsuite/gcc.target/powerpc/savres.c
  3584a721dbb6f8ff33bc626409267e7d  gcc/testsuite/gcc.target/powerpc/sd-pwr6.c
  a3970046e11425ef91be8092d326328d  gcc/testsuite/gcc.target/powerpc/sd-vsx.c
--- 50919,50931 ----
  6d1873d2fbd2d019218b78d3b706b27b  gcc/testsuite/gcc.target/powerpc/sad-vectorize-2.c
  76c0fa8a6799cc205e741501f506d07e  gcc/testsuite/gcc.target/powerpc/sad-vectorize-3.c
  17056c52f1056b5b1839e452c96d0fa8  gcc/testsuite/gcc.target/powerpc/sad-vectorize-4.c
! 117d3bda48a47bac18d3fc69aafa9bc5  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c
  15bd7d0b1c9766ac9c14300c015d5793  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c
  fecbca1485084d70d917631126a31ef1  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c
  440a279cd4b54a0d56f1725ad5e57d55  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-4.c
  ef8eb7cbf624be95837254f86c894d5b  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c
  24a2f6cdda4929c5eaa245cc358ce7c6  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-6.c
! 97459dfff65ecd5b32b5428b110a3cbb  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c
  f66a7c7a9b7cdd49a6b9860dbb16d90a  gcc/testsuite/gcc.target/powerpc/savres.c
  3584a721dbb6f8ff33bc626409267e7d  gcc/testsuite/gcc.target/powerpc/sd-pwr6.c
  a3970046e11425ef91be8092d326328d  gcc/testsuite/gcc.target/powerpc/sd-vsx.c
*************** b3e9870bc5d831fd67c299ee87dfb2f7  gcc/te
*** 50611,50617 ****
  31d586e0441dc6ae2d999f97d64dcf92  gcc/testsuite/gcc.target/powerpc/spe-vector-memcpy.c
  aefbc9c117b311a9394883e9c890efb9  gcc/testsuite/gcc.target/powerpc/spe-vector-memset.c
  9d9e8d8282ff5bb95e77c7a31c2efd6f  gcc/testsuite/gcc.target/powerpc/spe1.c
! 88922713d728acf906b95c66645c2539  gcc/testsuite/gcc.target/powerpc/spec-barr-1.c
  6c4e50344a9a562f1cda2882cd52818d  gcc/testsuite/gcc.target/powerpc/sse-addps-1.c
  118abacb2b8996a6812b8329848c72f6  gcc/testsuite/gcc.target/powerpc/sse-addss-1.c
  047b7ea1716e0312c4be53b318dcb9d8  gcc/testsuite/gcc.target/powerpc/sse-andnps-1.c
--- 50944,50950 ----
  31d586e0441dc6ae2d999f97d64dcf92  gcc/testsuite/gcc.target/powerpc/spe-vector-memcpy.c
  aefbc9c117b311a9394883e9c890efb9  gcc/testsuite/gcc.target/powerpc/spe-vector-memset.c
  9d9e8d8282ff5bb95e77c7a31c2efd6f  gcc/testsuite/gcc.target/powerpc/spe1.c
! 9f7405e90e6c4a12a3fadad7f8e97b82  gcc/testsuite/gcc.target/powerpc/spec-barr-1.c
  6c4e50344a9a562f1cda2882cd52818d  gcc/testsuite/gcc.target/powerpc/sse-addps-1.c
  118abacb2b8996a6812b8329848c72f6  gcc/testsuite/gcc.target/powerpc/sse-addss-1.c
  047b7ea1716e0312c4be53b318dcb9d8  gcc/testsuite/gcc.target/powerpc/sse-andnps-1.c
*************** e35651111f46b8456024a97df88e8c67  gcc/te
*** 50816,50822 ****
  f420517d07cdb4deff1e9937f6e5d432  gcc/testsuite/gcc.target/powerpc/sse2-xorpd-1.c
  c4da621e2f792bd21112c40ff73a206d  gcc/testsuite/gcc.target/powerpc/ssp-1.c
  28df2b90767c1ab9ffd06127b47b30f9  gcc/testsuite/gcc.target/powerpc/ssp-2.c
! c9be7e0cc9ba390460928b1de506fa70  gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c
  ab241355ba77c8e163b05eb81f33d1c5  gcc/testsuite/gcc.target/powerpc/stack-limit.c
  a59ee456442fb848ede07589c0a6bb6e  gcc/testsuite/gcc.target/powerpc/swaps-p8-1.c
  f9cfd48e5324b92443f64a93e5c47140  gcc/testsuite/gcc.target/powerpc/swaps-p8-10.c
--- 51149,51155 ----
  f420517d07cdb4deff1e9937f6e5d432  gcc/testsuite/gcc.target/powerpc/sse2-xorpd-1.c
  c4da621e2f792bd21112c40ff73a206d  gcc/testsuite/gcc.target/powerpc/ssp-1.c
  28df2b90767c1ab9ffd06127b47b30f9  gcc/testsuite/gcc.target/powerpc/ssp-2.c
! 13c6ee4934b094179a2336371362f10d  gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c
  ab241355ba77c8e163b05eb81f33d1c5  gcc/testsuite/gcc.target/powerpc/stack-limit.c
  a59ee456442fb848ede07589c0a6bb6e  gcc/testsuite/gcc.target/powerpc/swaps-p8-1.c
  f9cfd48e5324b92443f64a93e5c47140  gcc/testsuite/gcc.target/powerpc/swaps-p8-10.c
*************** c896734b9eeb5426643c95d554b3c537  gcc/te
*** 50916,50921 ****
--- 51249,51257 ----
  54b4e79e3e68990bbb35785a9baebefe  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi-df.c
  17dc541115d43f98928aa98aec2e8966  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi.c
  fa4d484cedb3e830a8c4ed23fcac60f1  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-df.c
+ 715dd2ff2b925703cee51c3591a11a39  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h
+ 1642c9c56d8fc26c4a00e52271e9aa62  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c
+ fa2b56f4604687d4c40b1dc0dcaf0a93  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c
  0cf0efad9beb904fc660081db1e08b5b  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu.c
  3e12eaa72b1a5951659db6fa313cc678  gcc/testsuite/gcc.target/powerpc/vec-extract-v2df.c
  ed5d771bd86a170ce802a098b04be68b  gcc/testsuite/gcc.target/powerpc/vec-extract-v2di.c
*************** aaeb960a2e271bc474363e9917aecb51  gcc/te
*** 51077,51089 ****
--- 51413,51473 ----
  588084e34957bfd3309007d462d75b67  gcc/testsuite/gcc.target/powerpc/vsx-7-be.c
  dda33ad7be60f57b58ed431fa32786d2  gcc/testsuite/gcc.target/powerpc/vsx-7.h
  b707e1f72127566e2aa7521320d4818f  gcc/testsuite/gcc.target/powerpc/vsx-builtin-1.c
+ 746a6949d77db46dfd9f2e1e8fec69ae  gcc/testsuite/gcc.target/powerpc/vsx-builtin-10a.c
+ ee3ef7928ea6e74901f53131d408b023  gcc/testsuite/gcc.target/powerpc/vsx-builtin-10b.c
+ 9d682d5a5fd031d3e41611dbc8838f10  gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c
+ 3dc8ccf65d4614d0c682d9459a4b1620  gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c
+ 1bdbd00004403d369e96bc57687fe65b  gcc/testsuite/gcc.target/powerpc/vsx-builtin-11a.c
+ 4d688d6cc30f1fc3c08737845ddab784  gcc/testsuite/gcc.target/powerpc/vsx-builtin-11b.c
+ d8de4a1238d67cb93380cea219a1c4a1  gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c
+ f6cbf8e71f48a7a75897e540e89b4fd2  gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c
+ 1ebbfe9fa476b355b9e13099e7b50ec7  gcc/testsuite/gcc.target/powerpc/vsx-builtin-12a.c
+ d7651b4972f66a6d7723f6db28e98dd4  gcc/testsuite/gcc.target/powerpc/vsx-builtin-12b.c
+ 14caae2cbbe03ad25daed350e6b3a6dd  gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c
+ 44033307838f447152183070116da9ec  gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c
+ 538d3cf96986b862419784127e5e291d  gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c
+ 0b7e8c580b33ced4e69da2f49d78a4b9  gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c
+ 70521d0c42ddccdf8e09cdeed533bdec  gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c
+ 429c38af99dff70d9a830a4de4ecac6d  gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c
+ f78214f727e056cb438aa1dc4f19c735  gcc/testsuite/gcc.target/powerpc/vsx-builtin-14a.c
+ 6d407c44e65dacb9f32753308a3fc6e8  gcc/testsuite/gcc.target/powerpc/vsx-builtin-14b.c
+ 8444014ba0811419ad1dc54a94835cc3  gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c
+ f8ff6fdf4e4d9c21651204401d90dbb6  gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c
+ f6fa5f193712221d9f11af0ddc252276  gcc/testsuite/gcc.target/powerpc/vsx-builtin-15a.c
+ da132fcd19023e902814c2c6c3d3e728  gcc/testsuite/gcc.target/powerpc/vsx-builtin-15b.c
+ 7ff64276f648cac42ab55f4a33abc049  gcc/testsuite/gcc.target/powerpc/vsx-builtin-15c.c
+ 04ac76b0b1f69b6e2d06d182954ee632  gcc/testsuite/gcc.target/powerpc/vsx-builtin-15d.c
+ 0df772c46c802870a93dbc5b775249bf  gcc/testsuite/gcc.target/powerpc/vsx-builtin-16a.c
+ c9315e5014dc595cb7bb80a684e77d47  gcc/testsuite/gcc.target/powerpc/vsx-builtin-16b.c
+ 555d256392e00f41da27e30bfb6b2140  gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c
+ 99f7a0d1d3d3f422c095ece91811cf66  gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c
+ 5c7ef9406c168be4ac15c2543a1475cb  gcc/testsuite/gcc.target/powerpc/vsx-builtin-17a.c
+ 7ddf389b2cf068432671b0739b2b8457  gcc/testsuite/gcc.target/powerpc/vsx-builtin-17b.c
+ efc4c39d238a4eb46e670b94cdfc9834  gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c
+ efc4c39d238a4eb46e670b94cdfc9834  gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c
+ a114b00aa5a1b18273f1299e1fc08afe  gcc/testsuite/gcc.target/powerpc/vsx-builtin-18a.c
+ 23c41691997a3ea06df29aef360ae13b  gcc/testsuite/gcc.target/powerpc/vsx-builtin-18b.c
+ ee3bc99955a32918aed1906ad772e2c9  gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c
+ ac19be27b979d134fa38e21eff9da1d5  gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c
+ 6576ab9009c0a3a1175ff644b5490d1d  gcc/testsuite/gcc.target/powerpc/vsx-builtin-19a.c
+ 5d3014e34a036f0024487d6be5274ab0  gcc/testsuite/gcc.target/powerpc/vsx-builtin-19b.c
+ ef6577fd84945078b4cef14e99d50716  gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c
+ eb41712c0a85d75f7ad259f45c035835  gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c
  48340c75e0602ad1923b6940b4c23e61  gcc/testsuite/gcc.target/powerpc/vsx-builtin-2.c
+ d128b18a20f2a55978e519508f48f1ae  gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c
+ 462d58bd5e0209dd5d6550bfae0c2311  gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c
+ 6481e7c45c6c95a23feaca3286bf3c1d  gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c
+ 42b7bc847179c4ef1e6e7142bb27bf11  gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c
  5684c60d3a35f107d7f0f5b4b4a7876a  gcc/testsuite/gcc.target/powerpc/vsx-builtin-3.c
  e51201063924b6407317c441d400073d  gcc/testsuite/gcc.target/powerpc/vsx-builtin-4.c
  7e66f87dd06b95da1686ec402326cda3  gcc/testsuite/gcc.target/powerpc/vsx-builtin-5.c
  4193c32bf9ad46a7f16d0519d29c38d0  gcc/testsuite/gcc.target/powerpc/vsx-builtin-6.c
  93a224e2e5e545039eac6aa09d4a1897  gcc/testsuite/gcc.target/powerpc/vsx-builtin-7.c
  66ac24fd431ded59ec3ab33526bcf6e2  gcc/testsuite/gcc.target/powerpc/vsx-builtin-8.c
+ 33633751eb0bfabbb2951a0070770508  gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c
+ 2e9c4b2355be46611bfe42e4a9f8d1f3  gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c
+ 1e35ead3525b068deff65ea3783111ee  gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c
+ 2d6ebc881e5a0f8f968a2999b0706911  gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c
  d3469962c4213b0187a321587ac8965b  gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c
  f6fa44988b5f5b91a692ad90d5722e4b  gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c
  4b2dc66c2fc3e7e7ec27087bb497b6a8  gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c
*************** aae6afd4d9a2054d572638ee18a6836a  gcc/te
*** 51127,51132 ****
--- 51511,51518 ----
  ea0ee90903900008dafd89bff7612b2f  gcc/testsuite/gcc.target/powerpc/warn-2.c
  a416d38760a620b535b56c151a15e3f4  gcc/testsuite/gcc.target/powerpc/warn-lvsl-lvsr.c
  14c90f84d8058b60faff46b00c097a9c  gcc/testsuite/gcc.target/riscv/pr84660.c
+ 1a434ff3440a676fb4f4c586bf3152e5  gcc/testsuite/gcc.target/riscv/pr93202.c
+ b78c980bec602c6a91ac1bc85320f39f  gcc/testsuite/gcc.target/riscv/promote-type-for-libcall.c
  e38cc032ecb8846b9483954c34ed88b9  gcc/testsuite/gcc.target/riscv/riscv.exp
  6bd569a0881471228538a06acf78338a  gcc/testsuite/gcc.target/riscv/save-restore-1.c
  150aa4eb381ea8572b1fe3f201704777  gcc/testsuite/gcc.target/riscv/shift-and-1.c
*************** d127ee93571cc359b60fa89c63392525  gcc/te
*** 51317,51322 ****
--- 51703,51711 ----
  8b4969fbf314851ec142b17e9a328088  gcc/testsuite/gcc.target/s390/pr80725.c
  735bf8da0d759e7de791e71467439655  gcc/testsuite/gcc.target/s390/pr81534.c
  d8d4be7f8d46a289e2ef8e7db7fd3f21  gcc/testsuite/gcc.target/s390/pr84295.c
+ f61f4c2353779a8836bca364a80c1221  gcc/testsuite/gcc.target/s390/pr89775-1.c
+ b379cd03e188ebd20fb6bfd9e811a8f6  gcc/testsuite/gcc.target/s390/pr89775-2.c
+ f4792ece0a0aff8add8968cae67374ad  gcc/testsuite/gcc.target/s390/pr93908.c
  f9de3c4e9d9e8c3a707e1f51e48901b6  gcc/testsuite/gcc.target/s390/return-addr1.c
  5368e8759352b798ae1db6bc79919aa2  gcc/testsuite/gcc.target/s390/return-addr2.c
  f974e5ff639dd74404435089c4a7a5b2  gcc/testsuite/gcc.target/s390/risbg-ll-1.c
*************** f8fda1b5b427ecffec0a8835386c4342  gcc/te
*** 51413,51418 ****
--- 51802,51808 ----
  9e482ff5796d7aa27f6f404a18462f13  gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-2.c
  201a36e4a6548d10d83352d305b4284a  gcc/testsuite/gcc.target/s390/tf_to_di-1.c
  8a6c46e492362a7ae789676034c82a23  gcc/testsuite/gcc.target/s390/vector/int128-1.c
+ 4fefdb80366d27b600c5e726a3b722da  gcc/testsuite/gcc.target/s390/vector/pr92950.c
  f8ddf98d23fed8fdb81fc0b6b8a34fa4  gcc/testsuite/gcc.target/s390/vector/stpcpy-1.c
  c6799efe253acc955e2b9dcf44075d99  gcc/testsuite/gcc.target/s390/vector/vcond-shift.c
  8fa9b68cf0196b4198ce00a304191744  gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c
*************** f6942a3fba9c800bffade3bb79196479  gcc/te
*** 51446,51451 ****
--- 51836,51842 ----
  9854e916ee33c3d55eb8860c8a3fed74  gcc/testsuite/gcc.target/s390/vector/vec-nopeel-2.c
  03ba06d58e7f65b8e47eace2aff32bda  gcc/testsuite/gcc.target/s390/vector/vec-scalar-cmp-1.c
  8de36944e18edbbcc735c9baad533f52  gcc/testsuite/gcc.target/s390/vector/vec-shift-1.c
+ 0f81f716920700cba16fc05e47df6d56  gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c
  cea49877a5895e80cb13491b6cdfa2a2  gcc/testsuite/gcc.target/s390/vector/vec-sub-1.c
  db4e2b1f6b0441e2f2f64b6e141245cd  gcc/testsuite/gcc.target/s390/vector/vec-vcond-1.c
  3820ec0689c3262f947212e6f357e08c  gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c
*************** dc95f2902df894907c8cd4f00960f509  gcc/te
*** 51459,51464 ****
--- 51850,51856 ----
  c5f2f4df3f7c11977663ad182d69c2a7  gcc/testsuite/gcc.target/s390/zvector/pr82322.c
  2a1b20d2e3e33de7b491ea6c0228526b  gcc/testsuite/gcc.target/s390/zvector/pr82463.c
  7915a7e0fd1a86504253e59af42ac369  gcc/testsuite/gcc.target/s390/zvector/pr82465.c
+ 52639af19eb9820f01b9c5381a9fc995  gcc/testsuite/gcc.target/s390/zvector/vec-addc-u128.c
  6924d62f235015dbe0a12e676b094f6d  gcc/testsuite/gcc.target/s390/zvector/vec-cmp-1.c
  c16bd7eec0ebe296eddd356e2f483cf9  gcc/testsuite/gcc.target/s390/zvector/vec-cmp-2.c
  ccdf3c2d3031ce42906139030ba856e1  gcc/testsuite/gcc.target/s390/zvector/vec-dbl-math-compile-1.c
*************** bb6fff430ecdcaea1d62ba4c832fde59  gcc/te
*** 51476,51481 ****
--- 51868,51875 ----
  bf9a16bf1a11dc3b1eaf16828c088c55  gcc/testsuite/gcc.target/s390/zvector/vec-splat-1.c
  fca18383b3db4c77fba6885b30964e40  gcc/testsuite/gcc.target/s390/zvector/vec-splat-2.c
  f9fc274321010fadf7fa7d7821f483f8  gcc/testsuite/gcc.target/s390/zvector/vec-test-mask-1.c
+ c9c377c12e8e370ccdc50badddb742a9  gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-1.c
+ 6a18a0aed0d4fd99218171cc20a57b5c  gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-2.c
  5b19f136f3d036d31d3dafbc132611a5  gcc/testsuite/gcc.target/sh/20080410-1.c
  18bf963df8ed3145d8ccd6e57533f4c2  gcc/testsuite/gcc.target/sh/attr-isr-nosave_low_regs.c
  d660e4c3dbd871b5fbe35dfe7edcf660  gcc/testsuite/gcc.target/sh/attr-isr-trap_exit.c
*************** ffba4a644f6c776dd608a5285349bff8  gcc/te
*** 51703,51709 ****
  a67458660c2ef2010f128fdaa4faaa86  gcc/testsuite/gcc.target/sparc/20160104-1.c
  22f916e859ece29a91c18dffaca9e14b  gcc/testsuite/gcc.target/sparc/20160104-2.c
  3d69d4562d0fbb323ff101a9d3271e9a  gcc/testsuite/gcc.target/sparc/20160229-1.c
! f105a9c71ffd58f541747bfe25ebdc89  gcc/testsuite/gcc.target/sparc/20161111-1.c
  5b34d024151ffbbd5c3b91733a663c88  gcc/testsuite/gcc.target/sparc/20170205-1.c
  e470b0a0d1a056b60c3915a6dfcfd4ae  gcc/testsuite/gcc.target/sparc/20170228-1.c
  44373c57181608413fc07f3ec0e2ad6e  gcc/testsuite/gcc.target/sparc/align.c
--- 52097,52103 ----
  a67458660c2ef2010f128fdaa4faaa86  gcc/testsuite/gcc.target/sparc/20160104-1.c
  22f916e859ece29a91c18dffaca9e14b  gcc/testsuite/gcc.target/sparc/20160104-2.c
  3d69d4562d0fbb323ff101a9d3271e9a  gcc/testsuite/gcc.target/sparc/20160229-1.c
! 5b143c3e46fe04901dc0f5da126d1e44  gcc/testsuite/gcc.target/sparc/20161111-1.c
  5b34d024151ffbbd5c3b91733a663c88  gcc/testsuite/gcc.target/sparc/20170205-1.c
  e470b0a0d1a056b60c3915a6dfcfd4ae  gcc/testsuite/gcc.target/sparc/20170228-1.c
  44373c57181608413fc07f3ec0e2ad6e  gcc/testsuite/gcc.target/sparc/align.c
*************** b1be720ed5de1c44dcf4d1074acf5aca  gcc/te
*** 51774,51784 ****
  7ed645966d10b2ee1cf5a112329c903c  gcc/testsuite/gcc.target/sparc/movcc-2.c
  06ebc1bfb7ebac800bc8e13a4c96ecdc  gcc/testsuite/gcc.target/sparc/niagara7-align.c
  27bc21317eeddefa4b9cc41e1c4e363c  gcc/testsuite/gcc.target/sparc/noresult.c
! 019b2c91e8d69c544c8425875f80963c  gcc/testsuite/gcc.target/sparc/overflow-1.c
! 0d159b72526aa6fb4b1565064261c3d5  gcc/testsuite/gcc.target/sparc/overflow-2.c
! 95b57084fc558c6304bd40676e58d06f  gcc/testsuite/gcc.target/sparc/overflow-3.c
! 98179c824edead00452d8a21e782b843  gcc/testsuite/gcc.target/sparc/overflow-4.c
! 1090302dbbf7408448094723169c43c7  gcc/testsuite/gcc.target/sparc/overflow-5.c
  0e446c8782cfda1bf1b2b7467cdf43af  gcc/testsuite/gcc.target/sparc/pdist-2.c
  77281e86e797be1ef8a0784c9a4db58a  gcc/testsuite/gcc.target/sparc/pdist-3.c
  178b0f750e337f74871710d17257944f  gcc/testsuite/gcc.target/sparc/pdist.c
--- 52168,52178 ----
  7ed645966d10b2ee1cf5a112329c903c  gcc/testsuite/gcc.target/sparc/movcc-2.c
  06ebc1bfb7ebac800bc8e13a4c96ecdc  gcc/testsuite/gcc.target/sparc/niagara7-align.c
  27bc21317eeddefa4b9cc41e1c4e363c  gcc/testsuite/gcc.target/sparc/noresult.c
! a54091faea7a1abd6cd4fbd0ef1b4336  gcc/testsuite/gcc.target/sparc/overflow-1.c
! d0fc65bbbe891276a96818aa810ee61a  gcc/testsuite/gcc.target/sparc/overflow-2.c
! 6a5bc56eee4379cd67f7fd68d7a6ab79  gcc/testsuite/gcc.target/sparc/overflow-3.c
! 472aca3a2431c01ce39d9f08e3132cc6  gcc/testsuite/gcc.target/sparc/overflow-4.c
! 1b81df368ab2a7263804157f620da8fb  gcc/testsuite/gcc.target/sparc/overflow-5.c
  0e446c8782cfda1bf1b2b7467cdf43af  gcc/testsuite/gcc.target/sparc/pdist-2.c
  77281e86e797be1ef8a0784c9a4db58a  gcc/testsuite/gcc.target/sparc/pdist-3.c
  178b0f750e337f74871710d17257944f  gcc/testsuite/gcc.target/sparc/pdist.c
*************** d3c71d269c1b4265e86c5ace1089e848  gcc/te
*** 51942,51949 ****
  b43e5e8d171dcdbec5cac42b0b9a298c  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_m256.c
  ff732b27c9bb0c5b99ccccb31d12d3ea  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_structs.c
  d02989c16f0d1cd0951fe435483c550e  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_unions.c
! e0cbb0807f6e9896214abcfc73d00e2d  gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp
  2cf03d73572ce81dab43dcceeeacf5c4  gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h
  341c91bf54efad299e2f11e9329738fa  gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support.S
  1c4dc628c680a1d3ad4767c3a1455499  gcc/testsuite/gcc.target/x86_64/abi/avx512f/avx512f-check.h
  75a0b911edb2a39978caadbf2c750015  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_m512_returning.c
--- 52336,52344 ----
  b43e5e8d171dcdbec5cac42b0b9a298c  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_m256.c
  ff732b27c9bb0c5b99ccccb31d12d3ea  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_structs.c
  d02989c16f0d1cd0951fe435483c550e  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_unions.c
! a47b674925018aecf8fe60a15de04b2c  gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp
  2cf03d73572ce81dab43dcceeeacf5c4  gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h
+ c79ac297933c3dae25e3f797420d1814  gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s
  341c91bf54efad299e2f11e9329738fa  gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support.S
  1c4dc628c680a1d3ad4767c3a1455499  gcc/testsuite/gcc.target/x86_64/abi/avx512f/avx512f-check.h
  75a0b911edb2a39978caadbf2c750015  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_m512_returning.c
*************** fd47cb2ee3abca7f4ec8637b9e9e793b  gcc/te
*** 52447,52452 ****
--- 52842,52848 ----
  6d3f169e1cbf329f60af4c22a88530ea  gcc/testsuite/gfortran.dg/allocate_with_arrayspec_1.f90
  bff4f86cadc34cdb60ab04c217d46dbd  gcc/testsuite/gfortran.dg/allocate_with_mold_1.f90
  9f39ddc177a6f3ff474548de040842f7  gcc/testsuite/gfortran.dg/allocate_with_mold_2.f90
+ f4cacbb7fc7a73c4dc452abb4169a708  gcc/testsuite/gfortran.dg/allocate_with_mold_3.f90
  8525309ee0a25fc4ec16a87c02a27e9a  gcc/testsuite/gfortran.dg/allocate_with_source_1.f90
  31f46b6f8cf8a1610b258ea73d0033de  gcc/testsuite/gfortran.dg/allocate_with_source_10.f08
  3e69f8fb58e06a24fc9934b0040bc33c  gcc/testsuite/gfortran.dg/allocate_with_source_11.f08
*************** fe3a537d232e11c904ccb01a3aab7662  gcc/te
*** 52482,52487 ****
--- 52878,52884 ----
  12f3d33d5ae0d7cf655d8f39f073d9a9  gcc/testsuite/gfortran.dg/allocate_zerosize_2.f90
  ce98de1957479e069ab10632545c5afa  gcc/testsuite/gfortran.dg/allocate_zerosize_3.f
  6a729cf1f6bf67aa0e2493345f68e5fc  gcc/testsuite/gfortran.dg/altreturn_1.f90
+ 35675d46dde8f42af0dccd6d6054d457  gcc/testsuite/gfortran.dg/altreturn_10.f90
  7cbc1f043d9ba68898b8a84dff22a6f7  gcc/testsuite/gfortran.dg/altreturn_2.f90
  ab15f72b5cb8d2d12ce756b7de1444a2  gcc/testsuite/gfortran.dg/altreturn_3.f90
  b852529cec3b92b7d12cc9eec0f3559f  gcc/testsuite/gfortran.dg/altreturn_4.f90
*************** b852529cec3b92b7d12cc9eec0f3559f  gcc/te
*** 52489,52494 ****
--- 52886,52893 ----
  9b31f9f4ca2bcd7c062e04bc30721dc3  gcc/testsuite/gfortran.dg/altreturn_6.f90
  eae1c01e9cd07e06f5b2053c9c8e8d0c  gcc/testsuite/gfortran.dg/altreturn_7.f90
  60795209d96fe6d73334d162b3138c27  gcc/testsuite/gfortran.dg/altreturn_8.f90
+ 14f153f4930c4715ce36663b7f2859d1  gcc/testsuite/gfortran.dg/altreturn_9_0.f90
+ 3c92d543d83475baecb2a7bac4775a08  gcc/testsuite/gfortran.dg/altreturn_9_1.f90
  5efcafe8829b585812ac42002ce9079c  gcc/testsuite/gfortran.dg/ambiguous_reference_1.f90
  407349fe5dc0dd80df43de2e773a4cab  gcc/testsuite/gfortran.dg/ambiguous_reference_2.f90
  4a2d243fa69596ed5111843ecb20b347  gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90
*************** a265bfcab0ca803759d6c4d3ea6defd8  gcc/te
*** 52519,52524 ****
--- 52918,52924 ----
  9a6dc039d47b29ccb678823eb76c7e6c  gcc/testsuite/gfortran.dg/argument_checking_8.f90
  ae5c0c1a40358f4209139ab1ba4c93a1  gcc/testsuite/gfortran.dg/argument_checking_9.f90
  f2050f4ab1ae68ef71906c613ddc6d03  gcc/testsuite/gfortran.dg/arith_divide.f
+ e91a18d295c64b6421d9e76487338fa8  gcc/testsuite/gfortran.dg/arith_divide_2.f90
  3130a308b1d1471577ea44bf582c1bec  gcc/testsuite/gfortran.dg/arith_divide_no_check.f
  9f88f5ececa8e91571e1a769c9375575  gcc/testsuite/gfortran.dg/arithmetic_if.f90
  ad54c15b47e17edab3af8726783901c3  gcc/testsuite/gfortran.dg/arithmetic_overflow_1.f90
*************** a7a4d71734bf9559e09017fe4616e065  gcc/te
*** 52657,52663 ****
  28bbca8fc062ad301c676d4eb94d000d  gcc/testsuite/gfortran.dg/assign-debug.f90
  7ad5faf60f3a1cebebfbb2c9e52516d7  gcc/testsuite/gfortran.dg/assign.f90
  4fd44d78ecb3264e1dd3d6bbb0ca8ea6  gcc/testsuite/gfortran.dg/assign_1.f90
! 4238529233bdbb0f1537f457bf9ba682  gcc/testsuite/gfortran.dg/assign_10.f90
  d13716000aff2182530213b6daeb5f10  gcc/testsuite/gfortran.dg/assign_2.f90
  a0494aa37ce786eddcb2107da73e9e9d  gcc/testsuite/gfortran.dg/assign_3.f90
  bd3eaa5ee0e2bbe2c28826271bd7069f  gcc/testsuite/gfortran.dg/assign_4.f
--- 53057,53063 ----
  28bbca8fc062ad301c676d4eb94d000d  gcc/testsuite/gfortran.dg/assign-debug.f90
  7ad5faf60f3a1cebebfbb2c9e52516d7  gcc/testsuite/gfortran.dg/assign.f90
  4fd44d78ecb3264e1dd3d6bbb0ca8ea6  gcc/testsuite/gfortran.dg/assign_1.f90
! 2fadd08fe3904fa5e7b9e433747dd9e5  gcc/testsuite/gfortran.dg/assign_10.f90
  d13716000aff2182530213b6daeb5f10  gcc/testsuite/gfortran.dg/assign_2.f90
  a0494aa37ce786eddcb2107da73e9e9d  gcc/testsuite/gfortran.dg/assign_3.f90
  bd3eaa5ee0e2bbe2c28826271bd7069f  gcc/testsuite/gfortran.dg/assign_4.f
*************** a1f5f0d8423367d45fe9382b407ce7e9  gcc/te
*** 52706,52711 ****
--- 53106,53113 ----
  c410bfd5d1fc6723876f3438e819ed8b  gcc/testsuite/gfortran.dg/associate_40.f90
  19375128aa6055d022377a669a7dffcf  gcc/testsuite/gfortran.dg/associate_41.f90
  9a37c444f19b419083ffbbdcc1e8eb59  gcc/testsuite/gfortran.dg/associate_44.f90
+ 47ae1500d4b97d431462d23e9c5895d0  gcc/testsuite/gfortran.dg/associate_48.f90
+ c73b6100086b4db74c5f70aa2b7a9af6  gcc/testsuite/gfortran.dg/associate_49.f90
  5dfaf5e9c3d8b8b8f835046ca42ccbf4  gcc/testsuite/gfortran.dg/associate_5.f03
  fe80c25bfc4d1e630472420bac3dc836  gcc/testsuite/gfortran.dg/associate_6.f03
  ac2154aefe0a4ce981b3fa252235e2dd  gcc/testsuite/gfortran.dg/associate_7.f03
*************** cdbd174fba27a1cc2fe42d6e10b97afd  gcc/te
*** 52772,52778 ****
  8bf64bb3c49e7fe58c386a66c599504b  gcc/testsuite/gfortran.dg/assumed_size_refs_3.f90
  3e96e44672f88b56bd72f233716f03cd  gcc/testsuite/gfortran.dg/assumed_size_refs_4.f90
  6637ca606075a490a8af76882f9b6797  gcc/testsuite/gfortran.dg/assumed_type_1.f90
! a6cc14805164447521e48dfbdeed7a0b  gcc/testsuite/gfortran.dg/assumed_type_2.f90
  27b0b5ad82abb1d06990db9025f0c992  gcc/testsuite/gfortran.dg/assumed_type_3.f90
  efe423227b9fdac2ac81898e5770a7d9  gcc/testsuite/gfortran.dg/assumed_type_4.f90
  4700aa6f851cace7a18c8476fe6d6872  gcc/testsuite/gfortran.dg/assumed_type_5.f90
--- 53174,53180 ----
  8bf64bb3c49e7fe58c386a66c599504b  gcc/testsuite/gfortran.dg/assumed_size_refs_3.f90
  3e96e44672f88b56bd72f233716f03cd  gcc/testsuite/gfortran.dg/assumed_size_refs_4.f90
  6637ca606075a490a8af76882f9b6797  gcc/testsuite/gfortran.dg/assumed_type_1.f90
! 11c5f5af0c06889c560a709287c4d73e  gcc/testsuite/gfortran.dg/assumed_type_2.f90
  27b0b5ad82abb1d06990db9025f0c992  gcc/testsuite/gfortran.dg/assumed_type_3.f90
  efe423227b9fdac2ac81898e5770a7d9  gcc/testsuite/gfortran.dg/assumed_type_4.f90
  4700aa6f851cace7a18c8476fe6d6872  gcc/testsuite/gfortran.dg/assumed_type_5.f90
*************** ec29931f9b3f84e65c0addc59ccb39bf  gcc/te
*** 52913,52918 ****
--- 53315,53324 ----
  0cc03e2fd3571908f49f70d6dabaa128  gcc/testsuite/gfortran.dg/binding_label_tests_28.f90
  fbe4a90945f5cbcde230db8b880a4d7a  gcc/testsuite/gfortran.dg/binding_label_tests_29.f90
  3da0c43e404ea44650ab9a963fa41bee  gcc/testsuite/gfortran.dg/binding_label_tests_3.f03
+ e9eb0ce619abe6c5f23f938496878cff  gcc/testsuite/gfortran.dg/binding_label_tests_30.f90
+ c0d788f5fa3898fea232e169e1b1fbd0  gcc/testsuite/gfortran.dg/binding_label_tests_31.f90
+ d2102c94673affc257d3e7376d873240  gcc/testsuite/gfortran.dg/binding_label_tests_32.f90
+ 71cba30c6667a8dc0eed115b1e1f658d  gcc/testsuite/gfortran.dg/binding_label_tests_33.f90
  91cd6ad63a324b639449d9463b1a1e66  gcc/testsuite/gfortran.dg/binding_label_tests_4.f03
  27695dee78547e7050f28a42fe933cf4  gcc/testsuite/gfortran.dg/binding_label_tests_5.f03
  07f203142fb7f0e2e9ab4fdd1b57c16f  gcc/testsuite/gfortran.dg/binding_label_tests_6.f03
*************** bd6eb17303abbc4e9007d3120de885aa  gcc/te
*** 52940,52945 ****
--- 53346,53352 ----
  467e3192431dc9f382e940356a5e9e31  gcc/testsuite/gfortran.dg/block_name_1.f90
  af3c12f2a878273c530d8127f9dea7fb  gcc/testsuite/gfortran.dg/block_name_2.f90
  d9e1d07ea9cf0a2f95002225bdeea245  gcc/testsuite/gfortran.dg/blockdata_1.f90
+ 7dd308b3ba190467e90bfb36452b2778  gcc/testsuite/gfortran.dg/blockdata_11.f90
  d7ced503ea09a16752521a1f4b1fddc8  gcc/testsuite/gfortran.dg/blockdata_2.f90
  8f473f427228b27b02d4863c73894c8b  gcc/testsuite/gfortran.dg/blockdata_3.f90
  e8876e93b76b208250265dc7c4145e96  gcc/testsuite/gfortran.dg/blockdata_4.f90
*************** d1b107332fd2ca83ba6ac402e54202d6  gcc/te
*** 53120,53125 ****
--- 53527,53533 ----
  ef5c9b71cfe2a7ae0c7eda3f4213cb68  gcc/testsuite/gfortran.dg/c_ptr_tests_16.f90
  ac91e127e05ae13da7cec3fc1053a789  gcc/testsuite/gfortran.dg/c_ptr_tests_17.f90
  7a873f03774fb774534f537314416225  gcc/testsuite/gfortran.dg/c_ptr_tests_18.f90
+ 98fb1fadfe2e07ccdc842d472fd09e95  gcc/testsuite/gfortran.dg/c_ptr_tests_19.f90
  19526fb6a19b0628fb7a70b634ebe98d  gcc/testsuite/gfortran.dg/c_ptr_tests_5.f03
  f6be312d40aa69afff5a2130cf70acb9  gcc/testsuite/gfortran.dg/c_ptr_tests_7.f03
  7aa5685a7f16644136d0f0d20953db0f  gcc/testsuite/gfortran.dg/c_ptr_tests_7_driver.c
*************** f644d887f39031b5af20b0a57a7894c4  gcc/te
*** 53197,53203 ****
  7552d7512b3e8d60918c3a81c9b7fb02  gcc/testsuite/gfortran.dg/char_pointer_assign_3.f90
  96b30f56a9de104b5d79a66d116b672a  gcc/testsuite/gfortran.dg/char_pointer_assign_4.f90
  37eb7ba9eb77543854f7607067c520c8  gcc/testsuite/gfortran.dg/char_pointer_assign_5.f90
! 05bbfce165dd596cf7612b34c8952dac  gcc/testsuite/gfortran.dg/char_pointer_assign_6.f90
  dd8a633154df2c14213e24aa617b08a2  gcc/testsuite/gfortran.dg/char_pointer_assign_icb_1.f90
  ddf9f77e66c4a8135a264b7cc863b0b6  gcc/testsuite/gfortran.dg/char_pointer_comp_assign.f90
  064ebf7ad523c69997a5cd603b66eb56  gcc/testsuite/gfortran.dg/char_pointer_dependency.f90
--- 53605,53611 ----
  7552d7512b3e8d60918c3a81c9b7fb02  gcc/testsuite/gfortran.dg/char_pointer_assign_3.f90
  96b30f56a9de104b5d79a66d116b672a  gcc/testsuite/gfortran.dg/char_pointer_assign_4.f90
  37eb7ba9eb77543854f7607067c520c8  gcc/testsuite/gfortran.dg/char_pointer_assign_5.f90
! 28d4409e03b02cb11c0c9a869cc23b95  gcc/testsuite/gfortran.dg/char_pointer_assign_6.f90
  dd8a633154df2c14213e24aa617b08a2  gcc/testsuite/gfortran.dg/char_pointer_assign_icb_1.f90
  ddf9f77e66c4a8135a264b7cc863b0b6  gcc/testsuite/gfortran.dg/char_pointer_comp_assign.f90
  064ebf7ad523c69997a5cd603b66eb56  gcc/testsuite/gfortran.dg/char_pointer_dependency.f90
*************** ced365db03e0b33ad236199eb1a30741  gcc/te
*** 53214,53219 ****
--- 53622,53628 ----
  a8c885ea4e0c6bc88f0ace8c9441b54c  gcc/testsuite/gfortran.dg/char_result_16.f90
  b04e8da3ed092a0886eb038f4181da94  gcc/testsuite/gfortran.dg/char_result_17.f90
  c57ff1e13c323e08a3d7e31aaad2177d  gcc/testsuite/gfortran.dg/char_result_18.f90
+ c23be0d92be5574c5c53b96a89405886  gcc/testsuite/gfortran.dg/char_result_19.f90
  b9fd5c26379f980be6e5d0375d100c1d  gcc/testsuite/gfortran.dg/char_result_2.f90
  7b4ed16894be70d364eb086487f8813f  gcc/testsuite/gfortran.dg/char_result_3.f90
  cf6f60622f81de4bec4a3308815ca361  gcc/testsuite/gfortran.dg/char_result_4.f90
*************** a9d96fe47ff920da6b8376da1113bd80  gcc/te
*** 53222,53227 ****
--- 53631,53637 ----
  8028b8274946e7feb9f3d4850e17af3f  gcc/testsuite/gfortran.dg/char_result_7.f90
  b0dc2d0a6ea7474b02cb85a70b3ad102  gcc/testsuite/gfortran.dg/char_result_8.f90
  5093ae73a32a476b807d4a5128b4ed80  gcc/testsuite/gfortran.dg/char_result_9.f90
+ 1ced3da36308e54e5d306659bf14b653  gcc/testsuite/gfortran.dg/char_result_mod_19.f90
  053c33c2d1200e52cbe9a4ae1b95d7c3  gcc/testsuite/gfortran.dg/char_spread_1.f90
  4506436296784a8aec337002f8009e99  gcc/testsuite/gfortran.dg/char_transpose_1.f90
  b63e59c90ea7e532d83d3417eab591c7  gcc/testsuite/gfortran.dg/char_type_len.f90
*************** f3d0c2f9dd3430fcde70c063f5f1f609  gcc/te
*** 53253,53258 ****
--- 53663,53669 ----
  a172ca937d7924e5b9285065ca6b21dd  gcc/testsuite/gfortran.dg/charlen_14.f90
  d4173ba9944470c8a1ee298c68c8c1d5  gcc/testsuite/gfortran.dg/charlen_15.f90
  b83b7e261a9a0e3827f879ddb426c6e0  gcc/testsuite/gfortran.dg/charlen_16.f90
+ 6789f241b90393509e933466d0ce37dd  gcc/testsuite/gfortran.dg/charlen_17.f90
  8611f395b5429bd54cab0aef125f4641  gcc/testsuite/gfortran.dg/chkbits.f90
  8f0b4ff7bcb5c59492a4c90c9a6af8c7  gcc/testsuite/gfortran.dg/chmod_1.f90
  012967ce36e9117ef73d95a30a332d60  gcc/testsuite/gfortran.dg/chmod_2.f90
*************** d6c98e30022f3526561612d15bd04f8d  gcc/te
*** 53325,53330 ****
--- 53736,53742 ----
  a8f104492778b738ac5730dd1605432a  gcc/testsuite/gfortran.dg/class_67.f90
  63b1355ac520a42bac806d64920510a4  gcc/testsuite/gfortran.dg/class_68.f90
  cc0c048415b8d0593fe7e5b164763dc7  gcc/testsuite/gfortran.dg/class_7.f03
+ cd9759177f83fe4b6a6a007850b05c80  gcc/testsuite/gfortran.dg/class_70.f03
  765b5ae237d318aee8909def266c457e  gcc/testsuite/gfortran.dg/class_8.f03
  6ad3d2ed9f82c5534e18375c93ce8c03  gcc/testsuite/gfortran.dg/class_9.f03
  eff35de84f2c16f8b8abcbc407237414  gcc/testsuite/gfortran.dg/class_alias.f90
*************** aedf93982d6c056c9d1650f5e7e4d506  gcc/te
*** 53406,53416 ****
  0383efb987613ad7ba5897bf853a7c3d  gcc/testsuite/gfortran.dg/coarray/allocate_errgmsg.f90
  21f18575fa619cf0b7fba877cb8db97f  gcc/testsuite/gfortran.dg/coarray/atomic_1.f90
  0268d93e6cda40e43a982efb5b3db96a  gcc/testsuite/gfortran.dg/coarray/atomic_2.f90
! 49ad97d1f9e8ba586a9b2a1b9c3bea16  gcc/testsuite/gfortran.dg/coarray/caf.exp
  a8535ad2a515ec0df0ef730df6f14831  gcc/testsuite/gfortran.dg/coarray/codimension.f90
  5458460c74c7764eb6fc6ca41f3520cb  gcc/testsuite/gfortran.dg/coarray/codimension_2.f90
  9604ece34279ee35811c44344503ca51  gcc/testsuite/gfortran.dg/coarray/codimension_2a.f90
  c2fcd3c1508ec38085828e5481ea280c  gcc/testsuite/gfortran.dg/coarray/codimension_2b.f90
  ee39ad592286c583f1d1379691059313  gcc/testsuite/gfortran.dg/coarray/coindexed_1.f90
  f3a5dbd5b18b49f30a47e9c6ddf0ef10  gcc/testsuite/gfortran.dg/coarray/collectives_1.f90
  57d5669b2d7c4384f4f2cbf7f42c55e5  gcc/testsuite/gfortran.dg/coarray/collectives_2.f90
--- 53818,53829 ----
  0383efb987613ad7ba5897bf853a7c3d  gcc/testsuite/gfortran.dg/coarray/allocate_errgmsg.f90
  21f18575fa619cf0b7fba877cb8db97f  gcc/testsuite/gfortran.dg/coarray/atomic_1.f90
  0268d93e6cda40e43a982efb5b3db96a  gcc/testsuite/gfortran.dg/coarray/atomic_2.f90
! b03c71938184484c82032e53aac66469  gcc/testsuite/gfortran.dg/coarray/caf.exp
  a8535ad2a515ec0df0ef730df6f14831  gcc/testsuite/gfortran.dg/coarray/codimension.f90
  5458460c74c7764eb6fc6ca41f3520cb  gcc/testsuite/gfortran.dg/coarray/codimension_2.f90
  9604ece34279ee35811c44344503ca51  gcc/testsuite/gfortran.dg/coarray/codimension_2a.f90
  c2fcd3c1508ec38085828e5481ea280c  gcc/testsuite/gfortran.dg/coarray/codimension_2b.f90
+ 138b64ab66402dec923a5ed290f9cddc  gcc/testsuite/gfortran.dg/coarray/codimension_3.f90
  ee39ad592286c583f1d1379691059313  gcc/testsuite/gfortran.dg/coarray/coindexed_1.f90
  f3a5dbd5b18b49f30a47e9c6ddf0ef10  gcc/testsuite/gfortran.dg/coarray/collectives_1.f90
  57d5669b2d7c4384f4f2cbf7f42c55e5  gcc/testsuite/gfortran.dg/coarray/collectives_2.f90
*************** fd555c460e9a2fe3d73c2849790b7206  gcc/te
*** 53519,53524 ****
--- 53932,53938 ----
  eda6cad3c6c6f004e3137cf3e30aedf1  gcc/testsuite/gfortran.dg/coarray_alloc_with_implicit_sync_2.f90
  964249eae6cd40820f1f28256a0bf3aa  gcc/testsuite/gfortran.dg/coarray_allocate_1.f90
  0224c1e3add89d8da53743943781c0d8  gcc/testsuite/gfortran.dg/coarray_allocate_10.f08
+ 89da7a5247ec226a9d595e4ee6bbbab8  gcc/testsuite/gfortran.dg/coarray_allocate_11.f90
  8c719d89a1e3531bbdb311dfa763167b  gcc/testsuite/gfortran.dg/coarray_allocate_2.f08
  c2616fae76af07a79e5d72322ffa2b9f  gcc/testsuite/gfortran.dg/coarray_allocate_3.f08
  e63a013eba2d6fe4cbef12573cb14e52  gcc/testsuite/gfortran.dg/coarray_allocate_4.f08
*************** d8b0925104e27edfd7554327aec7e656  gcc/te
*** 53553,53558 ****
--- 53967,53973 ----
  3868ecdad997c64216510129983de4eb  gcc/testsuite/gfortran.dg/coarray_collectives_8.f90
  e7f7c38c4530db86c8bf560b1800b017  gcc/testsuite/gfortran.dg/coarray_collectives_9.f90
  967c97a8edd55b3e24d9f53bacf51ab2  gcc/testsuite/gfortran.dg/coarray_critical_1.f90
+ f24b69052d445ea075f93eefed61e789  gcc/testsuite/gfortran.dg/coarray_data_1.f90
  9548b18ea57c3895468bd270375183d8  gcc/testsuite/gfortran.dg/coarray_dependency_1.f90
  ae24a8ba632b111617b5af3d9ec9ed23  gcc/testsuite/gfortran.dg/coarray_event_1.f08
  fbd2090d586a51d16a8ccd3d6c9359e6  gcc/testsuite/gfortran.dg/coarray_event_2.f08
*************** c2d3fe3d7d640f7941cc2bc632a62dae  gcc/te
*** 53873,53878 ****
--- 54288,54296 ----
  6217eeab1004e9ef8c744d031931d8f6  gcc/testsuite/gfortran.dg/deferred_character_21.f90
  c555d5fb27ed4c78dd43072cce33f4dd  gcc/testsuite/gfortran.dg/deferred_character_22.f90
  8711c9282d7601e5aaa4a9f3dd7b5b43  gcc/testsuite/gfortran.dg/deferred_character_3.f90
+ f405c538ee221b34e2094a843f78c12a  gcc/testsuite/gfortran.dg/deferred_character_32.f90
+ 5f82ae5d302549ef737253722a910e61  gcc/testsuite/gfortran.dg/deferred_character_33.f90
+ c8ca7a67e0b9c502e7883c6187a3b1f3  gcc/testsuite/gfortran.dg/deferred_character_33a.f90
  5eede6c791f6d272034f9b84850ac6af  gcc/testsuite/gfortran.dg/deferred_character_4.f90
  981b809300de368e8fac65be4b40099c  gcc/testsuite/gfortran.dg/deferred_character_5.f90
  b8df78111bec4d4d4b97da6a15228361  gcc/testsuite/gfortran.dg/deferred_character_6.f90
*************** b708a831578a6c876ea16b95695f6103  gcc/te
*** 53952,53957 ****
--- 54370,54376 ----
  590a99c4ec44cc37aa92b225e93d6e87  gcc/testsuite/gfortran.dg/dependency_5.f90
  05077d112c5b175bda81d3ed2d1d2318  gcc/testsuite/gfortran.dg/dependency_50.f90
  e3dcdcb7fb8e68b8ccf780af3eb56518  gcc/testsuite/gfortran.dg/dependency_51.f90
+ 4e12ffe31088cb1a780ebbce0ec059ef  gcc/testsuite/gfortran.dg/dependency_53.f90
  03218919538313b26e09fa1b8f0efda0  gcc/testsuite/gfortran.dg/dependency_6.f90
  699f1378f5c1fcdc54eb21fdb4a59be1  gcc/testsuite/gfortran.dg/dependency_7.f90
  89a3206dfabae1e31ea62ec7fa264ee6  gcc/testsuite/gfortran.dg/dependency_8.f90
*************** dd5ecf2c74eaa6c3f2c981a9dcb2caa3  gcc/te
*** 54008,54014 ****
  b522fadd1464db48d2fe8165d2a66e70  gcc/testsuite/gfortran.dg/derived_sub.f90
  652fa12d630d17b29894c33b10c6b1b8  gcc/testsuite/gfortran.dg/dev_null.F90
  94ce3208dac145ea14fc3f821f662788  gcc/testsuite/gfortran.dg/dfloat_1.f90
! 6225aa701ea238d6bc3b5ad76ce51526  gcc/testsuite/gfortran.dg/dg.exp
  cf9206e8c02e17079f63e1e6860bdb3b  gcc/testsuite/gfortran.dg/dim_range_1.f90
  9233bdc80c05466b893a5980013b72e8  gcc/testsuite/gfortran.dg/dim_sum_1.f90
  a0eae83f56a58410e0887f2da41f7c3b  gcc/testsuite/gfortran.dg/dim_sum_2.f90
--- 54427,54433 ----
  b522fadd1464db48d2fe8165d2a66e70  gcc/testsuite/gfortran.dg/derived_sub.f90
  652fa12d630d17b29894c33b10c6b1b8  gcc/testsuite/gfortran.dg/dev_null.F90
  94ce3208dac145ea14fc3f821f662788  gcc/testsuite/gfortran.dg/dfloat_1.f90
! 6caca55b748879ddda33666fbb753c12  gcc/testsuite/gfortran.dg/dg.exp
  cf9206e8c02e17079f63e1e6860bdb3b  gcc/testsuite/gfortran.dg/dim_range_1.f90
  9233bdc80c05466b893a5980013b72e8  gcc/testsuite/gfortran.dg/dim_sum_1.f90
  a0eae83f56a58410e0887f2da41f7c3b  gcc/testsuite/gfortran.dg/dim_sum_2.f90
*************** cc944e9209313a0d97bd7bed7198665c  gcc/te
*** 54058,54063 ****
--- 54477,54484 ----
  7d8c65a65d2d7c5bd8b9ada9a3dd140b  gcc/testsuite/gfortran.dg/do_pointer_1.f90
  8458b67d26bd265665097f2319d6e2f1  gcc/testsuite/gfortran.dg/do_subscript_1.f90
  d37e7d4d6baf021e73df70552ca853bf  gcc/testsuite/gfortran.dg/do_subscript_2.f90
+ 554ac42462f9f2205e5a0ddfebcdc939  gcc/testsuite/gfortran.dg/do_subscript_5.f90
+ f4c22f8620f9cf0541b8ca7a3458969d  gcc/testsuite/gfortran.dg/do_subscript_6.f90
  a7c723754d10ef5541785fffb91b0578  gcc/testsuite/gfortran.dg/do_while_1.f90
  23e59fcc0f241300d3822da5f55f6ab5  gcc/testsuite/gfortran.dg/dollar_edit_descriptor_1.f
  eeb8d6e07dce7e2db9e441c445bdd3ac  gcc/testsuite/gfortran.dg/dollar_edit_descriptor_2.f
*************** f10c4681bf625e46adae521a3de13a48  gcc/te
*** 54101,54106 ****
--- 54522,54528 ----
  35086916aa824faf23502f48784f4bc6  gcc/testsuite/gfortran.dg/dtio_31.f03
  32c2c08c7f3e58e80c57128aa1e2b13d  gcc/testsuite/gfortran.dg/dtio_32.f03
  c9bae3926493665cd6a3a6bca4b52e53  gcc/testsuite/gfortran.dg/dtio_33.f90
+ 5f453b52ee72bd864f1fc70730289b71  gcc/testsuite/gfortran.dg/dtio_34.f90
  98feff72bfe6f9469278b8b049519af2  gcc/testsuite/gfortran.dg/dtio_4.f90
  5f7b1d1f57ac24dc9129e7dc2e9bc2f4  gcc/testsuite/gfortran.dg/dtio_5.f90
  5c6704b3b1b7266ea126e709df28bebe  gcc/testsuite/gfortran.dg/dtio_6.f90
*************** fe5fde412958e201197383cf5ae0b542  gcc/te
*** 54213,54218 ****
--- 54635,54641 ----
  dde6c08dab677880bb894b2143cf090b  gcc/testsuite/gfortran.dg/entry_2.f90
  df7fd6f7581d27330f0013f9a3246e99  gcc/testsuite/gfortran.dg/entry_20.f90
  72628f114c4fb8fab6905f4a0f29e09f  gcc/testsuite/gfortran.dg/entry_21.f90
+ 37e5c5438d0e0514b44e64686d3843da  gcc/testsuite/gfortran.dg/entry_22.f90
  0f79e5c423680a19e0f1ac49f4a91670  gcc/testsuite/gfortran.dg/entry_3.f90
  b38bdeb67849d262a6ff0a7a985e1835  gcc/testsuite/gfortran.dg/entry_4.f90
  d9c60fad31625139f9e0a67c69d59e59  gcc/testsuite/gfortran.dg/entry_5.f90
*************** ab0027e37c53e4de2faf80a49af5c70e  gcc/te
*** 54242,54247 ****
--- 54665,54671 ----
  13491ddbf6de8262d5d57552a484c85e  gcc/testsuite/gfortran.dg/eof_3.f90
  80cd70fc61c375df2fe8a3fcac7a55a4  gcc/testsuite/gfortran.dg/eof_4.f90
  0a5c2dd5647ff9c0a031479cb94312f1  gcc/testsuite/gfortran.dg/eof_5.f90
+ b11c3fe23be2c52dc0068ce168f7f903  gcc/testsuite/gfortran.dg/eof_6.f90
  b2cbcfb2f5b6181bb94c3c59ec9d0da3  gcc/testsuite/gfortran.dg/eor_1.f90
  aebb8d08fc0b290e576f86423f6ca59f  gcc/testsuite/gfortran.dg/eor_handling_1.f90
  294ba1a377b97aa6a9b5e6d2fdfefbae  gcc/testsuite/gfortran.dg/eor_handling_2.f90
*************** d5c2becdf2a2a9b3476dac72cfc54877  gcc/te
*** 54327,54335 ****
--- 54751,54761 ----
  3485cc1f6803a287f97032484eec3440  gcc/testsuite/gfortran.dg/extends_type_of_3.f90
  df764dd66e24cfa5a1af1a03b983104b  gcc/testsuite/gfortran.dg/external_implicit_none.f90
  4eca303332980555d4132fbdc52d774a  gcc/testsuite/gfortran.dg/external_initializer.f90
+ bd779906b016bd335bbb19a449289c47  gcc/testsuite/gfortran.dg/external_procedure_4.f90
  e858d42afb6c6feb41d75f84594d0e1f  gcc/testsuite/gfortran.dg/external_procedures_1.f90
  ecf30036a6f1dd697da6f19c378c5e40  gcc/testsuite/gfortran.dg/external_procedures_2.f90
  2625befedf617cfcf62cbf2931fb6f60  gcc/testsuite/gfortran.dg/external_procedures_3.f90
+ d7fb3c16ee0239f71660d451f48ce2e9  gcc/testsuite/gfortran.dg/external_procedures_4.f90
  6c1ffa5a3f385ca7c11b01e8727a6d29  gcc/testsuite/gfortran.dg/extract_recip_1.f
  ed7c54ff7c06dfabebe92f99baeee987  gcc/testsuite/gfortran.dg/f2003_inquire_1.f03
  dd95bc708540876ec31e17fe2d04eb8b  gcc/testsuite/gfortran.dg/f2003_io_1.f03
*************** aa76dde0c8f8c461af7f6702bc38655e  gcc/te
*** 54377,54388 ****
  7777e7da27f0f204cb380c5791769371  gcc/testsuite/gfortran.dg/finalize_24.f90
  ee54ae40d5eeac0613d226e05644ee24  gcc/testsuite/gfortran.dg/finalize_25.f90
  41d2ab1f1acf2bfddbbdceb10c9ae399  gcc/testsuite/gfortran.dg/finalize_27.f90
! efc9cd9348a3f56180139e80d960002c  gcc/testsuite/gfortran.dg/finalize_28.f90
  990865cd966f264913b80c5f4aac4498  gcc/testsuite/gfortran.dg/finalize_29.f08
  fd6f56591cff43978fb9e37af994eec0  gcc/testsuite/gfortran.dg/finalize_3.f03
  e100c711627c65e22ec895f123885efe  gcc/testsuite/gfortran.dg/finalize_30.f90
  bf2746f6ebfcb7ed0ee105a55caf722b  gcc/testsuite/gfortran.dg/finalize_31.f90
  5fc1e3c1d9863bacaa0e67ce6c523324  gcc/testsuite/gfortran.dg/finalize_32.f90
  92b4ca27645d88cb11543d720382b004  gcc/testsuite/gfortran.dg/finalize_4.f03
  ce817f495edb0ac306d6ae1052014e67  gcc/testsuite/gfortran.dg/finalize_5.f03
  00394d3b18b9e094a6751225fef04a51  gcc/testsuite/gfortran.dg/finalize_6.f90
--- 54803,54815 ----
  7777e7da27f0f204cb380c5791769371  gcc/testsuite/gfortran.dg/finalize_24.f90
  ee54ae40d5eeac0613d226e05644ee24  gcc/testsuite/gfortran.dg/finalize_25.f90
  41d2ab1f1acf2bfddbbdceb10c9ae399  gcc/testsuite/gfortran.dg/finalize_27.f90
! d30e2b4888cd7deaa0b011ec6dc2730a  gcc/testsuite/gfortran.dg/finalize_28.f90
  990865cd966f264913b80c5f4aac4498  gcc/testsuite/gfortran.dg/finalize_29.f08
  fd6f56591cff43978fb9e37af994eec0  gcc/testsuite/gfortran.dg/finalize_3.f03
  e100c711627c65e22ec895f123885efe  gcc/testsuite/gfortran.dg/finalize_30.f90
  bf2746f6ebfcb7ed0ee105a55caf722b  gcc/testsuite/gfortran.dg/finalize_31.f90
  5fc1e3c1d9863bacaa0e67ce6c523324  gcc/testsuite/gfortran.dg/finalize_32.f90
+ bf28fc2ddb1347b5d4cd2aac68cccbc5  gcc/testsuite/gfortran.dg/finalize_34.f90
  92b4ca27645d88cb11543d720382b004  gcc/testsuite/gfortran.dg/finalize_4.f03
  ce817f495edb0ac306d6ae1052014e67  gcc/testsuite/gfortran.dg/finalize_5.f03
  00394d3b18b9e094a6751225fef04a51  gcc/testsuite/gfortran.dg/finalize_6.f90
*************** dff0c4a3dcd2aac51063c6e05c6d4665  gcc/te
*** 54800,54809 ****
  afef16c2771512fb51bd89dace9f7c11  gcc/testsuite/gfortran.dg/goacc/pr77765.f90
  fc686524ed127ce392011e6c6d596cb9  gcc/testsuite/gfortran.dg/goacc/pr78027.f90
  77b32efd84a7f238f0fa5166b3b2fde1  gcc/testsuite/gfortran.dg/goacc/pr84217.f90
! 98021166ee2b55420ca83360835ea78c  gcc/testsuite/gfortran.dg/goacc/pr84963.f90
  967e76184bab415f5ccaee3e8855e4e6  gcc/testsuite/gfortran.dg/goacc/pr85701.f90
  69951fe9d02325aab83893b15f14ee22  gcc/testsuite/gfortran.dg/goacc/pr85702.f90
  fff3ef606b07a0c12c2323afa6fe446d  gcc/testsuite/gfortran.dg/goacc/pr85703.f90
  93028fbaf2e1d8a3907db1cacb627cf7  gcc/testsuite/gfortran.dg/goacc/private-1.f95
  24e251dd88a9ea6377e535f5ee5f31ed  gcc/testsuite/gfortran.dg/goacc/private-2.f95
  a70416eb409bcd3ad178b3d0127d84e8  gcc/testsuite/gfortran.dg/goacc/private-3.f95
--- 55227,55238 ----
  afef16c2771512fb51bd89dace9f7c11  gcc/testsuite/gfortran.dg/goacc/pr77765.f90
  fc686524ed127ce392011e6c6d596cb9  gcc/testsuite/gfortran.dg/goacc/pr78027.f90
  77b32efd84a7f238f0fa5166b3b2fde1  gcc/testsuite/gfortran.dg/goacc/pr84217.f90
! 1a37f54ea403d36fae4f50d189f5369b  gcc/testsuite/gfortran.dg/goacc/pr84963.f90
  967e76184bab415f5ccaee3e8855e4e6  gcc/testsuite/gfortran.dg/goacc/pr85701.f90
  69951fe9d02325aab83893b15f14ee22  gcc/testsuite/gfortran.dg/goacc/pr85702.f90
  fff3ef606b07a0c12c2323afa6fe446d  gcc/testsuite/gfortran.dg/goacc/pr85703.f90
+ a2ead21242a28e48fc0d90b3af1c1ff7  gcc/testsuite/gfortran.dg/goacc/pr93329.f90
+ f456cdcfbddab6f8bef5a32a8ae942c7  gcc/testsuite/gfortran.dg/goacc/pr93463.f90
  93028fbaf2e1d8a3907db1cacb627cf7  gcc/testsuite/gfortran.dg/goacc/private-1.f95
  24e251dd88a9ea6377e535f5ee5f31ed  gcc/testsuite/gfortran.dg/goacc/private-2.f95
  a70416eb409bcd3ad178b3d0127d84e8  gcc/testsuite/gfortran.dg/goacc/private-3.f95
*************** f5bcea31678114301e0da9c5d60bb564  gcc/te
*** 54996,55001 ****
--- 55425,55434 ----
  900e29bb957f49d5b8cee27818655396  gcc/testsuite/gfortran.dg/gomp/pr85313.f90
  793bc6a890f694516d4634a933a5cb43  gcc/testsuite/gfortran.dg/gomp/pr85703.f90
  474faa53ddfedb432c4594b4df78d3f3  gcc/testsuite/gfortran.dg/gomp/pr88377.f90
+ 5ec5bffb9591a9ffd391899e3384e8c4  gcc/testsuite/gfortran.dg/gomp/pr89621.f90
+ 6399dd6d481972c65426ae5a0fe674a2  gcc/testsuite/gfortran.dg/gomp/pr89651.f90
+ 1365d33484c21cf6b603f60889b019a4  gcc/testsuite/gfortran.dg/gomp/pr92977.f90
+ 6db6e7072dccd0be789b6dc9bd2a586c  gcc/testsuite/gfortran.dg/gomp/pr93555.f90
  b4be3f9de7631846875a711ae9b67293  gcc/testsuite/gfortran.dg/gomp/proc_ptr_1.f90
  87885556568e657ef4c936c53e1c7305  gcc/testsuite/gfortran.dg/gomp/proc_ptr_2.f90
  59e444df8ec8f5ea9859b5aef4d75865  gcc/testsuite/gfortran.dg/gomp/reduction1.f90
*************** c525cee40cfdc1d7f1dda5cf299fdde9  gcc/te
*** 55008,55013 ****
--- 55441,55447 ----
  bb19e54aafc9016401c4797e4cb0d75d  gcc/testsuite/gfortran.dg/gomp/sharing-2.f90
  31d6e090f7c514b28f2656086d853df7  gcc/testsuite/gfortran.dg/gomp/sharing-3.f90
  b3d1280c39c6cae9dddab498b1e1eeb4  gcc/testsuite/gfortran.dg/gomp/sharing-4.f90
+ 3c3ee23796192e475b1597bfe4ae9d72  gcc/testsuite/gfortran.dg/gomp/target-parallel1.f90
  919bd1d4b3eea35828ead5f8cf204a98  gcc/testsuite/gfortran.dg/gomp/target1.f90
  b75e4a6eaec211becf176c75768a3f3d  gcc/testsuite/gfortran.dg/gomp/target2.f90
  4a93baff2b168f10d86571d18de637ba  gcc/testsuite/gfortran.dg/gomp/target3.f90
*************** e6c37a9def09433a6a2f8bc1d9220133  gcc/te
*** 55180,55186 ****
  cc7201a9525a4793e8bf391d30c3653d  gcc/testsuite/gfortran.dg/ichar_1.f90
  8201f75f0deee5480134fc16f1113f0c  gcc/testsuite/gfortran.dg/ichar_2.f90
  b614ce421f97fb4ab6fa10f1f1c47ab0  gcc/testsuite/gfortran.dg/ichar_3.f90
! 21b47d43ccf27f4a5059937e0e63487b  gcc/testsuite/gfortran.dg/ieee/ieee.exp
  0099e59ef340f8e2088656dfac86c17f  gcc/testsuite/gfortran.dg/ieee/ieee_1.F90
  629e2eea5e2091391dc3e08bcadcb8cd  gcc/testsuite/gfortran.dg/ieee/ieee_2.f90
  b15c44040c4efe2f8b119bb3df34f610  gcc/testsuite/gfortran.dg/ieee/ieee_3.f90
--- 55614,55620 ----
  cc7201a9525a4793e8bf391d30c3653d  gcc/testsuite/gfortran.dg/ichar_1.f90
  8201f75f0deee5480134fc16f1113f0c  gcc/testsuite/gfortran.dg/ichar_2.f90
  b614ce421f97fb4ab6fa10f1f1c47ab0  gcc/testsuite/gfortran.dg/ichar_3.f90
! 1e4464058af03b6740816d16aec922f6  gcc/testsuite/gfortran.dg/ieee/ieee.exp
  0099e59ef340f8e2088656dfac86c17f  gcc/testsuite/gfortran.dg/ieee/ieee_1.F90
  629e2eea5e2091391dc3e08bcadcb8cd  gcc/testsuite/gfortran.dg/ieee/ieee_2.f90
  b15c44040c4efe2f8b119bb3df34f610  gcc/testsuite/gfortran.dg/ieee/ieee_3.f90
*************** b4d472d28fc0ac004218dc87eb241306  gcc/te
*** 55444,55449 ****
--- 55878,55884 ----
  b3de2cdb7dfd995e8d4a97fabcc29a38  gcc/testsuite/gfortran.dg/interface_abstract_2.f90
  e797a26594e33f4316a85af1fe223cbc  gcc/testsuite/gfortran.dg/interface_abstract_3.f90
  a30d85d2601e16438a18162122cbc190  gcc/testsuite/gfortran.dg/interface_abstract_4.f90
+ bb1e6a032a10a9e1ff7d9a5d79c13aa6  gcc/testsuite/gfortran.dg/interface_abstract_5.f90
  33a2f608c30f217c3799ca2ecec2ffec  gcc/testsuite/gfortran.dg/interface_assignment_1.f90
  4f0c646f0732570a97ff9a9dc8755be6  gcc/testsuite/gfortran.dg/interface_assignment_2.f90
  91f77567fb0079c826db40c2ce9296c0  gcc/testsuite/gfortran.dg/interface_assignment_3.f90
*************** a50aae7296164245305033ac9ad76f9e  gcc/te
*** 55684,55692 ****
  cce764967a53580b4da5528603b77e0c  gcc/testsuite/gfortran.dg/lto/20091015-1_1.f
  b15d12ceedaec19ba0c3dccda0ff8ff3  gcc/testsuite/gfortran.dg/lto/20091015-1_2.f
  22260f45e69e095269c5ce9ffd573fdd  gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90
! 4f2edde20f8cc5e9648cbd641c65f4b0  gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90
  3347d22ad57680bea0046ec09834ace3  gcc/testsuite/gfortran.dg/lto/20091028-1_1.c
! 4f2edde20f8cc5e9648cbd641c65f4b0  gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90
  132111f4eb309b2a60ee09bdd249ad57  gcc/testsuite/gfortran.dg/lto/20091028-2_1.c
  a712ac9ff8597986399f0e39238ae03d  gcc/testsuite/gfortran.dg/lto/20100110-1_0.f90
  a359cbb68407bfc3d0394abe1fbff589  gcc/testsuite/gfortran.dg/lto/20100222-1_0.f03
--- 56119,56127 ----
  cce764967a53580b4da5528603b77e0c  gcc/testsuite/gfortran.dg/lto/20091015-1_1.f
  b15d12ceedaec19ba0c3dccda0ff8ff3  gcc/testsuite/gfortran.dg/lto/20091015-1_2.f
  22260f45e69e095269c5ce9ffd573fdd  gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90
! f485672dc63fa62c9200ae105fae2521  gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90
  3347d22ad57680bea0046ec09834ace3  gcc/testsuite/gfortran.dg/lto/20091028-1_1.c
! f485672dc63fa62c9200ae105fae2521  gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90
  132111f4eb309b2a60ee09bdd249ad57  gcc/testsuite/gfortran.dg/lto/20091028-2_1.c
  a712ac9ff8597986399f0e39238ae03d  gcc/testsuite/gfortran.dg/lto/20100110-1_0.f90
  a359cbb68407bfc3d0394abe1fbff589  gcc/testsuite/gfortran.dg/lto/20100222-1_0.f03
*************** a9d014274eb56078098dae3d4f9a8fe7  gcc/te
*** 55729,55734 ****
--- 56164,56171 ----
  a8ba679c6307cb7e937915e91616c861  gcc/testsuite/gfortran.dg/lto/pr60635_1.c
  f4d0f3a9eea039a45f8f40d5a4d52efb  gcc/testsuite/gfortran.dg/lto/pr79108_0.f90
  fa332a69f92c8cb51e4ce0ae67697034  gcc/testsuite/gfortran.dg/lto/pr84645_0.f90
+ ba08aed6efe11198caa459b3c16a5ccd  gcc/testsuite/gfortran.dg/lto/pr87689_0.f
+ a05a13a27c2b09cdc9cd3c6a8b7bf7a4  gcc/testsuite/gfortran.dg/lto/pr87689_1.f
  f5272c5b4153fa5ce60b4c526701d273  gcc/testsuite/gfortran.dg/lto/pr89084_0.f90
  e05291f83b2b7501a2be29b7516a5330  gcc/testsuite/gfortran.dg/make_unit.f90
  b49070ec831f64c85f249772acd9a59f  gcc/testsuite/gfortran.dg/malloc_free_1.f90
*************** ccf25bc57c7fd0870f3fa7fea60340a6  gcc/te
*** 56072,56078 ****
  16d9cc312dc3603f84627c0edcbc49a2  gcc/testsuite/gfortran.dg/nint_2.f90
  f867bd2d1caf94b8344ac3386b825ea1  gcc/testsuite/gfortran.dg/nint_p7.f90
  03b84fc5eca43cc5d1a0b1a93937da73  gcc/testsuite/gfortran.dg/no_arg_check_1.f90
! dc211466d922cffe5d004141df4e7358  gcc/testsuite/gfortran.dg/no_arg_check_2.f90
  b737c11615e1c006ec919afcf954359a  gcc/testsuite/gfortran.dg/no_arg_check_3.f90
  549a1f2c46b7c149d7bd62f485d2e1a9  gcc/testsuite/gfortran.dg/no_range_check_1.f90
  1b8a194599702e6446e415880e67121d  gcc/testsuite/gfortran.dg/no_range_check_2.f90
--- 56509,56515 ----
  16d9cc312dc3603f84627c0edcbc49a2  gcc/testsuite/gfortran.dg/nint_2.f90
  f867bd2d1caf94b8344ac3386b825ea1  gcc/testsuite/gfortran.dg/nint_p7.f90
  03b84fc5eca43cc5d1a0b1a93937da73  gcc/testsuite/gfortran.dg/no_arg_check_1.f90
! b56a2bf137a35e30eaea8c232cf2c5f1  gcc/testsuite/gfortran.dg/no_arg_check_2.f90
  b737c11615e1c006ec919afcf954359a  gcc/testsuite/gfortran.dg/no_arg_check_3.f90
  549a1f2c46b7c149d7bd62f485d2e1a9  gcc/testsuite/gfortran.dg/no_range_check_1.f90
  1b8a194599702e6446e415880e67121d  gcc/testsuite/gfortran.dg/no_range_check_2.f90
*************** f67cfd0ae4d38f1ca5dc8d7f6e954087  gcc/te
*** 56218,56224 ****
  7efa911fe665f45456e6943844302ac0  gcc/testsuite/gfortran.dg/pdt_28.f03
  68b10a194ff6797eee8ecb042129b08f  gcc/testsuite/gfortran.dg/pdt_29.f03
  467e7b0f7ffea3a05b9ac591c2ac05ee  gcc/testsuite/gfortran.dg/pdt_3.f03
! b01b9ceba6ffee67e956395356b126b5  gcc/testsuite/gfortran.dg/pdt_4.f03
  c5c92af1413fa2462f388d2ff5077773  gcc/testsuite/gfortran.dg/pdt_5.f03
  65d2ad728417ad3174fc1ce2b51a458d  gcc/testsuite/gfortran.dg/pdt_6.f03
  d2c9dae0c6e2385c5712aba8e12a70ba  gcc/testsuite/gfortran.dg/pdt_7.f03
--- 56655,56661 ----
  7efa911fe665f45456e6943844302ac0  gcc/testsuite/gfortran.dg/pdt_28.f03
  68b10a194ff6797eee8ecb042129b08f  gcc/testsuite/gfortran.dg/pdt_29.f03
  467e7b0f7ffea3a05b9ac591c2ac05ee  gcc/testsuite/gfortran.dg/pdt_3.f03
! 17fa57111f7b9c176c9f9fdf95c974cf  gcc/testsuite/gfortran.dg/pdt_4.f03
  c5c92af1413fa2462f388d2ff5077773  gcc/testsuite/gfortran.dg/pdt_5.f03
  65d2ad728417ad3174fc1ce2b51a458d  gcc/testsuite/gfortran.dg/pdt_6.f03
  d2c9dae0c6e2385c5712aba8e12a70ba  gcc/testsuite/gfortran.dg/pdt_7.f03
*************** c621629f10feffbfa9fef1441a610e53  gcc/te
*** 56228,56233 ****
--- 56665,56671 ----
  b836f09e53badc9a7066eb5692c28f74  gcc/testsuite/gfortran.dg/pointer_2.f90
  620a59a97d6aa806a934ba7f7e67e932  gcc/testsuite/gfortran.dg/pointer_array_1.f90
  000bda2be477bacf7d759c20e3ac3709  gcc/testsuite/gfortran.dg/pointer_array_10.f90
+ b5def0f17324245ee6df5dd8e854aa7c  gcc/testsuite/gfortran.dg/pointer_array_11.f90
  770f1ab071468199cc11d39d277e60e0  gcc/testsuite/gfortran.dg/pointer_array_2.f90
  c17f47cef447c9ed69614ec0daa92b54  gcc/testsuite/gfortran.dg/pointer_array_3.f90
  dfcbac44563ca824b08d9aae911c293a  gcc/testsuite/gfortran.dg/pointer_array_4.f90
*************** ae06d6761f5e36e2c2e46067aa089b8e  gcc/te
*** 56284,56289 ****
--- 56722,56728 ----
  057bd7ad221bf91e2f022c2984e20cd7  gcc/testsuite/gfortran.dg/pointer_intent_5.f90
  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
  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
*************** eea87284cbfbd1719101caddb4ac38a8  gcc/te
*** 56616,56621 ****
--- 57055,57062 ----
  b9749045f7e8d01ce770bef143077398  gcc/testsuite/gfortran.dg/pr69055.f90
  4dfe5b03dbae8d8845caac4e7f7c0a89  gcc/testsuite/gfortran.dg/pr69155.f90
  ed38cfd514aa0a70b18745aff4616ca3  gcc/testsuite/gfortran.dg/pr69395.f90
+ 76138edfc2f50c95b9776fd1ddbf7633  gcc/testsuite/gfortran.dg/pr69455_1.f90
+ 4888552ee29a6b2e46e1b22d0f8a8483  gcc/testsuite/gfortran.dg/pr69455_2.f90
  39a58b86266ffa82ee6ef911ebf3cb11  gcc/testsuite/gfortran.dg/pr69497.f90
  96518037a7c5060a69f1bee697816618  gcc/testsuite/gfortran.dg/pr69514_1.f90
  cdcc7573cb338d6147f60cd5f685cd75  gcc/testsuite/gfortran.dg/pr69514_2.f90
*************** d085febf0a75173f181533e5b551f555  gcc/te
*** 56673,56678 ****
--- 57114,57120 ----
  b41dce20e2213fb234886325f924905e  gcc/testsuite/gfortran.dg/pr77460.f90
  6762f5900b24ec775d86ad379332cdf0  gcc/testsuite/gfortran.dg/pr77498.f
  7ac13d0d1a6ccb282debcd0ac4bf69fd  gcc/testsuite/gfortran.dg/pr77506.f90
+ ad1a51ce4bd4b4e49f9cb40f0178b2ad  gcc/testsuite/gfortran.dg/pr77583.f90
  a99d6d5592ea6b962b6a45223a22a17f  gcc/testsuite/gfortran.dg/pr77612.f90
  a0e0cbaff470d13a9247b4f6f66572d6  gcc/testsuite/gfortran.dg/pr77694.f90
  f55a4e8f8a1e79f11c9cd9ad6d9eca57  gcc/testsuite/gfortran.dg/pr77719.f90
*************** cf956ba7ea568a1ec1e49d5d32949c70  gcc/te
*** 56741,56746 ****
--- 57183,57189 ----
  bc3e0be49dbdfdfc634c8f0f2c908763  gcc/testsuite/gfortran.dg/pr85779_3.f90
  e09a0ecad84cbee49613c16f8e8538ce  gcc/testsuite/gfortran.dg/pr85780.f90
  7e172a3cf8434a7c33b01add4617e601  gcc/testsuite/gfortran.dg/pr85786.f90
+ 725e595013765639d219c2012948cd9d  gcc/testsuite/gfortran.dg/pr85797.f90
  e85019fafc2465365ffe52752040d464  gcc/testsuite/gfortran.dg/pr85798.f90
  6de8b7c7567dcceb9bbbf46563935272  gcc/testsuite/gfortran.dg/pr85816.f90
  052b31eec86fd95fce096fa3b0045dd3  gcc/testsuite/gfortran.dg/pr85895.f90
*************** f869901e299fbf4e6f33c18ce815c592  gcc/te
*** 56767,56772 ****
--- 57210,57216 ----
  d146cb10030ff5567e3df552e1bd60a4  gcc/testsuite/gfortran.dg/pr88228.f90
  ffb8d9ff34082ead6726f89479443062  gcc/testsuite/gfortran.dg/pr88249.f90
  4dd42b9875f04e7bc7994da3c131e6f7  gcc/testsuite/gfortran.dg/pr88269.f90
+ 59707ae53901796c5cd87fb13024c36e  gcc/testsuite/gfortran.dg/pr88326.f90
  a6709fec1b9ffa0ab96eeb80f8d6c18d  gcc/testsuite/gfortran.dg/pr88467.f90
  ed9d93ecae79fa041852ef045ccc680f  gcc/testsuite/gfortran.dg/pr88902.f90
  6fbe7e10b6b494411afcbe3af2c67208  gcc/testsuite/gfortran.dg/pr88932.f90
*************** ed9d93ecae79fa041852ef045ccc680f  gcc/te
*** 56774,56779 ****
--- 57218,57232 ----
  d0e021239a321dbde0c39d7f370068c8  gcc/testsuite/gfortran.dg/pr89077.f90
  a2461a16a54c67eb1031deda70d3c512  gcc/testsuite/gfortran.dg/pr89084.f90
  be4f5532cbaa58d083d822b627ffe5de  gcc/testsuite/gfortran.dg/pr89253.f
+ eb191e16157f03cba56fb00422bb2852  gcc/testsuite/gfortran.dg/pr89266.f90
+ 3d3ae675ea53199229afe3e1ab0a247a  gcc/testsuite/gfortran.dg/pr89492.f90
+ 7ebf7d753067f8fb33a012241af298a7  gcc/testsuite/gfortran.dg/pr89664.f90
+ 0f56216a9f2ba335e597bae5f9f746ff  gcc/testsuite/gfortran.dg/pr91660_1.f90
+ 5af600dd01897e512804e99050dc44dc  gcc/testsuite/gfortran.dg/pr91660_2.f90
+ 7383008a151433faa521410955d94a9f  gcc/testsuite/gfortran.dg/pr92629.f90
+ 4f42dad4b149f18ca843630273713f7d  gcc/testsuite/gfortran.dg/pr92781.f90
+ 5ae8cd18044c6e382e1d73b60781e2f9  gcc/testsuite/gfortran.dg/pr93714_1.f90
+ 1709f1232d61b6638bf2d8db392c7ed9  gcc/testsuite/gfortran.dg/pr93714_2.f90
  891574fabddfbfea0c1fe4cf0cd69927  gcc/testsuite/gfortran.dg/predcom-1.f
  20a411a7e5a57891297c4c6a96d92009  gcc/testsuite/gfortran.dg/predcom-2.f
  93166017899716f4c3742eda5aaf4087  gcc/testsuite/gfortran.dg/predict-1.f90
*************** b4b03f1c1fdfb443168b64ca0b187ea5  gcc/te
*** 56879,56884 ****
--- 57332,57338 ----
  a50ed014f3fd628f8e8e8e09f44f8c0f  gcc/testsuite/gfortran.dg/proc_ptr_49.f90
  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
  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
*************** deda23d08864e8fd5de581142c84d0c3  gcc/te
*** 56981,56986 ****
--- 57435,57441 ----
  389e953b7230302dc01a242926959fa7  gcc/testsuite/gfortran.dg/ptr_func_assign_4.f08
  8610f62acf79505ce9c955532780ae20  gcc/testsuite/gfortran.dg/ptr_func_assign_5.f08
  1bdd54ec3c3cda30429d4442e8a439e5  gcc/testsuite/gfortran.dg/public_private_module.f90
+ 23cd71f83283e2da0ce59ea093161e45  gcc/testsuite/gfortran.dg/public_private_module_10.f90
  53bfb4bd5468c34fc1b1a819ebc75855  gcc/testsuite/gfortran.dg/public_private_module_2.f90
  d103e889cb7d81b0f6805dbfc1c68c26  gcc/testsuite/gfortran.dg/public_private_module_3.f90
  84ea34192deaf0c1463e5796a16847a2  gcc/testsuite/gfortran.dg/public_private_module_4.f90
*************** d3b8cb87c0d4560033de0eefb87ccd93  gcc/te
*** 57348,57353 ****
--- 57803,57809 ----
  4d184b91375f44c5b92a49fa87c9a38e  gcc/testsuite/gfortran.dg/spread_scalar_source.f90
  1d00f5b498cd877e60af5bf7a6780831  gcc/testsuite/gfortran.dg/spread_shape_1.f90
  4a6636fb35b05d54b152a2bb04221e10  gcc/testsuite/gfortran.dg/spread_size_limit.f90
+ c8b716cee316206a2cc9482d0e553937  gcc/testsuite/gfortran.dg/spread_size_limit_2.f90
  660cebcc8ffff86cb4ccb16d81f894fb  gcc/testsuite/gfortran.dg/spread_zerosize_1.f90
  c261a331f783e0e77510fea0a4181472  gcc/testsuite/gfortran.dg/stat_1.f90
  3fe235d1f1fd3811931f6728caac65ba  gcc/testsuite/gfortran.dg/stat_2.f90
*************** ce5a21a69bff33360348e98834eb26dd  gcc/te
*** 57382,57387 ****
--- 57838,57844 ----
  809108ab99d66e4cd3c97f5907f5e42d  gcc/testsuite/gfortran.dg/streamio_15.f90
  5c471a5a2baacf7f5d3e95c36897d15f  gcc/testsuite/gfortran.dg/streamio_16.f90
  c6e6702db98bfd0226defb828dc129a4  gcc/testsuite/gfortran.dg/streamio_17.f90
+ 8ebdb4c891eb318f95a6a53df8df8d8f  gcc/testsuite/gfortran.dg/streamio_18.f90
  30fbe8f82f3ae117749d33f0cbecb0f9  gcc/testsuite/gfortran.dg/streamio_2.f90
  ecc66620574916f4b154ee3802866490  gcc/testsuite/gfortran.dg/streamio_3.f90
  ab6b23d963a5b8985972c2fa89516a18  gcc/testsuite/gfortran.dg/streamio_4.f90
*************** dccf53db514265c48f2c92d1e6aa8319  gcc/te
*** 57474,57480 ****
--- 57931,57939 ----
  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
+ d70c4e1e8f42a46a15e94a00e17aa3c6  gcc/testsuite/gfortran.dg/substr_simplify.f90
  a925dc24dc88f988a2c3d72d6db706b6  gcc/testsuite/gfortran.dg/substring_equivalence.f90
  84bf7759315587d026e1a8e2d80563a7  gcc/testsuite/gfortran.dg/substring_integer_index.f90
  84e210a9e07675721302c604b7c706f8  gcc/testsuite/gfortran.dg/sum_init_expr.f03
*************** fdabd8c65dcb8fb1bfe06c29c937c219  gcc/te
*** 57514,57519 ****
--- 57973,57979 ----
  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
  76406e3436f42466e7735ed9f5762bd7  gcc/testsuite/gfortran.dg/transfer_class_1.f90
  7f1199fe5fa90085dcbb4f81cbcf7062  gcc/testsuite/gfortran.dg/transfer_class_2.f90
  dc67674921059cc6c14a48ba9f6e8515  gcc/testsuite/gfortran.dg/transfer_hollerith_1.f90
*************** fca7571238596b88ba0b767cd69041d7  gcc/te
*** 57531,57536 ****
--- 57991,57997 ----
  30d8f168d50a2e4c7035918791efd17a  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
*************** aca4fbb65d8aa4cc8ec405a43a78098c  gcc/te
*** 57546,57552 ****
  478c89f389bf3278481bc92533e8e66c  gcc/testsuite/gfortran.dg/transpose_conjg_1.f90
  3cf036b7034efaa23bd3d26ca8cf3283  gcc/testsuite/gfortran.dg/transpose_intrinsic_func_call_1.f90
  85db2a6cf6ca2d6c94792c2d028ff272  gcc/testsuite/gfortran.dg/transpose_optimization_1.f90
! 0183f1f27db7f01b77f107cb71a2b9f8  gcc/testsuite/gfortran.dg/transpose_optimization_2.f90
  32ed89d0a0d70ae9ee467c7ecd483ca3  gcc/testsuite/gfortran.dg/transpose_reshape_r10.f90
  250cd83d324826e163003cc65309e6c3  gcc/testsuite/gfortran.dg/trim_1.f90
  f7b65ba4a0bca5d191b122de209dc237  gcc/testsuite/gfortran.dg/trim_optimize_1.f90
--- 58007,58013 ----
  478c89f389bf3278481bc92533e8e66c  gcc/testsuite/gfortran.dg/transpose_conjg_1.f90
  3cf036b7034efaa23bd3d26ca8cf3283  gcc/testsuite/gfortran.dg/transpose_intrinsic_func_call_1.f90
  85db2a6cf6ca2d6c94792c2d028ff272  gcc/testsuite/gfortran.dg/transpose_optimization_1.f90
! 358cd12cdc753d32fd54c9213d9dedea  gcc/testsuite/gfortran.dg/transpose_optimization_2.f90
  32ed89d0a0d70ae9ee467c7ecd483ca3  gcc/testsuite/gfortran.dg/transpose_reshape_r10.f90
  250cd83d324826e163003cc65309e6c3  gcc/testsuite/gfortran.dg/trim_1.f90
  f7b65ba4a0bca5d191b122de209dc237  gcc/testsuite/gfortran.dg/trim_optimize_1.f90
*************** c9aa879c6243649372231ee73da80c1e  gcc/te
*** 57942,57947 ****
--- 58403,58409 ----
  15fa84e625f28950bc33d8fb0e272b85  gcc/testsuite/gfortran.dg/warn_concat.f90
  660f5862b298d573d0321c73779e592e  gcc/testsuite/gfortran.dg/warn_conversion.f90
  00a4641c6351986a62b8f159ce6f9439  gcc/testsuite/gfortran.dg/warn_conversion_10.f90
+ 77594e02b3df3882dd2d9f120c38d247  gcc/testsuite/gfortran.dg/warn_conversion_11.f90
  f0b0e40083e166f0ec356c0f059cdb13  gcc/testsuite/gfortran.dg/warn_conversion_2.f90
  fb059aee8dd3ce08978867270c115969  gcc/testsuite/gfortran.dg/warn_conversion_3.f90
  a6384af219923cae21fd5bb664966ed6  gcc/testsuite/gfortran.dg/warn_conversion_4.f90
*************** faef1baec47674d096569b4803422d64  gcc/te
*** 57966,57971 ****
--- 58428,58434 ----
  9cdfca84c19b8b4bfd5f9be4a921f068  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_2.f90
  62c8995bb923620e3509b9bd179b618c  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_3.f90
  fa2d697a6cf010eb6e082b1cf14cfb0a  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_4.f90
+ 1d37c013db4796b65d121229b6e04f40  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90
  a889821a76a43cd0bc42032f92d62143  gcc/testsuite/gfortran.dg/warn_unused_function.f90
  babf649d09171c4fca19c8092348ee07  gcc/testsuite/gfortran.dg/warn_unused_function_2.f90
  ae95981491a9741922c27b078d9a628c  gcc/testsuite/gfortran.dg/warn_unused_function_3.f90
*************** fdc5c0f5bfa9d58cdbb7272feaecb4af  gcc/te
*** 58014,58020 ****
  70c32c74c38503b11d76209ea975e9c6  gcc/testsuite/gfortran.dg/whole_file_27.f90
  ddf222fc2848fa957e7eafad525da8cf  gcc/testsuite/gfortran.dg/whole_file_28.f90
  778a633219af44fd7b4bc705c65ec21d  gcc/testsuite/gfortran.dg/whole_file_29.f90
! 259df12b5cdf16785e9988be7ab29d1d  gcc/testsuite/gfortran.dg/whole_file_3.f90
  b7d9cdec49b9afb853813b5a2ff7f5f1  gcc/testsuite/gfortran.dg/whole_file_30.f90
  432f4a4ea6314fb586cbe60e7e00b992  gcc/testsuite/gfortran.dg/whole_file_31.f90
  718adbcddbaba5cba08cb65b9205bf0d  gcc/testsuite/gfortran.dg/whole_file_32.f90
--- 58477,58483 ----
  70c32c74c38503b11d76209ea975e9c6  gcc/testsuite/gfortran.dg/whole_file_27.f90
  ddf222fc2848fa957e7eafad525da8cf  gcc/testsuite/gfortran.dg/whole_file_28.f90
  778a633219af44fd7b4bc705c65ec21d  gcc/testsuite/gfortran.dg/whole_file_29.f90
! aa5730f748bcb341ebf32527d2a991dc  gcc/testsuite/gfortran.dg/whole_file_3.f90
  b7d9cdec49b9afb853813b5a2ff7f5f1  gcc/testsuite/gfortran.dg/whole_file_30.f90
  432f4a4ea6314fb586cbe60e7e00b992  gcc/testsuite/gfortran.dg/whole_file_31.f90
  718adbcddbaba5cba08cb65b9205bf0d  gcc/testsuite/gfortran.dg/whole_file_32.f90
*************** d9ed5d8d94cefc81f6e8f1e096e44c85  gcc/te
*** 59170,59175 ****
--- 59633,59642 ----
  fa0a217ef7773f18e2100deca65155e8  gcc/testsuite/gnat.dg/lto22_pkg1.ads
  42c63ff6c62141b282c3de6014c66376  gcc/testsuite/gnat.dg/lto22_pkg2.adb
  57519860c7ff9212e8c352b54168aebc  gcc/testsuite/gnat.dg/lto22_pkg2.ads
+ 63d4886915d7f10386bf9acb4c27545a  gcc/testsuite/gnat.dg/lto24.adb
+ 800283c5dd0dcc98963845af2f46f5b1  gcc/testsuite/gnat.dg/lto24_pkg1.ads
+ 6cc6cb14bbcba172d4f4eeb357613237  gcc/testsuite/gnat.dg/lto24_pkg2.adb
+ 14d0b11f260b0d1752208a98b741658a  gcc/testsuite/gnat.dg/lto24_pkg2.ads
  2acb4cc31994f1569a3db6ac6613928d  gcc/testsuite/gnat.dg/lto4.adb
  9b38247c8e825c514f87e2965d931dad  gcc/testsuite/gnat.dg/lto4.ads
  959fb8bdf4cd1c34347ecfbab19ea60b  gcc/testsuite/gnat.dg/lto5.adb
*************** d16b401f2569252322b029a9d9d46660  gcc/te
*** 59405,59410 ****
--- 59872,59884 ----
  171652ff2445bf77470aad3b1813c128  gcc/testsuite/gnat.dg/opt75_pkg.adb
  9e51efca60984c35df4c64350a47bff5  gcc/testsuite/gnat.dg/opt75_pkg.ads
  90baaf4f1b57f6747f43b4610fe3607e  gcc/testsuite/gnat.dg/opt76.adb
+ d1bcfaeaae0a6dbe3248535b956be6d7  gcc/testsuite/gnat.dg/opt77.adb
+ 1ce7614297d8a27ea8c22d1efc301918  gcc/testsuite/gnat.dg/opt77_pkg.adb
+ 11b5c5bc594e85bc8913acab363de886  gcc/testsuite/gnat.dg/opt77_pkg.ads
+ e5a3ed1e22544fabd7373b9901867e8d  gcc/testsuite/gnat.dg/opt78.adb
+ adc1ab66941bc2e3b9b25c8018243b94  gcc/testsuite/gnat.dg/opt78.ads
+ 28f8a31ef39e342b6fe77d5ca75e672a  gcc/testsuite/gnat.dg/opt79.adb
+ fe74354507a5e664cd6533def9371a61  gcc/testsuite/gnat.dg/opt79.ads
  81951fc84d3d36131be8aca4f80c113b  gcc/testsuite/gnat.dg/opt7_pkg.ads
  9df643a09a85f1f88656c303fed9ef56  gcc/testsuite/gnat.dg/opt8.adb
  328d673eb1b44dc8fd4fcd430ebc2ddf  gcc/testsuite/gnat.dg/opt8.ads
*************** db9002fdffbd11c6e835ef0c4498b353  gcc/te
*** 59625,59630 ****
--- 60099,60109 ----
  618e7c90ac781c992b7ebddc98d98640  gcc/testsuite/gnat.dg/specs/array1.ads
  abe14a1ac8ff19714a07b9e460b5fa25  gcc/testsuite/gnat.dg/specs/array2.ads
  14136d47dc533d20d89e8d5247fcfc0b  gcc/testsuite/gnat.dg/specs/array3.ads
+ 5c542287a15abeb4725c59aa2130eed2  gcc/testsuite/gnat.dg/specs/array4.ads
+ 57678da02b32a8c9d3600d402756ff1d  gcc/testsuite/gnat.dg/specs/array5.ads
+ 8a35e508f92ae8cfc2bf7f553c3a11da  gcc/testsuite/gnat.dg/specs/array5_pkg1.ads
+ 65f73b5444cd39e6751236739aa9ae10  gcc/testsuite/gnat.dg/specs/array5_pkg2-g.ads
+ 0b740b5110495d8d3401e65ea953524e  gcc/testsuite/gnat.dg/specs/array5_pkg2.ads
  18531dc960411dab820aa7279791f03a  gcc/testsuite/gnat.dg/specs/array_no_def_init.ads
  2d9efbd53366881b4d205fa4d00c2cc9  gcc/testsuite/gnat.dg/specs/atomic1.ads
  636354bb2ccefb57f0e24237c3cc5727  gcc/testsuite/gnat.dg/specs/atomic2.ads
*************** a4163ebad9ef247ba8b7b1254fd6d607  gcc/te
*** 59994,59999 ****
--- 60473,60479 ----
  51d39366d7755a33c9ff787d8568f480  gcc/testsuite/gnat.dg/unchecked_convert10.adb
  8f01f788b80bedc6e97ff8cf3cdb7dea  gcc/testsuite/gnat.dg/unchecked_convert11.adb
  5cf6fa7f6f3b4166ca6c74f38d58c7bb  gcc/testsuite/gnat.dg/unchecked_convert12.adb
+ db83ca8da3226bea725ce43acaee8ba1  gcc/testsuite/gnat.dg/unchecked_convert13.adb
  e0b42cd0bffe14a0454e6947c1576b0d  gcc/testsuite/gnat.dg/unchecked_convert2.adb
  ab71b7c411a24b92bc4692458e82095e  gcc/testsuite/gnat.dg/unchecked_convert3.adb
  d11f3831351000de17c86545b36e9825  gcc/testsuite/gnat.dg/unchecked_convert4.adb
*************** a708f9e3767ed1076dcbe9bf9202276f  gcc/te
*** 61428,61434 ****
  d92cb3e1ca384ebd58aaa338e2ea20ea  gcc/testsuite/lib/plugin-support.exp
  32b31bdb6b5fc80de3de9971550aecd0  gcc/testsuite/lib/profopt.exp
  7552821ef1b74c74838216d6469987ee  gcc/testsuite/lib/prune.exp
! b5bfbe74c3d87ea643e58b43da042805  gcc/testsuite/lib/scanasm.exp
  c2081b5aed4c76bfaae467387f62438a  gcc/testsuite/lib/scandump.exp
  04ca404890233243eb647c6bf77e4a24  gcc/testsuite/lib/scanipa.exp
  ddefd72c6263d00ab5296309ca73181b  gcc/testsuite/lib/scanlang.exp
--- 61908,61914 ----
  d92cb3e1ca384ebd58aaa338e2ea20ea  gcc/testsuite/lib/plugin-support.exp
  32b31bdb6b5fc80de3de9971550aecd0  gcc/testsuite/lib/profopt.exp
  7552821ef1b74c74838216d6469987ee  gcc/testsuite/lib/prune.exp
! e848558218a209090983820db372f6ff  gcc/testsuite/lib/scanasm.exp
  c2081b5aed4c76bfaae467387f62438a  gcc/testsuite/lib/scandump.exp
  04ca404890233243eb647c6bf77e4a24  gcc/testsuite/lib/scanipa.exp
  ddefd72c6263d00ab5296309ca73181b  gcc/testsuite/lib/scanlang.exp
*************** d4f13cbd7469ff86299e34adc8f06bea  gcc/te
*** 61436,61442 ****
  8a317f68f0d1e94ff7dbdfcfbe8ae0fb  gcc/testsuite/lib/scantree.exp
  07ca5814aec67eb6ed534d9dd52f3eec  gcc/testsuite/lib/target-libpath.exp
  5682b9a0ff87b238280adf3fe197e404  gcc/testsuite/lib/target-supports-dg.exp
! 3349879f5169417750a1a5ff94a5d0ff  gcc/testsuite/lib/target-supports.exp
  a9d44f9fd714411fce92289acdd8488b  gcc/testsuite/lib/target-utils.exp
  9e059b60a69a5b27cfcdacb9d4a2395e  gcc/testsuite/lib/timeout-dg.exp
  625975eac95de5690fe871409e0458aa  gcc/testsuite/lib/timeout.exp
--- 61916,61922 ----
  8a317f68f0d1e94ff7dbdfcfbe8ae0fb  gcc/testsuite/lib/scantree.exp
  07ca5814aec67eb6ed534d9dd52f3eec  gcc/testsuite/lib/target-libpath.exp
  5682b9a0ff87b238280adf3fe197e404  gcc/testsuite/lib/target-supports-dg.exp
! feb4c8a818b1c4225b98cd47adefaf96  gcc/testsuite/lib/target-supports.exp
  a9d44f9fd714411fce92289acdd8488b  gcc/testsuite/lib/target-utils.exp
  9e059b60a69a5b27cfcdacb9d4a2395e  gcc/testsuite/lib/timeout-dg.exp
  625975eac95de5690fe871409e0458aa  gcc/testsuite/lib/timeout.exp
*************** ac0b35dcfcf72480c040349b2b8a874b  gcc/te
*** 61499,61505 ****
  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
! cca9a4ce8eba1acccfd6ad6cb92b40e7  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
--- 61979,61985 ----
  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
! 4e97c54d7299a5d421e1a64c670f075c  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
*************** b93884370065d3c94f7fc005e43f7756  gcc/te
*** 61556,61562 ****
  000a9198807c2e4ce1ba284e1a6e79ed  gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm
  a19c2dad4a197a57d5e1bd9cd0135705  gcc/testsuite/obj-c++.dg/invalid-method-2.mm
  9c81b01209a656cc36ac861574867c96  gcc/testsuite/obj-c++.dg/invalid-type-1.mm
! f8e8a6e463c96943e1055a954a109c82  gcc/testsuite/obj-c++.dg/isa-field-1.mm
  de4ec57b2d55fc5567fd5f9b20445ea0  gcc/testsuite/obj-c++.dg/ivar-invalid-type-1.mm
  e9e1c689bbfe17a7c0ca833caf159485  gcc/testsuite/obj-c++.dg/ivar-list-semi.mm
  866b783936346966eabc68e8d5f4e78f  gcc/testsuite/obj-c++.dg/ivar-problem-1.mm
--- 62036,62042 ----
  000a9198807c2e4ce1ba284e1a6e79ed  gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm
  a19c2dad4a197a57d5e1bd9cd0135705  gcc/testsuite/obj-c++.dg/invalid-method-2.mm
  9c81b01209a656cc36ac861574867c96  gcc/testsuite/obj-c++.dg/invalid-type-1.mm
! 9aa795d86a9b5053208440819dc1082c  gcc/testsuite/obj-c++.dg/isa-field-1.mm
  de4ec57b2d55fc5567fd5f9b20445ea0  gcc/testsuite/obj-c++.dg/ivar-invalid-type-1.mm
  e9e1c689bbfe17a7c0ca833caf159485  gcc/testsuite/obj-c++.dg/ivar-list-semi.mm
  866b783936346966eabc68e8d5f4e78f  gcc/testsuite/obj-c++.dg/ivar-problem-1.mm
*************** b6a4bff612a08ec461838ac1b3bd23f1  gcc/te
*** 61606,61612 ****
  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
! e415aeb15f15e2eedb7356be8f6a959e  gcc/testsuite/obj-c++.dg/objc-gc-3.mm
  bd3b42583db47ebcc7fac037f85f00ed  gcc/testsuite/obj-c++.dg/overload-1.mm
  1cfb07f2eb35f604a99dcbe63a567416  gcc/testsuite/obj-c++.dg/plugin/diagnostic-test-expressions-1.mm
  37471f00c435e2be34b4817d8e9407fb  gcc/testsuite/obj-c++.dg/plugin/plugin.exp
--- 62086,62092 ----
  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
! 89a8d8bbc4cfd9231f6b6ff845399672  gcc/testsuite/obj-c++.dg/objc-gc-3.mm
  bd3b42583db47ebcc7fac037f85f00ed  gcc/testsuite/obj-c++.dg/overload-1.mm
  1cfb07f2eb35f604a99dcbe63a567416  gcc/testsuite/obj-c++.dg/plugin/diagnostic-test-expressions-1.mm
  37471f00c435e2be34b4817d8e9407fb  gcc/testsuite/obj-c++.dg/plugin/plugin.exp
*************** e9acacfeddf9f5b3fcc7bd49ae2063e8  gcc/te
*** 61713,61719 ****
  1dc4342beadfe6f7bc0c6e08dd15ce24  gcc/testsuite/obj-c++.dg/proto-lossage-4.mm
  40b981421154ac96e17299bce5569949  gcc/testsuite/obj-c++.dg/proto-lossage-5.mm
  fd29bc4e26ebfbde2219d16bcd57ff44  gcc/testsuite/obj-c++.dg/proto-lossage-6.mm
! 6975286133171cd693b6f659097de913  gcc/testsuite/obj-c++.dg/proto-lossage-7.mm
  4cd57b67eb48bda4d17d7be6cbbf3651  gcc/testsuite/obj-c++.dg/proto-qual-1.mm
  cf4aa34add213bab910de4918a4bb01d  gcc/testsuite/obj-c++.dg/protocol-forward-1.mm
  30d24d440a6063d356f6a53af5141ba5  gcc/testsuite/obj-c++.dg/protocol-forward-2.mm
--- 62193,62199 ----
  1dc4342beadfe6f7bc0c6e08dd15ce24  gcc/testsuite/obj-c++.dg/proto-lossage-4.mm
  40b981421154ac96e17299bce5569949  gcc/testsuite/obj-c++.dg/proto-lossage-5.mm
  fd29bc4e26ebfbde2219d16bcd57ff44  gcc/testsuite/obj-c++.dg/proto-lossage-6.mm
! eae4cc9bd17a2b79453bdeeec666557b  gcc/testsuite/obj-c++.dg/proto-lossage-7.mm
  4cd57b67eb48bda4d17d7be6cbbf3651  gcc/testsuite/obj-c++.dg/proto-qual-1.mm
  cf4aa34add213bab910de4918a4bb01d  gcc/testsuite/obj-c++.dg/protocol-forward-1.mm
  30d24d440a6063d356f6a53af5141ba5  gcc/testsuite/obj-c++.dg/protocol-forward-2.mm
*************** caaf3448e346d63b2c9d138c397e34ea  gcc/te
*** 61722,61728 ****
  5e94c540e8c80f67f410219fbbb8290c  gcc/testsuite/obj-c++.dg/protocol-optional-1.mm
  92402d5d0ed140a870d7d3438040c1fa  gcc/testsuite/obj-c++.dg/protocol-qualifier-1.mm
  3acfbf9e5283f39582515ae6ee0f8bcc  gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm
! b9c660822a38aa2cdfe0b52e7d3afeca  gcc/testsuite/obj-c++.dg/qual-types-1.mm
  1a1c40979049410f20a8586a0ba7d7bd  gcc/testsuite/obj-c++.dg/selector-1.mm
  9279cef4a3631f9e5ab0c052ea83de89  gcc/testsuite/obj-c++.dg/selector-2.mm
  daf831313c6bd7f1fd5054f723b79a65  gcc/testsuite/obj-c++.dg/selector-3.mm
--- 62202,62208 ----
  5e94c540e8c80f67f410219fbbb8290c  gcc/testsuite/obj-c++.dg/protocol-optional-1.mm
  92402d5d0ed140a870d7d3438040c1fa  gcc/testsuite/obj-c++.dg/protocol-qualifier-1.mm
  3acfbf9e5283f39582515ae6ee0f8bcc  gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm
! 6e84ef17eb796596422af8c47eab548d  gcc/testsuite/obj-c++.dg/qual-types-1.mm
  1a1c40979049410f20a8586a0ba7d7bd  gcc/testsuite/obj-c++.dg/selector-1.mm
  9279cef4a3631f9e5ab0c052ea83de89  gcc/testsuite/obj-c++.dg/selector-2.mm
  daf831313c6bd7f1fd5054f723b79a65  gcc/testsuite/obj-c++.dg/selector-3.mm
*************** c7256230d1e3f8e9c93d3614935b69bc  gcc/te
*** 61732,61756 ****
  9359d93417f401fddd8bdbb1bd3bae20  gcc/testsuite/obj-c++.dg/selector-warn-1.mm
  d2caa0c9e2ed2954ba9e33d87f726293  gcc/testsuite/obj-c++.dg/set-not-used-1.mm
  f0ce3863165308c6c7b05b1e48b6231d  gcc/testsuite/obj-c++.dg/standard-headers.mm
! 4c5901302ebb869ad2843e5bd9b59f85  gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm
! 944b45f8bae04534787888f64340973c  gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm
  21b76d31bad8ab2bce32ce3f5fceff78  gcc/testsuite/obj-c++.dg/strings/const-str-1.mm
! 88a204f313d69410fede9a1fadead584  gcc/testsuite/obj-c++.dg/strings/const-str-12.mm
  71d1ca70f87be11f4325a5b06987bb9b  gcc/testsuite/obj-c++.dg/strings/const-str-2.mm
  c2f326ebd57afc69cfee9d8f6b441323  gcc/testsuite/obj-c++.dg/strings/const-str-5.mm
  a9aabe53382bdf1de0612f8bcf7ef0eb  gcc/testsuite/obj-c++.dg/strings/const-str-6.mm
  4a89061dc402adc311f94d3659a6eaa2  gcc/testsuite/obj-c++.dg/strings/strings-1.mm
  acda44b06216ac119f6bf3a2e4b8cb98  gcc/testsuite/obj-c++.dg/strings/strings-2.mm
  27d43539135f45463462f9f8179c085b  gcc/testsuite/obj-c++.dg/strings/strings.exp
! 581ec601f0a03f162804a727e94271f1  gcc/testsuite/obj-c++.dg/stubify-1.mm
! 7158cf8b003c2491d8aaa20750064528  gcc/testsuite/obj-c++.dg/stubify-2.mm
  0827dd859e38ad893f65d76bf7a5b5e1  gcc/testsuite/obj-c++.dg/super-class-1.mm
  348dead166b98af1745eea549652a4e0  gcc/testsuite/obj-c++.dg/super-class-2.mm
  5f7cf7eb1290cd0ac7cc810aca461fcb  gcc/testsuite/obj-c++.dg/super-dealloc-1.mm
  43c780cbecdb5565a2bda8b0795d5cf8  gcc/testsuite/obj-c++.dg/super-dealloc-2.mm
  6d77d7810e6a1711e9c3e10911fdf7f5  gcc/testsuite/obj-c++.dg/sync-2.mm
  c1db611d2e6bb0f9226c7b773e41bec6  gcc/testsuite/obj-c++.dg/sync-3.mm
! 7539455b61449559a26b90acb57c727d  gcc/testsuite/obj-c++.dg/syntax-error-1.mm
  76c552ffde73821d35ce37029bf52fb7  gcc/testsuite/obj-c++.dg/syntax-error-10.mm
  fcc3247af976d648bb2eb1348d0828a8  gcc/testsuite/obj-c++.dg/syntax-error-2.mm
  6090398b844ba0e695f8af2946ade6c8  gcc/testsuite/obj-c++.dg/syntax-error-3.mm
--- 62212,62236 ----
  9359d93417f401fddd8bdbb1bd3bae20  gcc/testsuite/obj-c++.dg/selector-warn-1.mm
  d2caa0c9e2ed2954ba9e33d87f726293  gcc/testsuite/obj-c++.dg/set-not-used-1.mm
  f0ce3863165308c6c7b05b1e48b6231d  gcc/testsuite/obj-c++.dg/standard-headers.mm
! 7e38b7f41e74e8e27b3445e6b2742b38  gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm
! 0c2da165989aa0dcb159a4c853f22f0c  gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm
  21b76d31bad8ab2bce32ce3f5fceff78  gcc/testsuite/obj-c++.dg/strings/const-str-1.mm
! 9219f4c10d317f25c9ea0169dd8103d3  gcc/testsuite/obj-c++.dg/strings/const-str-12.mm
  71d1ca70f87be11f4325a5b06987bb9b  gcc/testsuite/obj-c++.dg/strings/const-str-2.mm
  c2f326ebd57afc69cfee9d8f6b441323  gcc/testsuite/obj-c++.dg/strings/const-str-5.mm
  a9aabe53382bdf1de0612f8bcf7ef0eb  gcc/testsuite/obj-c++.dg/strings/const-str-6.mm
  4a89061dc402adc311f94d3659a6eaa2  gcc/testsuite/obj-c++.dg/strings/strings-1.mm
  acda44b06216ac119f6bf3a2e4b8cb98  gcc/testsuite/obj-c++.dg/strings/strings-2.mm
  27d43539135f45463462f9f8179c085b  gcc/testsuite/obj-c++.dg/strings/strings.exp
! 054e0ceae2ad0ae2533b291b1f1d50ab  gcc/testsuite/obj-c++.dg/stubify-1.mm
! 562d9abba7e00b15773964756d58bb73  gcc/testsuite/obj-c++.dg/stubify-2.mm
  0827dd859e38ad893f65d76bf7a5b5e1  gcc/testsuite/obj-c++.dg/super-class-1.mm
  348dead166b98af1745eea549652a4e0  gcc/testsuite/obj-c++.dg/super-class-2.mm
  5f7cf7eb1290cd0ac7cc810aca461fcb  gcc/testsuite/obj-c++.dg/super-dealloc-1.mm
  43c780cbecdb5565a2bda8b0795d5cf8  gcc/testsuite/obj-c++.dg/super-dealloc-2.mm
  6d77d7810e6a1711e9c3e10911fdf7f5  gcc/testsuite/obj-c++.dg/sync-2.mm
  c1db611d2e6bb0f9226c7b773e41bec6  gcc/testsuite/obj-c++.dg/sync-3.mm
! ba3476a2e316e27a60e763e08de4047c  gcc/testsuite/obj-c++.dg/syntax-error-1.mm
  76c552ffde73821d35ce37029bf52fb7  gcc/testsuite/obj-c++.dg/syntax-error-10.mm
  fcc3247af976d648bb2eb1348d0828a8  gcc/testsuite/obj-c++.dg/syntax-error-2.mm
  6090398b844ba0e695f8af2946ade6c8  gcc/testsuite/obj-c++.dg/syntax-error-3.mm
*************** d951d115e8add5e2e78e8e2e56aebc7f  gcc/te
*** 61782,61797 ****
  7212556766805451a098e554a8ab648e  gcc/testsuite/obj-c++.dg/tls/trivial.m
  1131c9137e46b5311c2d803288f2e4d0  gcc/testsuite/obj-c++.dg/too-many-args.mm
  f597ed597da282f891b8ffceb585991a  gcc/testsuite/obj-c++.dg/torture/dg-torture.exp
! 1f7b520d7df4159bcf567388c99dd690  gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm
  e42495f1f3ad6ec8f920137751c3f8f7  gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-3.mm
  d2c0463e1e05d168d9d004c74cec0610  gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-4.mm
! 3f540974a4f92e1b3375aa8bcbca7e8c  gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm
! bc7815bb9a08dccb57fe4e22b74eb729  gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm
  78b70f1aad125fecbbe161087e6dbc54  gcc/testsuite/obj-c++.dg/torture/strings/const-str-3.mm
  3b2c597aefd84853b16f8cd8438ff907  gcc/testsuite/obj-c++.dg/torture/strings/const-str-4.mm
  71862e2dfd32f32cc37bc2b6300c0cab  gcc/testsuite/obj-c++.dg/torture/strings/const-str-7.mm
  69c47926ef31db0bb79c5cd3cea4fa0b  gcc/testsuite/obj-c++.dg/torture/strings/const-str-8.mm
! 019ec55674cd5d821fa8a7357a379cfc  gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm
  38bba22e495d1876db60c1ae29146fbe  gcc/testsuite/obj-c++.dg/torture/strings/string1.mm
  8dd3aed68da5e5d82a5d8b4a4adc4f36  gcc/testsuite/obj-c++.dg/torture/strings/strings.exp
  6f6356dbcb53d22602416e8919a2b428  gcc/testsuite/obj-c++.dg/torture/tls/diag-1.mm
--- 62262,62277 ----
  7212556766805451a098e554a8ab648e  gcc/testsuite/obj-c++.dg/tls/trivial.m
  1131c9137e46b5311c2d803288f2e4d0  gcc/testsuite/obj-c++.dg/too-many-args.mm
  f597ed597da282f891b8ffceb585991a  gcc/testsuite/obj-c++.dg/torture/dg-torture.exp
! 18512c71e6c59489aec1ea811d7b29ca  gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm
  e42495f1f3ad6ec8f920137751c3f8f7  gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-3.mm
  d2c0463e1e05d168d9d004c74cec0610  gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-4.mm
! 541efcfce4c4c1d5e4fd413e651be954  gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm
! 6bbd83dc19102b02dff97c3c7b8e0b1f  gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm
  78b70f1aad125fecbbe161087e6dbc54  gcc/testsuite/obj-c++.dg/torture/strings/const-str-3.mm
  3b2c597aefd84853b16f8cd8438ff907  gcc/testsuite/obj-c++.dg/torture/strings/const-str-4.mm
  71862e2dfd32f32cc37bc2b6300c0cab  gcc/testsuite/obj-c++.dg/torture/strings/const-str-7.mm
  69c47926ef31db0bb79c5cd3cea4fa0b  gcc/testsuite/obj-c++.dg/torture/strings/const-str-8.mm
! a826eb6d88698556688b1008a86574a6  gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm
  38bba22e495d1876db60c1ae29146fbe  gcc/testsuite/obj-c++.dg/torture/strings/string1.mm
  8dd3aed68da5e5d82a5d8b4a4adc4f36  gcc/testsuite/obj-c++.dg/torture/strings/strings.exp
  6f6356dbcb53d22602416e8919a2b428  gcc/testsuite/obj-c++.dg/torture/tls/diag-1.mm
*************** f1f7032c657f1d2102a3760375786139  gcc/te
*** 61801,61807 ****
  15c44338c7d7fb6b44ce86f191a67e0b  gcc/testsuite/obj-c++.dg/torture/tls/tls.exp
  7212556766805451a098e554a8ab648e  gcc/testsuite/obj-c++.dg/torture/tls/trivial.mm
  94ba53b983b1168f471db7bb452a1c0f  gcc/testsuite/obj-c++.dg/torture/trivial.mm
! 0ee0a10f43d74ab7a6dd476560668484  gcc/testsuite/obj-c++.dg/try-catch-1.mm
  49889360a17310a94a0d85c87ca03271  gcc/testsuite/obj-c++.dg/try-catch-10.mm
  65b30ce3fa7e707247f859f7235dcc28  gcc/testsuite/obj-c++.dg/try-catch-11.mm
  0547cf34f9cf4f3a578623b4ceb22a99  gcc/testsuite/obj-c++.dg/try-catch-12.mm
--- 62281,62287 ----
  15c44338c7d7fb6b44ce86f191a67e0b  gcc/testsuite/obj-c++.dg/torture/tls/tls.exp
  7212556766805451a098e554a8ab648e  gcc/testsuite/obj-c++.dg/torture/tls/trivial.mm
  94ba53b983b1168f471db7bb452a1c0f  gcc/testsuite/obj-c++.dg/torture/trivial.mm
! d12d35759dcf7e68cf1f2f74be5f250e  gcc/testsuite/obj-c++.dg/try-catch-1.mm
  49889360a17310a94a0d85c87ca03271  gcc/testsuite/obj-c++.dg/try-catch-10.mm
  65b30ce3fa7e707247f859f7235dcc28  gcc/testsuite/obj-c++.dg/try-catch-11.mm
  0547cf34f9cf4f3a578623b4ceb22a99  gcc/testsuite/obj-c++.dg/try-catch-12.mm
*************** c4a6f12cba3fe479319845130b67dda9  gcc/te
*** 61811,61817 ****
  749123fd933ccbf7d2de0ef981fa5ab2  gcc/testsuite/obj-c++.dg/try-catch-16.mm
  58a893072e046f31600a1fb4411b6288  gcc/testsuite/obj-c++.dg/try-catch-17.mm
  59ff3d087e1f9cb2e8a2e8509e556580  gcc/testsuite/obj-c++.dg/try-catch-2.mm
! 43b5b40eade6043d78005dfce2cdc085  gcc/testsuite/obj-c++.dg/try-catch-3.mm
  ab26c644da07ff6820be7567e0d98660  gcc/testsuite/obj-c++.dg/try-catch-4.mm
  f80dc47b629cb94d0cd311a6a7f315f1  gcc/testsuite/obj-c++.dg/try-catch-5.mm
  f4f1fe6c960ffa81d0cccc1460f1b58a  gcc/testsuite/obj-c++.dg/try-catch-6.mm
--- 62291,62297 ----
  749123fd933ccbf7d2de0ef981fa5ab2  gcc/testsuite/obj-c++.dg/try-catch-16.mm
  58a893072e046f31600a1fb4411b6288  gcc/testsuite/obj-c++.dg/try-catch-17.mm
  59ff3d087e1f9cb2e8a2e8509e556580  gcc/testsuite/obj-c++.dg/try-catch-2.mm
! eef49412ec0a3bd9b5061e48b0699ddc  gcc/testsuite/obj-c++.dg/try-catch-3.mm
  ab26c644da07ff6820be7567e0d98660  gcc/testsuite/obj-c++.dg/try-catch-4.mm
  f80dc47b629cb94d0cd311a6a7f315f1  gcc/testsuite/obj-c++.dg/try-catch-5.mm
  f4f1fe6c960ffa81d0cccc1460f1b58a  gcc/testsuite/obj-c++.dg/try-catch-6.mm
*************** cbd8c5394b3188c8a0b698fffb29e761  gcc/te
*** 61823,61828 ****
--- 62303,62343 ----
  5748db698f0b8ee6bafe285e6df3dc32  gcc/testsuite/obj-c++.dg/warn5.mm
  677e021d0f4c6a2c24627bc9093ea7d6  gcc/testsuite/obj-c++.dg/warn6.mm
  cf1e5660ee1cd060f1bf1da012306d6b  gcc/testsuite/obj-c++.dg/warn7.mm
+ acc13fee5a886f5ea6ca2841da59effe  gcc/testsuite/objc-obj-c++-shared/CF-CFString.h
+ 11d92670c2906d6a6ff898a559b8b9fc  gcc/testsuite/objc-obj-c++-shared/F-NSArray.h
+ d7fcf22c3ed31b17539b9acb07183a26  gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h
+ 8f45c73e7c5775b1214ade32c069ffb4  gcc/testsuite/objc-obj-c++-shared/F-NSObject.h
+ 6fe1b4da0d636ea9e7ff339f5d788f5c  gcc/testsuite/objc-obj-c++-shared/F-NSString.h
+ 81d7286975fc4f7945939a6f5f27727f  gcc/testsuite/objc-obj-c++-shared/F-NSValue.h
+ f5cd47052262fe168dc6074f5baa871d  gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h
+ df22b832fd1cc14252d6af54be4e2abb  gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h
+ f6312f509cfa047b5f10bffa0664b5f8  gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h
+ ff366f1b6f27a24776e1b04ef8575c79  gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h
+ b93796d43374fb75c98817ab2d070c2a  gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h
+ bb366f8c5324fa271b2faf2780fc3d89  gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h
+ d99c4c5f8d9ddf7f2c9f6ab6e25a2a9b  gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h
+ 1edd852f3dddf0434acf9cba8ded4136  gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h
+ 6f8cd6c02cece30d49c0e12ff9cfa0a9  gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h
+ e16387e01018d3d54a2f32822682dac1  gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h
+ 4f3dd54a0c640d2b15ee1f79a8f18369  gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h
+ 54ffd1bfa79cf5dc99b3df101a7cd2e6  gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h
+ 68c1d47ef6919edabb48b6f50f1a237d  gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h
+ dc1b5416df768725686ab6df95dc7a40  gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h
+ 5696d61d4f4781658d55b84d5095e034  gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h
+ 6b38d99bc66484db832fe9f58f7b8c5b  gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h
+ b029cb9e81a51e8cdb7b9fbfdd1644a8  gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h
+ 2ced4f29467fa9b3b9c6fbcd7bba5d7d  gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h
+ d8cf0532b45f771bf4dad006de162370  gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h
+ fc876a83da2209b2d6ac280c346f3b68  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h
+ 441214db918256e063a2835c335a0c7d  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h
+ e27796bdadfcc590ea14bdfd2593ce1b  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h
+ 705b21cf4d531ccad6b716a5c3de0c38  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h
+ dc8c5ec7b9abe64c54eabc2d60a81066  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h
+ 3dbb9411c2d6b397d1b9f1da3c06eb09  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h
+ 5932e7455edfc6960112ad2ac6d02b71  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h
+ 4ab4e247b27f5d3d833cd13973c34222  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h
+ a08e081524ab6799e394768da76968d3  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h
+ ce8c053d2554352e55b35ae330cd5126  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h
  1aca10b408347876905ccdeb2ec47665  gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.h
  08a1d6008be828f1fe9360c7a07244db  gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m
  ac76ddcf9ed6ab3c92c31559244da096  gcc/testsuite/objc-obj-c++-shared/next-abi.h
*************** d41bdbf8fd720cd2fb1c999d1e580ba5  gcc/te
*** 61911,61917 ****
  e8f3db69a8847b70c8bc969edd78dbb2  gcc/testsuite/objc.dg/encode-5.m
  1296445554abff012ff56b38392805d1  gcc/testsuite/objc.dg/encode-6-next.m
  e53ead1c08985bdb0849e450194e9b99  gcc/testsuite/objc.dg/encode-6.m
! 6080da2594c39158f3f4b1344700903b  gcc/testsuite/objc.dg/encode-7-next-64bit.m
  ec0c203eb500e86f1c38d60a10728024  gcc/testsuite/objc.dg/encode-7-next.m
  9ab782c949f890c6873d2669830a2e31  gcc/testsuite/objc.dg/encode-7.m
  429d40f99aa6566cade774190e6fc983  gcc/testsuite/objc.dg/encode-8.m
--- 62426,62432 ----
  e8f3db69a8847b70c8bc969edd78dbb2  gcc/testsuite/objc.dg/encode-5.m
  1296445554abff012ff56b38392805d1  gcc/testsuite/objc.dg/encode-6-next.m
  e53ead1c08985bdb0849e450194e9b99  gcc/testsuite/objc.dg/encode-6.m
! ef255acbd6a15fb634d112de0566ec86  gcc/testsuite/objc.dg/encode-7-next-64bit.m
  ec0c203eb500e86f1c38d60a10728024  gcc/testsuite/objc.dg/encode-7-next.m
  9ab782c949f890c6873d2669830a2e31  gcc/testsuite/objc.dg/encode-7.m
  429d40f99aa6566cade774190e6fc983  gcc/testsuite/objc.dg/encode-8.m
*************** fa1ab496151791f4ef05043e7c0b673c  gcc/te
*** 61970,61983 ****
  75cc55de841b4de6d06a46e13f5f7bfe  gcc/testsuite/objc.dg/gnu-runtime-1.m
  a10c57561f5023d1bc5813fb62b15e8f  gcc/testsuite/objc.dg/gnu-runtime-2.m
  cf495a272fe911f953544354d7af49e2  gcc/testsuite/objc.dg/gnu-runtime-3.m
! 5af5796e26fc687bf55b3d9f3ed9238f  gcc/testsuite/objc.dg/headers.m
  f1920dcb3d447ac1425163a2d1e6c0d2  gcc/testsuite/objc.dg/id-1.m
! c6f4519ae7cdde25ce603a24cab9f418  gcc/testsuite/objc.dg/image-info.m
  f642d96cba4255caca5622eae71014c4  gcc/testsuite/objc.dg/incomplete-type-1.m
  7965f2dab76d401f8398a30bcae85653  gcc/testsuite/objc.dg/invalid-method-1.m
  172bebf6092a27228381556a110f96cb  gcc/testsuite/objc.dg/invalid-method-2.m
  cfd869df9840f625e801db2e67f1e182  gcc/testsuite/objc.dg/invalid-type-1.m
! f8e8a6e463c96943e1055a954a109c82  gcc/testsuite/objc.dg/isa-field-1.m
  55075563ae55f61bfee5e587702549a9  gcc/testsuite/objc.dg/ivar-extra-semicolon.m
  27b57b11e7787adb45c687e6d7a063bc  gcc/testsuite/objc.dg/ivar-invalid-type-1.m
  642cb67d94deb494988c902d20ef41d6  gcc/testsuite/objc.dg/ivar-problem-1.m
--- 62485,62499 ----
  75cc55de841b4de6d06a46e13f5f7bfe  gcc/testsuite/objc.dg/gnu-runtime-1.m
  a10c57561f5023d1bc5813fb62b15e8f  gcc/testsuite/objc.dg/gnu-runtime-2.m
  cf495a272fe911f953544354d7af49e2  gcc/testsuite/objc.dg/gnu-runtime-3.m
! 6610c198e68db214bca9de5a0f6cfdec  gcc/testsuite/objc.dg/headers.m
  f1920dcb3d447ac1425163a2d1e6c0d2  gcc/testsuite/objc.dg/id-1.m
! 697c9889104dbd42200e3eaeb739692d  gcc/testsuite/objc.dg/image-info.m
  f642d96cba4255caca5622eae71014c4  gcc/testsuite/objc.dg/incomplete-type-1.m
+ aa8ef11d7fa1e8fe899b665ebe7a4f23  gcc/testsuite/objc.dg/instancetype-0.m
  7965f2dab76d401f8398a30bcae85653  gcc/testsuite/objc.dg/invalid-method-1.m
  172bebf6092a27228381556a110f96cb  gcc/testsuite/objc.dg/invalid-method-2.m
  cfd869df9840f625e801db2e67f1e182  gcc/testsuite/objc.dg/invalid-type-1.m
! 9ad91bf3e53fa36e2556a5ddd4eb378e  gcc/testsuite/objc.dg/isa-field-1.m
  55075563ae55f61bfee5e587702549a9  gcc/testsuite/objc.dg/ivar-extra-semicolon.m
  27b57b11e7787adb45c687e6d7a063bc  gcc/testsuite/objc.dg/ivar-invalid-type-1.m
  642cb67d94deb494988c902d20ef41d6  gcc/testsuite/objc.dg/ivar-problem-1.m
*************** a0a34ff20eea5cde5cc34cb5d51d4e4f  gcc/te
*** 62018,62024 ****
  9153d82237cc99af905bfcb58426980b  gcc/testsuite/objc.dg/method-3.m
  1857e378233cbdb0ef09315d0ee04fc9  gcc/testsuite/objc.dg/method-4.m
  8f76938d87b469c207104bcf02c7f39b  gcc/testsuite/objc.dg/method-5.m
! cc0bfd17577d76434dbf0c4690d50b55  gcc/testsuite/objc.dg/method-6.m
  1d4f49a7f4d9f57ba0929cecbd7a7f28  gcc/testsuite/objc.dg/method-7.m
  172164daa5b2292983d23e0e5d5a94eb  gcc/testsuite/objc.dg/method-8.m
  b534c3ae3ab49fe3be9e7560d558fdf3  gcc/testsuite/objc.dg/method-9.m
--- 62534,62540 ----
  9153d82237cc99af905bfcb58426980b  gcc/testsuite/objc.dg/method-3.m
  1857e378233cbdb0ef09315d0ee04fc9  gcc/testsuite/objc.dg/method-4.m
  8f76938d87b469c207104bcf02c7f39b  gcc/testsuite/objc.dg/method-5.m
! fca76256e166f37586eb06f56a9f0622  gcc/testsuite/objc.dg/method-6.m
  1d4f49a7f4d9f57ba0929cecbd7a7f28  gcc/testsuite/objc.dg/method-7.m
  172164daa5b2292983d23e0e5d5a94eb  gcc/testsuite/objc.dg/method-8.m
  b534c3ae3ab49fe3be9e7560d558fdf3  gcc/testsuite/objc.dg/method-9.m
*************** ba9c85f123a269332f97289544f0c272  gcc/te
*** 62039,62052 ****
  1e68654789c238dc1eaf9e923fe49822  gcc/testsuite/objc.dg/naming-6.m
  ab539e16480243bccd13cb0ab5c05a26  gcc/testsuite/objc.dg/naming-7.m
  dab2c64c5d57ebdc0ca4b496b1db48a2  gcc/testsuite/objc.dg/next-runtime-1.m
! 7bdacce2d25fc27ed41077ddc1cb6a7e  gcc/testsuite/objc.dg/no-extra-load.m
  5aa0d8665f3838cd2d663fc71be4933d  gcc/testsuite/objc.dg/objc-fast-4.m
  6e3afeaf5baf2e68de83a0896e550b27  gcc/testsuite/objc.dg/objc-foreach-1.m
  d7940785b72ab02856b58bf8b4c3d710  gcc/testsuite/objc.dg/objc-foreach-2.m
  b0a4bc88be3fcbba334ad86617c9724e  gcc/testsuite/objc.dg/objc-foreach-3.m
! 12235d0aec67d729a9f040e360810e9c  gcc/testsuite/objc.dg/objc-foreach-4.m
! 3b7013081c6c015d989ef0bde95be007  gcc/testsuite/objc.dg/objc-foreach-5.m
! f531c9a9d8f9e24e5d1b5e0d059e3392  gcc/testsuite/objc.dg/objc-gc-4.m
  e2b871afc37f1772b337d989244b97c6  gcc/testsuite/objc.dg/objc-nofilename-1.m
  6eed5537eae24ed6634c3706c12f2114  gcc/testsuite/objc.dg/param-1.m
  8c15bc469e56fdb17a7b24540bf21491  gcc/testsuite/objc.dg/pch/interface-1.hs
--- 62555,62568 ----
  1e68654789c238dc1eaf9e923fe49822  gcc/testsuite/objc.dg/naming-6.m
  ab539e16480243bccd13cb0ab5c05a26  gcc/testsuite/objc.dg/naming-7.m
  dab2c64c5d57ebdc0ca4b496b1db48a2  gcc/testsuite/objc.dg/next-runtime-1.m
! 46857bb9920377daaab90747aabd7ff3  gcc/testsuite/objc.dg/no-extra-load.m
  5aa0d8665f3838cd2d663fc71be4933d  gcc/testsuite/objc.dg/objc-fast-4.m
  6e3afeaf5baf2e68de83a0896e550b27  gcc/testsuite/objc.dg/objc-foreach-1.m
  d7940785b72ab02856b58bf8b4c3d710  gcc/testsuite/objc.dg/objc-foreach-2.m
  b0a4bc88be3fcbba334ad86617c9724e  gcc/testsuite/objc.dg/objc-foreach-3.m
! d6bb76e151385d5dcc0bccac5e79fa6e  gcc/testsuite/objc.dg/objc-foreach-4.m
! 7aa5deeefbee0740247f45a83aea37f4  gcc/testsuite/objc.dg/objc-foreach-5.m
! b4dd9e0cb9ae65f4f31c256f03bc08df  gcc/testsuite/objc.dg/objc-gc-4.m
  e2b871afc37f1772b337d989244b97c6  gcc/testsuite/objc.dg/objc-nofilename-1.m
  6eed5537eae24ed6634c3706c12f2114  gcc/testsuite/objc.dg/param-1.m
  8c15bc469e56fdb17a7b24540bf21491  gcc/testsuite/objc.dg/pch/interface-1.hs
*************** d165610dbbfad82f6af91eab9b66d300  gcc/te
*** 62162,62168 ****
  2891bbb5e156296e3ee3040d4a7c833e  gcc/testsuite/objc.dg/proto-lossage-4.m
  40b981421154ac96e17299bce5569949  gcc/testsuite/objc.dg/proto-lossage-5.m
  d26b84bd4fece35e5ae1ec9a7c6d4f15  gcc/testsuite/objc.dg/proto-lossage-6.m
! 6975286133171cd693b6f659097de913  gcc/testsuite/objc.dg/proto-lossage-7.m
  604faba6fd06b505d44d4837836124fa  gcc/testsuite/objc.dg/proto-qual-1.m
  4afd2785a0050e517e5c3818d2d5ea46  gcc/testsuite/objc.dg/protocol-forward-1.m
  30d24d440a6063d356f6a53af5141ba5  gcc/testsuite/objc.dg/protocol-forward-2.m
--- 62678,62684 ----
  2891bbb5e156296e3ee3040d4a7c833e  gcc/testsuite/objc.dg/proto-lossage-4.m
  40b981421154ac96e17299bce5569949  gcc/testsuite/objc.dg/proto-lossage-5.m
  d26b84bd4fece35e5ae1ec9a7c6d4f15  gcc/testsuite/objc.dg/proto-lossage-6.m
! 43743498fb7683ea796ffd482ace42c9  gcc/testsuite/objc.dg/proto-lossage-7.m
  604faba6fd06b505d44d4837836124fa  gcc/testsuite/objc.dg/proto-qual-1.m
  4afd2785a0050e517e5c3818d2d5ea46  gcc/testsuite/objc.dg/protocol-forward-1.m
  30d24d440a6063d356f6a53af5141ba5  gcc/testsuite/objc.dg/protocol-forward-2.m
*************** e435b5f971ceb7adfd4ad4a826e98257  gcc/te
*** 62197,62222 ****
  44c850eb724ab694c1eea579910821bd  gcc/testsuite/objc.dg/static-1.m
  911d824641cc5460f0bb8428edcd155b  gcc/testsuite/objc.dg/stret-1.m
  581f8e860f7f1e705a6b0235823fa173  gcc/testsuite/objc.dg/stret-2.m
! 48dbd5e4f3a80cc5653bb873d59cd3b4  gcc/testsuite/objc.dg/strings/const-cfstring-2.m
! 944b45f8bae04534787888f64340973c  gcc/testsuite/objc.dg/strings/const-cfstring-5.m
  21b76d31bad8ab2bce32ce3f5fceff78  gcc/testsuite/objc.dg/strings/const-str-1.m
  24ad853ec86d75ab828e6fc36156ce31  gcc/testsuite/objc.dg/strings/const-str-12.m
! 88a204f313d69410fede9a1fadead584  gcc/testsuite/objc.dg/strings/const-str-12b.m
  11e6b8b6d3e9f318be035ef31f291e33  gcc/testsuite/objc.dg/strings/const-str-2.m
  2ea7be2c8319bbf91f203eb9e01c5520  gcc/testsuite/objc.dg/strings/const-str-5.m
  1b52a4aa3cd0d5062e03b48964ddcb0b  gcc/testsuite/objc.dg/strings/const-str-6.m
  4a89061dc402adc311f94d3659a6eaa2  gcc/testsuite/objc.dg/strings/strings-1.m
  5406714e0710bd54d86b2186d1cb98fa  gcc/testsuite/objc.dg/strings/strings-2.m
  ff654aadda87037110073b4a855a875f  gcc/testsuite/objc.dg/strings/strings.exp
! e725bc4ca7d60a0fa96e088c77b44ba3  gcc/testsuite/objc.dg/stubify-1.m
! b9a053b6534bf53cd94aa5a5ae0b528c  gcc/testsuite/objc.dg/stubify-2.m
  7e68d7fe39ddc6065769f26089764fd6  gcc/testsuite/objc.dg/super-class-1.m
  ba3105737585d465268d9bf41481fa06  gcc/testsuite/objc.dg/super-class-2.m
  a1b0dd9c9fb200a066255256ef572225  gcc/testsuite/objc.dg/super-class-3.m
  c71fc5d6430c26f90154d279a0e4420e  gcc/testsuite/objc.dg/super-class-4.m
  5f7cf7eb1290cd0ac7cc810aca461fcb  gcc/testsuite/objc.dg/super-dealloc-1.m
  43c780cbecdb5565a2bda8b0795d5cf8  gcc/testsuite/objc.dg/super-dealloc-2.m
! e806ea4ccd7ce77b9958611b5c803146  gcc/testsuite/objc.dg/symtab-1.m
  2a986a873850ef622badcc1eb9048d4a  gcc/testsuite/objc.dg/sync-1.m
  6d77d7810e6a1711e9c3e10911fdf7f5  gcc/testsuite/objc.dg/sync-2.m
  a7c71308c349df3308ea10cfd5c4cfc2  gcc/testsuite/objc.dg/sync-3.m
--- 62713,62738 ----
  44c850eb724ab694c1eea579910821bd  gcc/testsuite/objc.dg/static-1.m
  911d824641cc5460f0bb8428edcd155b  gcc/testsuite/objc.dg/stret-1.m
  581f8e860f7f1e705a6b0235823fa173  gcc/testsuite/objc.dg/stret-2.m
! d14e2bc0e149efd8ad9b13c9f1e48081  gcc/testsuite/objc.dg/strings/const-cfstring-2.m
! 0c2da165989aa0dcb159a4c853f22f0c  gcc/testsuite/objc.dg/strings/const-cfstring-5.m
  21b76d31bad8ab2bce32ce3f5fceff78  gcc/testsuite/objc.dg/strings/const-str-1.m
  24ad853ec86d75ab828e6fc36156ce31  gcc/testsuite/objc.dg/strings/const-str-12.m
! 3cb4e420b65ce84056d2b8bd0ebe50d5  gcc/testsuite/objc.dg/strings/const-str-12b.m
  11e6b8b6d3e9f318be035ef31f291e33  gcc/testsuite/objc.dg/strings/const-str-2.m
  2ea7be2c8319bbf91f203eb9e01c5520  gcc/testsuite/objc.dg/strings/const-str-5.m
  1b52a4aa3cd0d5062e03b48964ddcb0b  gcc/testsuite/objc.dg/strings/const-str-6.m
  4a89061dc402adc311f94d3659a6eaa2  gcc/testsuite/objc.dg/strings/strings-1.m
  5406714e0710bd54d86b2186d1cb98fa  gcc/testsuite/objc.dg/strings/strings-2.m
  ff654aadda87037110073b4a855a875f  gcc/testsuite/objc.dg/strings/strings.exp
! 1028fef4f6067cf3ed3015cb12843bec  gcc/testsuite/objc.dg/stubify-1.m
! 14f47f9629e885bc51130d3b4d8a5ffb  gcc/testsuite/objc.dg/stubify-2.m
  7e68d7fe39ddc6065769f26089764fd6  gcc/testsuite/objc.dg/super-class-1.m
  ba3105737585d465268d9bf41481fa06  gcc/testsuite/objc.dg/super-class-2.m
  a1b0dd9c9fb200a066255256ef572225  gcc/testsuite/objc.dg/super-class-3.m
  c71fc5d6430c26f90154d279a0e4420e  gcc/testsuite/objc.dg/super-class-4.m
  5f7cf7eb1290cd0ac7cc810aca461fcb  gcc/testsuite/objc.dg/super-dealloc-1.m
  43c780cbecdb5565a2bda8b0795d5cf8  gcc/testsuite/objc.dg/super-dealloc-2.m
! 0005d93b4fc8f12225545818fc4dfcec  gcc/testsuite/objc.dg/symtab-1.m
  2a986a873850ef622badcc1eb9048d4a  gcc/testsuite/objc.dg/sync-1.m
  6d77d7810e6a1711e9c3e10911fdf7f5  gcc/testsuite/objc.dg/sync-2.m
  a7c71308c349df3308ea10cfd5c4cfc2  gcc/testsuite/objc.dg/sync-3.m
*************** d91e4283788de5085566af47d25f5008  gcc/te
*** 62231,62246 ****
  1131c9137e46b5311c2d803288f2e4d0  gcc/testsuite/objc.dg/too-many-args.m
  83b83c80f3982d5e93c47bed6dd2a88a  gcc/testsuite/objc.dg/torture/dg-torture.exp
  be65f96db9eb7870d002772ea73b79da  gcc/testsuite/objc.dg/torture/forward-1.m
! eb414f8a7531ed8a420a1a6ee919602f  gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m
  e42495f1f3ad6ec8f920137751c3f8f7  gcc/testsuite/objc.dg/torture/strings/const-cfstring-3.m
  d2c0463e1e05d168d9d004c74cec0610  gcc/testsuite/objc.dg/torture/strings/const-cfstring-4.m
! c00db2a33ee79619d0d18ec1bec143d2  gcc/testsuite/objc.dg/torture/strings/const-str-10.m
! 870aba766852dd810f3d097bf57286e0  gcc/testsuite/objc.dg/torture/strings/const-str-11.m
  11f5cd130f549cf602c1bb2004fba283  gcc/testsuite/objc.dg/torture/strings/const-str-3.m
  95175d9f569f2455a67d3a042a9b49e5  gcc/testsuite/objc.dg/torture/strings/const-str-4.m
  38dc4c1d8bffabc69a852320760c79a3  gcc/testsuite/objc.dg/torture/strings/const-str-7.m
  3e0b925a0c58f41da0dff25baae98066  gcc/testsuite/objc.dg/torture/strings/const-str-8.m
! c240b028053e462ac058c3f830ba0503  gcc/testsuite/objc.dg/torture/strings/const-str-9.m
  a8a9f4264b042cb130bb43f35157c620  gcc/testsuite/objc.dg/torture/strings/string1.m
  f559fec747b34a07335a33efaef1d635  gcc/testsuite/objc.dg/torture/strings/string2.m
  8d3378c509e4ec126b88298049f5b787  gcc/testsuite/objc.dg/torture/strings/string3.m
--- 62747,62762 ----
  1131c9137e46b5311c2d803288f2e4d0  gcc/testsuite/objc.dg/too-many-args.m
  83b83c80f3982d5e93c47bed6dd2a88a  gcc/testsuite/objc.dg/torture/dg-torture.exp
  be65f96db9eb7870d002772ea73b79da  gcc/testsuite/objc.dg/torture/forward-1.m
! 4f20d39a7f1dfacf39a8a1b732ad2c1c  gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m
  e42495f1f3ad6ec8f920137751c3f8f7  gcc/testsuite/objc.dg/torture/strings/const-cfstring-3.m
  d2c0463e1e05d168d9d004c74cec0610  gcc/testsuite/objc.dg/torture/strings/const-cfstring-4.m
! c59ca8cb9643a4bd47ad25eacc428bee  gcc/testsuite/objc.dg/torture/strings/const-str-10.m
! 3931c6df3b0f09e852f74dc856992284  gcc/testsuite/objc.dg/torture/strings/const-str-11.m
  11f5cd130f549cf602c1bb2004fba283  gcc/testsuite/objc.dg/torture/strings/const-str-3.m
  95175d9f569f2455a67d3a042a9b49e5  gcc/testsuite/objc.dg/torture/strings/const-str-4.m
  38dc4c1d8bffabc69a852320760c79a3  gcc/testsuite/objc.dg/torture/strings/const-str-7.m
  3e0b925a0c58f41da0dff25baae98066  gcc/testsuite/objc.dg/torture/strings/const-str-8.m
! d1d93c13e62106809a456f06ea348f2d  gcc/testsuite/objc.dg/torture/strings/const-str-9.m
  a8a9f4264b042cb130bb43f35157c620  gcc/testsuite/objc.dg/torture/strings/string1.m
  f559fec747b34a07335a33efaef1d635  gcc/testsuite/objc.dg/torture/strings/string2.m
  8d3378c509e4ec126b88298049f5b787  gcc/testsuite/objc.dg/torture/strings/string3.m
*************** d2d07c2ebcb90350a34d2a0a2a215530  gcc/te
*** 62274,62282 ****
  8c73a8da87197ef7c9627087e4a0abdc  gcc/testsuite/objc.dg/va-meth-1.m
  ad588be086756c7bce570ed5a28030b0  gcc/testsuite/objc.dg/volatile-1.m
  5b030d8bcb22dedd984e8d8dae17cfb6  gcc/testsuite/objc.dg/weak-1.m
! c6f92ed8e0845d4f49274791f11f8632  gcc/testsuite/objc.dg/zero-link-1.m
! 665cb537ffd18b494c34ac2bd13e3f52  gcc/testsuite/objc.dg/zero-link-2.m
! a86dde4579f2a917b3ba4488f0c82a58  gcc/testsuite/objc.dg/zero-link-3.m
  0d71c48c831bf5882b80c4cd6ca9d9d8  gcc/testsuite/objc/compile/20011211-1.m
  9b70591be7f91f15d0a53c89bdc94bf4  gcc/testsuite/objc/compile/20060406-1.m
  63390432ecf16f7577842ecf7fce9e42  gcc/testsuite/objc/compile/compile.exp
--- 62790,62798 ----
  8c73a8da87197ef7c9627087e4a0abdc  gcc/testsuite/objc.dg/va-meth-1.m
  ad588be086756c7bce570ed5a28030b0  gcc/testsuite/objc.dg/volatile-1.m
  5b030d8bcb22dedd984e8d8dae17cfb6  gcc/testsuite/objc.dg/weak-1.m
! f0a85fb06bc40a59b3b67e37b68bf8a9  gcc/testsuite/objc.dg/zero-link-1.m
! 19e680c142e29f8a7a584e91ac7b7056  gcc/testsuite/objc.dg/zero-link-2.m
! af0fd8f33da4a0b997aa6096000deff3  gcc/testsuite/objc.dg/zero-link-3.m
  0d71c48c831bf5882b80c4cd6ca9d9d8  gcc/testsuite/objc/compile/20011211-1.m
  9b70591be7f91f15d0a53c89bdc94bf4  gcc/testsuite/objc/compile/20060406-1.m
  63390432ecf16f7577842ecf7fce9e42  gcc/testsuite/objc/compile/compile.exp
*************** c5c9ff03c8513ded25ac3a967b48085a  gcc/ti
*** 62412,62418 ****
  7b9d3e33b917199158b977af4c108355  gcc/timevar.def
  3c23c5ab690742eb1792aaab452d0439  gcc/timevar.h
  494c54b7d1757cab69e8bd45419d9791  gcc/tlink.c
! 26c822a669875d2c2fc227678929740d  gcc/toplev.c
  f96d6de70f3f0590828430414de64703  gcc/toplev.h
  0cd669bd159aec9d7dce1b30ceacd581  gcc/tracer.c
  a31e20be1f17efb9449295d8115b8e44  gcc/tracer.h
--- 62928,62934 ----
  7b9d3e33b917199158b977af4c108355  gcc/timevar.def
  3c23c5ab690742eb1792aaab452d0439  gcc/timevar.h
  494c54b7d1757cab69e8bd45419d9791  gcc/tlink.c
! afe25656522654a5081b204c230a50c6  gcc/toplev.c
  f96d6de70f3f0590828430414de64703  gcc/toplev.h
  0cd669bd159aec9d7dce1b30ceacd581  gcc/tracer.c
  a31e20be1f17efb9449295d8115b8e44  gcc/tracer.h
*************** b073b36289942334fccdeb4d24ff9439  gcc/tr
*** 62421,62439 ****
  ce824f0d0f96ea15352bec5c3455e176  gcc/tree-affine.c
  b5ed1742deb1ddcfd19853bacd23df0c  gcc/tree-affine.h
  549ba70a91042bce1b00d4e4991302e8  gcc/tree-call-cdce.c
! ceedc0af5d637b239ea9413c79c8a5de  gcc/tree-cfg.c
  6812214afe0d37d4881606855f992f2e  gcc/tree-cfg.h
! b29c65f5752d09d1b4cab9355704b298  gcc/tree-cfgcleanup.c
! 19662777bb8b601c7711286936133e81  gcc/tree-cfgcleanup.h
  3edd81a1b44e3317af2d1f1ea439b154  gcc/tree-chkp-opt.c
  35266a6f0ff4b2b78c22e1ed7ff7c10f  gcc/tree-chkp.c
  3e2dde29d3501136096958570a5113ba  gcc/tree-chkp.h
! 6da4d86f966abd025911c1df7671ff6b  gcc/tree-chrec.c
! b3894073e587c4c8d29f0edcfbe0b34b  gcc/tree-chrec.h
  bc876107600f96dcbf52f8767caaa70b  gcc/tree-complex.c
! f728bb81422cfad65f2070cbac4d0163  gcc/tree-core.h
! 7dbe62be7f1fa5014950c1d703764d95  gcc/tree-data-ref.c
! 14d4baf16cedad6bee8b2c7a19621032  gcc/tree-data-ref.h
  e4ebe06aec52a07fea129dd62c885552  gcc/tree-dfa.c
  6630d3c22ad7f58a6038456404da34f2  gcc/tree-dfa.h
  346ce5448fc1d59e42c687eed1e064c2  gcc/tree-diagnostic.c
--- 62937,62955 ----
  ce824f0d0f96ea15352bec5c3455e176  gcc/tree-affine.c
  b5ed1742deb1ddcfd19853bacd23df0c  gcc/tree-affine.h
  549ba70a91042bce1b00d4e4991302e8  gcc/tree-call-cdce.c
! 80f002a3c4b67e0d5e3bc42a982dddbb  gcc/tree-cfg.c
  6812214afe0d37d4881606855f992f2e  gcc/tree-cfg.h
! e9a8e0fc4544b8d5a1c000f7c44a17d2  gcc/tree-cfgcleanup.c
! 1ccb42c1a71a6cef259bbb43fdf59510  gcc/tree-cfgcleanup.h
  3edd81a1b44e3317af2d1f1ea439b154  gcc/tree-chkp-opt.c
  35266a6f0ff4b2b78c22e1ed7ff7c10f  gcc/tree-chkp.c
  3e2dde29d3501136096958570a5113ba  gcc/tree-chkp.h
! 32a9eea0a6507e081c454ace10b33fce  gcc/tree-chrec.c
! 2b59943c49c3cfc2f978309529d29ae7  gcc/tree-chrec.h
  bc876107600f96dcbf52f8767caaa70b  gcc/tree-complex.c
! d3aa4a0e848de780933d9a2c60edcc35  gcc/tree-core.h
! bc07790a93ab70e11861129989658dfa  gcc/tree-data-ref.c
! a3e422756ca583f08f941bf2df394fc8  gcc/tree-data-ref.h
  e4ebe06aec52a07fea129dd62c885552  gcc/tree-dfa.c
  6630d3c22ad7f58a6038456404da34f2  gcc/tree-dfa.h
  346ce5448fc1d59e42c687eed1e064c2  gcc/tree-diagnostic.c
*************** e4ebe06aec52a07fea129dd62c885552  gcc/tr
*** 62445,62454 ****
  98f97a51a7fe1663cabe8b5c2994ae44  gcc/tree-emutls.c
  7f719d0f8f75a12b72ef5745d8d8a697  gcc/tree-hash-traits.h
  03cb0c4b258ea53578fa8138e1cc5372  gcc/tree-hasher.h
! 37387628580470e7d51c967495e7ba7c  gcc/tree-if-conv.c
  e80967aedf2457305e0aff6c41d9cc9a  gcc/tree-if-conv.h
! 30b9b45db1447a6b21d4bb898b04a607  gcc/tree-inline.c
! efe74ab43ea19b414cfaafab72bfa0aa  gcc/tree-inline.h
  dd830fdd8c80ae21257316bb6a5c1222  gcc/tree-into-ssa.c
  e440c1749aab3001199704be2d30efca  gcc/tree-into-ssa.h
  e38fb6ceb8f4f44ec45d6b4d3ed1a7ac  gcc/tree-iterator.c
--- 62961,62970 ----
  98f97a51a7fe1663cabe8b5c2994ae44  gcc/tree-emutls.c
  7f719d0f8f75a12b72ef5745d8d8a697  gcc/tree-hash-traits.h
  03cb0c4b258ea53578fa8138e1cc5372  gcc/tree-hasher.h
! 0e845e0309702d7e4a0f78de95455f30  gcc/tree-if-conv.c
  e80967aedf2457305e0aff6c41d9cc9a  gcc/tree-if-conv.h
! 1db201ab61b09a0a77f0937e8b4f4d3d  gcc/tree-inline.c
! d8608398054096e82c09098dbe89039c  gcc/tree-inline.h
  dd830fdd8c80ae21257316bb6a5c1222  gcc/tree-into-ssa.c
  e440c1749aab3001199704be2d30efca  gcc/tree-into-ssa.h
  e38fb6ceb8f4f44ec45d6b4d3ed1a7ac  gcc/tree-iterator.c
*************** e38fb6ceb8f4f44ec45d6b4d3ed1a7ac  gcc/tr
*** 62457,62500 ****
  636a9ae0fea02548a7142a269ed40039  gcc/tree-nested.c
  47ed5446a111478fa7dee5eec3c96f69  gcc/tree-nested.h
  bf4fae554ec2382d216fd2781876cdb3  gcc/tree-nrv.c
! 4b85a9124fd1b7f5de196e5140a4baee  gcc/tree-object-size.c
  e9b423e15a82c54595b215e4305612f0  gcc/tree-object-size.h
! 6947fc4bd173552a2bd4b8392cbe3cab  gcc/tree-outof-ssa.c
  251e6b365cf0a560cb73bbdbdfadc456  gcc/tree-outof-ssa.h
  77d0e442f31ed32355cc700c1268c05c  gcc/tree-parloops.c
  a88b6325c8d27f1be5d33fefae43dd13  gcc/tree-parloops.h
  ac9e8a0de63ab275489d211a3a796392  gcc/tree-pass.h
  ee4074b4f4c0c58f5f0847dee454736c  gcc/tree-phinodes.c
  25c97c740c9f8dde32ef1d129df03b76  gcc/tree-phinodes.h
! d488d515791dfc8ba7a88d74bacbe54d  gcc/tree-predcom.c
  1865e59171c3c3d2c7ddea0db0c4de91  gcc/tree-pretty-print.c
  dc34864230a643baba022d69a49744b2  gcc/tree-pretty-print.h
  e0a6ac48b1fc19d386fb63fcf3d98fcb  gcc/tree-profile.c
! 0c2cb1fc1ee0521b0cfe4101383a03c7  gcc/tree-scalar-evolution.c
  1df2143b3f0cb1ce22d2cfa583874fb2  gcc/tree-scalar-evolution.h
! 29a357d0cd24c2b1df800cbb0ceef84e  gcc/tree-sra.c
! af72f578e72eb426bb6bf973587a6e5f  gcc/tree-ssa-address.c
  2961f3256d67a49c5142d98c7daf1b0b  gcc/tree-ssa-address.h
  03a0356dae1b8008b3f08a662eff1e6b  gcc/tree-ssa-alias.c
  50cabeffb777e9a0048455215798d0e1  gcc/tree-ssa-alias.h
! f1bf468e669f701c4fe3e40627368b9a  gcc/tree-ssa-ccp.c
  b93c5df974f247818960f3e25694de0a  gcc/tree-ssa-ccp.h
  18ffc4935353a2a91a561cc5d2731daa  gcc/tree-ssa-coalesce.c
  3dc60007c5d00a63cdbaa8ef066efb47  gcc/tree-ssa-coalesce.h
! 11e218ab19ca0364993d6fe59a2ab516  gcc/tree-ssa-copy.c
  1584b70280e8cf485ee6bdfdaefba0cd  gcc/tree-ssa-dce.c
  bdaaee6c48f269500d1c76712f0caf86  gcc/tree-ssa-dce.h
! cf5eb33e89e86d0da9b4893fc7e22e95  gcc/tree-ssa-dom.c
  43fe745538b891ae59c3dd8f125ed47c  gcc/tree-ssa-dom.h
  fcf371db4cdac403edbb5ecc1cac91af  gcc/tree-ssa-dse.c
! cedeb40fa8dc851a09938f6034e628c0  gcc/tree-ssa-forwprop.c
! 9a0ef789018a8eed18431615fc075af3  gcc/tree-ssa-ifcombine.c
  98c63bbf0ac6b3825216eeb39444b6b5  gcc/tree-ssa-live.c
  511bbde3fb207a200f12733094eaa532  gcc/tree-ssa-live.h
! c687c45eeec499f866ea3dc172ded6cd  gcc/tree-ssa-loop-ch.c
  da467bf0a58425a7e437393a71122636  gcc/tree-ssa-loop-im.c
! 7515b95d7e8a694ad591b8a5f8ee6d77  gcc/tree-ssa-loop-ivcanon.c
! dbdcf3716a4415e0023d2a8cc50c3c5f  gcc/tree-ssa-loop-ivopts.c
  b24a34706d28c13a5c55498688e0f588  gcc/tree-ssa-loop-ivopts.h
  d8daffca48c8b9ab6c7a7221b0bf3ba5  gcc/tree-ssa-loop-manip.c
  6787dc4f74dd9bf5d729f97deb59dd5b  gcc/tree-ssa-loop-manip.h
--- 62973,63016 ----
  636a9ae0fea02548a7142a269ed40039  gcc/tree-nested.c
  47ed5446a111478fa7dee5eec3c96f69  gcc/tree-nested.h
  bf4fae554ec2382d216fd2781876cdb3  gcc/tree-nrv.c
! 2219510d12f1fb203159695ca883bcb6  gcc/tree-object-size.c
  e9b423e15a82c54595b215e4305612f0  gcc/tree-object-size.h
! b98b034a0a0cfeb37639c9f12089994a  gcc/tree-outof-ssa.c
  251e6b365cf0a560cb73bbdbdfadc456  gcc/tree-outof-ssa.h
  77d0e442f31ed32355cc700c1268c05c  gcc/tree-parloops.c
  a88b6325c8d27f1be5d33fefae43dd13  gcc/tree-parloops.h
  ac9e8a0de63ab275489d211a3a796392  gcc/tree-pass.h
  ee4074b4f4c0c58f5f0847dee454736c  gcc/tree-phinodes.c
  25c97c740c9f8dde32ef1d129df03b76  gcc/tree-phinodes.h
! 08a79e82130c51a7471070f85d896879  gcc/tree-predcom.c
  1865e59171c3c3d2c7ddea0db0c4de91  gcc/tree-pretty-print.c
  dc34864230a643baba022d69a49744b2  gcc/tree-pretty-print.h
  e0a6ac48b1fc19d386fb63fcf3d98fcb  gcc/tree-profile.c
! 1e50f5bafbc74b5b84531e3fe002816d  gcc/tree-scalar-evolution.c
  1df2143b3f0cb1ce22d2cfa583874fb2  gcc/tree-scalar-evolution.h
! 254b8e30617798cd8557c0e45ec4f319  gcc/tree-sra.c
! 6a83ab6dc23a144cc6e85e83ab3caec4  gcc/tree-ssa-address.c
  2961f3256d67a49c5142d98c7daf1b0b  gcc/tree-ssa-address.h
  03a0356dae1b8008b3f08a662eff1e6b  gcc/tree-ssa-alias.c
  50cabeffb777e9a0048455215798d0e1  gcc/tree-ssa-alias.h
! cb899be9520f29b97eafe0c06badb112  gcc/tree-ssa-ccp.c
  b93c5df974f247818960f3e25694de0a  gcc/tree-ssa-ccp.h
  18ffc4935353a2a91a561cc5d2731daa  gcc/tree-ssa-coalesce.c
  3dc60007c5d00a63cdbaa8ef066efb47  gcc/tree-ssa-coalesce.h
! 383607d444be3f03255871493e5dec90  gcc/tree-ssa-copy.c
  1584b70280e8cf485ee6bdfdaefba0cd  gcc/tree-ssa-dce.c
  bdaaee6c48f269500d1c76712f0caf86  gcc/tree-ssa-dce.h
! bb08c221693a801942cc9f43a1f9b4d1  gcc/tree-ssa-dom.c
  43fe745538b891ae59c3dd8f125ed47c  gcc/tree-ssa-dom.h
  fcf371db4cdac403edbb5ecc1cac91af  gcc/tree-ssa-dse.c
! f39227fda5b937e7a807e908f4ca6508  gcc/tree-ssa-forwprop.c
! 98070f7420ffb3521468838b41dcd403  gcc/tree-ssa-ifcombine.c
  98c63bbf0ac6b3825216eeb39444b6b5  gcc/tree-ssa-live.c
  511bbde3fb207a200f12733094eaa532  gcc/tree-ssa-live.h
! 1e1dfb0708259a95206b54645e0713e3  gcc/tree-ssa-loop-ch.c
  da467bf0a58425a7e437393a71122636  gcc/tree-ssa-loop-im.c
! 1bf08fa3f0fe61e504044160ff139795  gcc/tree-ssa-loop-ivcanon.c
! ca010f2a9e0b32eb913cf94e6d02c800  gcc/tree-ssa-loop-ivopts.c
  b24a34706d28c13a5c55498688e0f588  gcc/tree-ssa-loop-ivopts.h
  d8daffca48c8b9ab6c7a7221b0bf3ba5  gcc/tree-ssa-loop-manip.c
  6787dc4f74dd9bf5d729f97deb59dd5b  gcc/tree-ssa-loop-manip.h
*************** be566f69fed68625ba16bcf888b31312  gcc/tr
*** 62505,62528 ****
  176933e1ce86bcabf1a33c149f14796e  gcc/tree-ssa-loop-unswitch.c
  7114410589ddaa7669db456897cc5ae6  gcc/tree-ssa-loop.c
  3ed2e9566c2046e9841d3694ecbc85a3  gcc/tree-ssa-loop.h
! de3408b04e3c239d1920d5f5c84bfb04  gcc/tree-ssa-math-opts.c
  686469c12c5b0b9858a19d6be32db183  gcc/tree-ssa-operands.c
  53e8a3e97330ba181edb03d5cbad277e  gcc/tree-ssa-operands.h
  f3e4edc8603185c711541a617916d3dd  gcc/tree-ssa-phionlycprop.c
! f51fdf0f76e21a5cae07dcfda480c88d  gcc/tree-ssa-phiopt.c
! 4b717782b2d97de53ca9cf3ff6b74c3a  gcc/tree-ssa-phiprop.c
! a7a1c92875fef0ab7c9a1eadf1956864  gcc/tree-ssa-pre.c
  fca8fdd22ddedbd6bf99aa8adedfe00d  gcc/tree-ssa-propagate.c
  8de30f7dccca5b37e76745c3f11f0df7  gcc/tree-ssa-propagate.h
! 828cd2bacd5c010f8521f672e5fe232d  gcc/tree-ssa-reassoc.c
! 798bfacd4214dd8368f2fa332afe4e1a  gcc/tree-ssa-sccvn.c
! 300e778ffea51f198c086f5be52a4978  gcc/tree-ssa-sccvn.h
  c2fbccd0fc4bd7fd2f03ff926418cfaa  gcc/tree-ssa-scopedtables.c
  670c490967a3463f58cb8e4381a5488c  gcc/tree-ssa-scopedtables.h
! a40b0cfb359cb2a010d76f22f61db81c  gcc/tree-ssa-sink.c
! 3f4d45ba75da6e5ac5b60cd9ed624494  gcc/tree-ssa-strlen.c
  efd7ceb242b48012fb5c272ed908e7db  gcc/tree-ssa-strlen.h
! 78031b2f3e2929aa546947e884cc163c  gcc/tree-ssa-structalias.c
  1bcaf6452b4514470ce72f846188cb79  gcc/tree-ssa-tail-merge.c
  5c94cdc798a80b3e229a1f4133946e67  gcc/tree-ssa-ter.c
  247a650230c7d35508b2ebe441d65830  gcc/tree-ssa-ter.h
--- 63021,63044 ----
  176933e1ce86bcabf1a33c149f14796e  gcc/tree-ssa-loop-unswitch.c
  7114410589ddaa7669db456897cc5ae6  gcc/tree-ssa-loop.c
  3ed2e9566c2046e9841d3694ecbc85a3  gcc/tree-ssa-loop.h
! 932ce5d4e0f5d4ffabad27e883fd7e3a  gcc/tree-ssa-math-opts.c
  686469c12c5b0b9858a19d6be32db183  gcc/tree-ssa-operands.c
  53e8a3e97330ba181edb03d5cbad277e  gcc/tree-ssa-operands.h
  f3e4edc8603185c711541a617916d3dd  gcc/tree-ssa-phionlycprop.c
! 3158be3c7dfca1cba445dc432149f948  gcc/tree-ssa-phiopt.c
! 0168aec5f52ca083e03e4e70b533f299  gcc/tree-ssa-phiprop.c
! 9e65fda1d9b3e2181ec40a15ee9c2a10  gcc/tree-ssa-pre.c
  fca8fdd22ddedbd6bf99aa8adedfe00d  gcc/tree-ssa-propagate.c
  8de30f7dccca5b37e76745c3f11f0df7  gcc/tree-ssa-propagate.h
! 396075d70a90391cf1b5f812ce8bdafe  gcc/tree-ssa-reassoc.c
! 22d97e3f1beb0d0c0fe6b8a43fef4153  gcc/tree-ssa-sccvn.c
! 6af1801f44f6cf548c6eb38c930d3488  gcc/tree-ssa-sccvn.h
  c2fbccd0fc4bd7fd2f03ff926418cfaa  gcc/tree-ssa-scopedtables.c
  670c490967a3463f58cb8e4381a5488c  gcc/tree-ssa-scopedtables.h
! 1607c221cadaaacabe929f4625eaf5b4  gcc/tree-ssa-sink.c
! 7850aed8782559198bb0bac7774acb03  gcc/tree-ssa-strlen.c
  efd7ceb242b48012fb5c272ed908e7db  gcc/tree-ssa-strlen.h
! 894d3c9c1e442a62fa78a61d033be4af  gcc/tree-ssa-structalias.c
  1bcaf6452b4514470ce72f846188cb79  gcc/tree-ssa-tail-merge.c
  5c94cdc798a80b3e229a1f4133946e67  gcc/tree-ssa-ter.c
  247a650230c7d35508b2ebe441d65830  gcc/tree-ssa-ter.h
*************** e8fc403b81e4a7fdbd073ce71eb45e1d  gcc/tr
*** 62535,62566 ****
  45842e3a0183c230915d8f2e0e5258f8  gcc/tree-ssa-uninit.c
  c143c84c2e88bd78b87e0bde15879472  gcc/tree-ssa.c
  caea81e6f2839d094a100791fb9ec6ae  gcc/tree-ssa.h
! 2b944d03c500740eabfb356744b88293  gcc/tree-ssanames.c
  1b87e3247b58babbed39ff66bef600b8  gcc/tree-ssanames.h
  8193a7f9aaf5116eb0c34b19ca038cf2  gcc/tree-stdarg.c
  2135d8d0c4f5b9c2ff2504e907dc874d  gcc/tree-stdarg.h
! da38e1a49d5c6f8fc43a6d1fb79ad2ab  gcc/tree-streamer-in.c
! 713e427afeea81ccabf38a0e773a7d60  gcc/tree-streamer-out.c
  c456a11cada23fb2127f5259f4537e34  gcc/tree-streamer.c
  d9a2bd6dded27bebc37d7c2bc156524d  gcc/tree-streamer.h
  61435a95b57e17ee81c1454fe3be5110  gcc/tree-switch-conversion.c
! 5906b90c55e0463d667d5af5e8379b3c  gcc/tree-tailcall.c
! 7b295b407b1b938e63dd36ee88769558  gcc/tree-vect-data-refs.c
  4c848ebc4b65251ac231a86ed2911448  gcc/tree-vect-generic.c
  91fc7e04bb827833ad082ad8bb75fc9e  gcc/tree-vect-loop-manip.c
! 64793d7e9857535e5bcf65ca016ca9eb  gcc/tree-vect-loop.c
! 1df304065324e663625d332fc94ba156  gcc/tree-vect-patterns.c
! 9767931bc5c4b507dafb3a4de3ebf307  gcc/tree-vect-slp.c
! fa410fe117a64f8f75d2b9f039d0564e  gcc/tree-vect-stmts.c
  e035d135a4ebda8d67b856410b198921  gcc/tree-vector-builder.c
! fbd200943bb098b7b20bed8aca29dcb0  gcc/tree-vector-builder.h
  4a231e763a7f6f010133585b68978eaa  gcc/tree-vectorizer.c
  3047b7d099527e5f9a217a59ba4048c1  gcc/tree-vectorizer.h
! 9733d870bf3d765c5ca8aa226d23df50  gcc/tree-vrp.c
  1e25c89f27af241e417f5e2d758fa93a  gcc/tree-vrp.h
! 4aee43bf09fb341bfae1271677698fc1  gcc/tree.c
  73344dcb00ff6e62d367712374b32414  gcc/tree.def
! 93b9e4d204efdabbfeac0373a6a02c1e  gcc/tree.h
  9df11f16b55536bbbdb8d4febc6319f5  gcc/treestruct.def
  1ad3fdcbf70aa43b2c9312df6e814061  gcc/tsan.c
  ef6f8fd7131e05972fe682fe7422638d  gcc/tsan.h
--- 63051,63082 ----
  45842e3a0183c230915d8f2e0e5258f8  gcc/tree-ssa-uninit.c
  c143c84c2e88bd78b87e0bde15879472  gcc/tree-ssa.c
  caea81e6f2839d094a100791fb9ec6ae  gcc/tree-ssa.h
! 44f488e6d6e7bc6b863627fa96396e92  gcc/tree-ssanames.c
  1b87e3247b58babbed39ff66bef600b8  gcc/tree-ssanames.h
  8193a7f9aaf5116eb0c34b19ca038cf2  gcc/tree-stdarg.c
  2135d8d0c4f5b9c2ff2504e907dc874d  gcc/tree-stdarg.h
! 3a1067ec37405f5c206a8c24e8099b16  gcc/tree-streamer-in.c
! 20ac612fc3f3aa853dc2bd44843e548f  gcc/tree-streamer-out.c
  c456a11cada23fb2127f5259f4537e34  gcc/tree-streamer.c
  d9a2bd6dded27bebc37d7c2bc156524d  gcc/tree-streamer.h
  61435a95b57e17ee81c1454fe3be5110  gcc/tree-switch-conversion.c
! 9e291f8b9c7c552a4f683f19f572e283  gcc/tree-tailcall.c
! d25da1e67d99b36b1d21b111dd3e7004  gcc/tree-vect-data-refs.c
  4c848ebc4b65251ac231a86ed2911448  gcc/tree-vect-generic.c
  91fc7e04bb827833ad082ad8bb75fc9e  gcc/tree-vect-loop-manip.c
! 28608870720d936883b74bd06be653cb  gcc/tree-vect-loop.c
! 2615bf10027553420c79a5bedf058c74  gcc/tree-vect-patterns.c
! 6d06535b3171d783190e3f2e1e3ad0f0  gcc/tree-vect-slp.c
! 9d46ca6bf6b78a1104ad73e2ecb45145  gcc/tree-vect-stmts.c
  e035d135a4ebda8d67b856410b198921  gcc/tree-vector-builder.c
! 9ca4531f0f46631b14b6495a86342cf8  gcc/tree-vector-builder.h
  4a231e763a7f6f010133585b68978eaa  gcc/tree-vectorizer.c
  3047b7d099527e5f9a217a59ba4048c1  gcc/tree-vectorizer.h
! a7e9409068852aebec1cd0d9a9003f68  gcc/tree-vrp.c
  1e25c89f27af241e417f5e2d758fa93a  gcc/tree-vrp.h
! 509c5ee3910ddf3fb44de486c26da9fc  gcc/tree.c
  73344dcb00ff6e62d367712374b32414  gcc/tree.def
! 5d2ed473422539ea37c15396620ebf28  gcc/tree.h
  9df11f16b55536bbbdb8d4febc6319f5  gcc/treestruct.def
  1ad3fdcbf70aa43b2c9312df6e814061  gcc/tsan.c
  ef6f8fd7131e05972fe682fe7422638d  gcc/tsan.h
*************** d7127cb536c5c2255d3c01e12c54da06  gcc/va
*** 62575,62582 ****
  2aab7148d720804ec91b091b4f33995c  gcc/valtrack.h
  05a8999b49775e63ae140b2a5acb2824  gcc/value-prof.c
  b3b39f12e3f09758de35f6e4d0d50e0c  gcc/value-prof.h
! 139c1e0f6efc6133e60e02c1a80f0234  gcc/var-tracking.c
! 1bd8163a83927b1d4da5e2e2ba2b48bd  gcc/varasm.c
  3bba6cf1d877e25e32ba561be9844970  gcc/varasm.h
  5a2a89ce3a2b3375c8e1dc96d3928cce  gcc/varpool.c
  08677e5c9772c4d0129648f259eae830  gcc/vec-perm-indices.c
--- 63091,63098 ----
  2aab7148d720804ec91b091b4f33995c  gcc/valtrack.h
  05a8999b49775e63ae140b2a5acb2824  gcc/value-prof.c
  b3b39f12e3f09758de35f6e4d0d50e0c  gcc/value-prof.h
! b6bec4e9c73c68513a2e2d234d529c99  gcc/var-tracking.c
! 8fd5bd3dc2975189031541a2568d6673  gcc/varasm.c
  3bba6cf1d877e25e32ba561be9844970  gcc/varasm.h
  5a2a89ce3a2b3375c8e1dc96d3928cce  gcc/varpool.c
  08677e5c9772c4d0129648f259eae830  gcc/vec-perm-indices.c
*************** d3423359c8bfd615274fffedfd6e224a  gcc/ve
*** 62588,62594 ****
  206ce76c6ce744048f99fdcc938dc713  gcc/version.h
  bd908587aa86e13de9b43c92158b2654  gcc/vmsdbg.h
  284d2b1e7808087cf6ee2865d7ae5d3e  gcc/vmsdbgout.c
! fbffa447250f3583f99948f186c3c828  gcc/vr-values.c
  494d1cece340246b2f88fcb08390e32c  gcc/vr-values.h
  ed635f0900933cab641be37c384ad5b3  gcc/vtable-verify.c
  6e9e207b95a2b3a4c6e796dde85573cf  gcc/vtable-verify.h
--- 63104,63110 ----
  206ce76c6ce744048f99fdcc938dc713  gcc/version.h
  bd908587aa86e13de9b43c92158b2654  gcc/vmsdbg.h
  284d2b1e7808087cf6ee2865d7ae5d3e  gcc/vmsdbgout.c
! de31bc7b242307fe5c9815602e6f5338  gcc/vr-values.c
  494d1cece340246b2f88fcb08390e32c  gcc/vr-values.h
  ed635f0900933cab641be37c384ad5b3  gcc/vtable-verify.c
  6e9e207b95a2b3a4c6e796dde85573cf  gcc/vtable-verify.h
*************** f201eaf3a05a76ee9e9aebfa200dbd44  gcc/wi
*** 62599,62611 ****
  fe9e18c439a31c611d835fc962b19fe0  gcc/wide-int.cc
  f5153b535728560e3880688e236fff93  gcc/wide-int.h
  9a63654193e6cbafcc12996b4a8ebeb4  gcc/xcoff.h
! e21f4268bb304b5533df2cac46df25ed  gcc/xcoffout.c
! f2988b9b6e6e66e3c09aa846bb0a3f90  gcc/xcoffout.h
! 52ab538406c3ba2bd8cdad72044bdb9a  gnattools/ChangeLog
  aaa671ca98fa9f94bfedd0ab395c5505  gnattools/Makefile.in
  c59f18e88cbf4b04095185094daf9a84  gnattools/configure
  eb3f980bf11ec11e25ddc6f29983830a  gnattools/configure.ac
! 509950a6cdd41ae5d80bafa73b9bd9ec  gotools/ChangeLog
  de4d8f820a2712a1e3e9800f0a5b3d67  gotools/Makefile.am
  9716fa007cae9d8c7b74c157449246e1  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
--- 63115,63127 ----
  fe9e18c439a31c611d835fc962b19fe0  gcc/wide-int.cc
  f5153b535728560e3880688e236fff93  gcc/wide-int.h
  9a63654193e6cbafcc12996b4a8ebeb4  gcc/xcoff.h
! 95701684d1c01cfa6dd15392993dbccb  gcc/xcoffout.c
! b5ab93f3b93266da254908923f4d64e3  gcc/xcoffout.h
! c9faebb76e2406334180a4ff5bd2b2b5  gnattools/ChangeLog
  aaa671ca98fa9f94bfedd0ab395c5505  gnattools/Makefile.in
  c59f18e88cbf4b04095185094daf9a84  gnattools/configure
  eb3f980bf11ec11e25ddc6f29983830a  gnattools/configure.ac
! 552c83db7731afddff608c26834ab29a  gotools/ChangeLog
  de4d8f820a2712a1e3e9800f0a5b3d67  gotools/Makefile.am
  9716fa007cae9d8c7b74c157449246e1  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 62617,62623 ****
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! da8d7da7c5bcf4c5b0d35bebf0cb3f3b  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  f70613c5e950c483a27bfa7eb0402116  include/ansidecl.h
--- 63133,63139 ----
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! eb38c004517064e35212dee9dc66f3b8  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  f70613c5e950c483a27bfa7eb0402116  include/ansidecl.h
*************** d985ab01898df8d0fd88d101cbad7f25  includ
*** 62642,62648 ****
  24e907d23829b166ecd782579cc8ea10  include/hsa.h
  b3c5fa00fb401092d926b6443579d686  include/leb128.h
  6265413b4ad7b4acbb600439fc255766  include/libiberty.h
! de94e5207678971c47448f1ef37dcf47  include/longlong.h
  355be0b1dc4559409ec784e971f279a3  include/lto-symtab.h
  4f03f3474216e21ef5cabd131bd5e78b  include/md5.h
  de14c7a5d8d1ce55fda864a08a3d1990  include/objalloc.h
--- 63158,63164 ----
  24e907d23829b166ecd782579cc8ea10  include/hsa.h
  b3c5fa00fb401092d926b6443579d686  include/leb128.h
  6265413b4ad7b4acbb600439fc255766  include/libiberty.h
! 7ba94abdcd253ff3256a7d65be4122ae  include/longlong.h
  355be0b1dc4559409ec784e971f279a3  include/lto-symtab.h
  4f03f3474216e21ef5cabd131bd5e78b  include/md5.h
  de14c7a5d8d1ce55fda864a08a3d1990  include/objalloc.h
*************** cc08cd4cddc61e66bc488bd71ebc3572  includ
*** 62662,62668 ****
  14385d807191a7ad0a4a4a103756a3a6  include/xregex2.h
  dcaace4a60bd6d7cd29251ac4849575d  include/xtensa-config.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! f4bec89b3fe46968040e5ab5a6227deb  intl/ChangeLog
  cad1d6fab2274517783de7433c0faa74  intl/Makefile.in
  6ec998bb4716c744bf8185e607f69301  intl/README
  76ca170a525d5b84d90f0478fe788931  intl/VERSION
--- 63178,63184 ----
  14385d807191a7ad0a4a4a103756a3a6  include/xregex2.h
  dcaace4a60bd6d7cd29251ac4849575d  include/xtensa-config.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 2b24c93c03679a16e5739271c0616765  intl/ChangeLog
  cad1d6fab2274517783de7433c0faa74  intl/Makefile.in
  6ec998bb4716c744bf8185e607f69301  intl/README
  76ca170a525d5b84d90f0478fe788931  intl/VERSION
*************** d50a8c6c5b41089930accbdce767d3c0  intl/p
*** 62704,62715 ****
  b4758a0194e3e41362b939911472ce62  intl/relocatable.c
  bedade7bcfc3bc5eb09a2c6844f637f3  intl/relocatable.h
  43f287d082528203fc85c1d2d81bf30d  intl/textdomain.c
! 22629ee110cf27e18eef10d0828e02da  libada/ChangeLog
  db6a3dbf8982da7bdb6f5751dbd4220d  libada/Makefile.in
  93014f4dcca5072ee02feb9d5e0b9332  libada/configure
  542c75154d0bab6cb8cf52e857cbee5f  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! b5c624bce7d71bc2a5b9e9418b782312  libatomic/ChangeLog
  bab8e570f9b81dac64cd8140e7293848  libatomic/Makefile.am
  016c688d522ef7663f914e8c2c61af54  libatomic/Makefile.in
  27dd743f20b2729e63803be4b6d17776  libatomic/acinclude.m4
--- 63220,63231 ----
  b4758a0194e3e41362b939911472ce62  intl/relocatable.c
  bedade7bcfc3bc5eb09a2c6844f637f3  intl/relocatable.h
  43f287d082528203fc85c1d2d81bf30d  intl/textdomain.c
! 4ef87e148c56f2961b1f72320d33e6f2  libada/ChangeLog
  db6a3dbf8982da7bdb6f5751dbd4220d  libada/Makefile.in
  93014f4dcca5072ee02feb9d5e0b9332  libada/configure
  542c75154d0bab6cb8cf52e857cbee5f  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 9984d5bfa30d67eafbe9c78a9f580476  libatomic/ChangeLog
  bab8e570f9b81dac64cd8140e7293848  libatomic/Makefile.am
  016c688d522ef7663f914e8c2c61af54  libatomic/Makefile.in
  27dd743f20b2729e63803be4b6d17776  libatomic/acinclude.m4
*************** d04f86e742ddfedb71fb4a3d0ceede39  libato
*** 62734,62741 ****
  5b12e87c113261066be9ae46f6e6c21f  libatomic/config/rtems/lock.c
  0ab581d09f5c9f35fec15bf82097e678  libatomic/config/s390/exch_n.c
  314380f1bdc39e8fd18d47ecd444349d  libatomic/config/x86/fenv.c
! d5499ef0cdc2a3ece18d23aa1924f26f  libatomic/config/x86/host-config.h
! 8c357c770abf452a9e048c1c760fb67e  libatomic/config/x86/init.c
  405849fce69e46e708821c861987cea0  libatomic/configure
  a6171e8793791f95b15ab91c746b11ec  libatomic/configure.ac
  9541e5ae9ca8e45e4ab7ee8455adb584  libatomic/configure.tgt
--- 63250,63257 ----
  5b12e87c113261066be9ae46f6e6c21f  libatomic/config/rtems/lock.c
  0ab581d09f5c9f35fec15bf82097e678  libatomic/config/s390/exch_n.c
  314380f1bdc39e8fd18d47ecd444349d  libatomic/config/x86/fenv.c
! 9ffdef1c5d87f24609160ad2bbfc93a0  libatomic/config/x86/host-config.h
! 5dec6070c7a0397c031a5839fefd70ef  libatomic/config/x86/init.c
  405849fce69e46e708821c861987cea0  libatomic/configure
  a6171e8793791f95b15ab91c746b11ec  libatomic/configure.ac
  9541e5ae9ca8e45e4ab7ee8455adb584  libatomic/configure.tgt
*************** c03a072efac9b30f8f8429ac52fd246b  libato
*** 62795,62801 ****
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! fca85f6cbdf4b709a5a8c868bd5b6bd2  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
  ad25c936950517ab39514411d44f1c4e  libbacktrace/Makefile.am
  1a3441233d4403c0924c2303de6ebfd4  libbacktrace/Makefile.in
--- 63311,63317 ----
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! f5b16a1a52feb79438e4843acb3e5920  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
  ad25c936950517ab39514411d44f1c4e  libbacktrace/Makefile.am
  1a3441233d4403c0924c2303de6ebfd4  libbacktrace/Makefile.in
*************** dbe2e11593f3102953f57ee51a60695f  libbac
*** 62834,62840 ****
  8f36e84a19a6895e5de34668be47906f  libbacktrace/unknown.c
  76d9ac93dae8cb5d9ab7f770c5c33d59  libbacktrace/xcoff.c
  abb1e3c205164a92fc76bc8e9f7447b7  libbacktrace/ztest.c
! c3d188ea5aadbbe6e6c569d99ed0639b  libcc1/ChangeLog
  70cc59d5aaf376266e5614d3e43f1907  libcc1/Makefile.am
  fe9ad920449dc057290126f8611fe395  libcc1/Makefile.in
  5f253fc15bb29a40419f12ce42f92147  libcc1/aclocal.m4
--- 63350,63356 ----
  8f36e84a19a6895e5de34668be47906f  libbacktrace/unknown.c
  76d9ac93dae8cb5d9ab7f770c5c33d59  libbacktrace/xcoff.c
  abb1e3c205164a92fc76bc8e9f7447b7  libbacktrace/ztest.c
! 1a4e787a0650b091e8e93d6e491010f2  libcc1/ChangeLog
  70cc59d5aaf376266e5614d3e43f1907  libcc1/Makefile.am
  fe9ad920449dc057290126f8611fe395  libcc1/Makefile.in
  5f253fc15bb29a40419f12ce42f92147  libcc1/aclocal.m4
*************** b5ada73fbc6a19380bf513b3790335f5  libcc1
*** 62863,62869 ****
  c6f9b1f960acb9cf871a06c4f935912b  libcc1/names.hh
  49d258234dff741a726cf0043a954f95  libcc1/rpc.hh
  9dbb43e8d518ce0857f62abd7167ae08  libcc1/status.hh
! a531903cc1511bc4c3634f85bc891598  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  d2dac1b8128e62b1d6295cb9b74bbb14  libcpp/Makefile.in
  efb9decde4743620252ededfe7310a3d  libcpp/aclocal.m4
--- 63379,63385 ----
  c6f9b1f960acb9cf871a06c4f935912b  libcc1/names.hh
  49d258234dff741a726cf0043a954f95  libcc1/rpc.hh
  9dbb43e8d518ce0857f62abd7167ae08  libcc1/status.hh
! 38b32f54f691fd7c1b8cb486b194166d  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  d2dac1b8128e62b1d6295cb9b74bbb14  libcpp/Makefile.in
  efb9decde4743620252ededfe7310a3d  libcpp/aclocal.m4
*************** efb9decde4743620252ededfe7310a3d  libcpp
*** 62872,62878 ****
  7eb9e6e3b2606f2c140419da02733ff7  libcpp/configure
  73b767fba0a1de33253732df4197743c  libcpp/configure.ac
  04fe8da82e27a7848109482e22884813  libcpp/directives-only.c
! d1bb6329c43c19bfad6e938f1c72be90  libcpp/directives.c
  b56a38589c174867ac11e0e3c2dc4707  libcpp/errors.c
  4188aa2608cd2f002abf684aef847ea3  libcpp/expr.c
  7a1b45e6b7f022562b43647046f3a060  libcpp/files.c
--- 63388,63394 ----
  7eb9e6e3b2606f2c140419da02733ff7  libcpp/configure
  73b767fba0a1de33253732df4197743c  libcpp/configure.ac
  04fe8da82e27a7848109482e22884813  libcpp/directives-only.c
! 0ac50590447f29879f5f5c57e21586b1  libcpp/directives.c
  b56a38589c174867ac11e0e3c2dc4707  libcpp/errors.c
  4188aa2608cd2f002abf684aef847ea3  libcpp/expr.c
  7a1b45e6b7f022562b43647046f3a060  libcpp/files.c
*************** b1fcb4f298a8708a28f9fe4dbf855d77  libcpp
*** 62882,62897 ****
  9d150861d643f7fad1e4719edbc940a0  libcpp/include/line-map.h
  fa76ed3877ad4129127c5ae931c65811  libcpp/include/mkdeps.h
  6b6e26f811660777d1617f7bbc354078  libcpp/include/symtab.h
! f66a125c666db415d08e8cc438043e0d  libcpp/init.c
! 6e3214db2e9fb91358bc66199df63467  libcpp/internal.h
  b5ad79d0629d14c73cc766d3d47f85e6  libcpp/lex.c
! c773b9017e7af21eb40b7b60623894ec  libcpp/line-map.c
  eba197e195fb1c007bf0724c8bed75ea  libcpp/location-example.txt
  9f391357162982e2304266f63bfa1497  libcpp/macro.c
  f22cafdb8ea5106643a28cf941c5fc0e  libcpp/makeucnid.c
  c36f661613f171be8fee3d72b7e1c09f  libcpp/mkdeps.c
  94eab18602c5e57b824e51964fff7446  libcpp/pch.c
! 9060b22b9c0ffa56d23955e84e120bbe  libcpp/po/ChangeLog
  eb8d613ca08cf1cce8d884839b51d450  libcpp/po/be.gmo
  ff3e5011d3f58f27c539ffb7b0db5898  libcpp/po/be.po
  7757431651664b1e9c06c78d93bfd77c  libcpp/po/ca.gmo
--- 63398,63413 ----
  9d150861d643f7fad1e4719edbc940a0  libcpp/include/line-map.h
  fa76ed3877ad4129127c5ae931c65811  libcpp/include/mkdeps.h
  6b6e26f811660777d1617f7bbc354078  libcpp/include/symtab.h
! eb523d5e10ec63c7303424692348ba3e  libcpp/init.c
! 95cb671038cd63cc51001078082253e4  libcpp/internal.h
  b5ad79d0629d14c73cc766d3d47f85e6  libcpp/lex.c
! e7bbc8afc731ab25cf8fa9bb634de875  libcpp/line-map.c
  eba197e195fb1c007bf0724c8bed75ea  libcpp/location-example.txt
  9f391357162982e2304266f63bfa1497  libcpp/macro.c
  f22cafdb8ea5106643a28cf941c5fc0e  libcpp/makeucnid.c
  c36f661613f171be8fee3d72b7e1c09f  libcpp/mkdeps.c
  94eab18602c5e57b824e51964fff7446  libcpp/pch.c
! 3b78b133885fa2417f1c19d40e263df0  libcpp/po/ChangeLog
  eb8d613ca08cf1cce8d884839b51d450  libcpp/po/be.gmo
  ff3e5011d3f58f27c539ffb7b0db5898  libcpp/po/be.po
  7757431651664b1e9c06c78d93bfd77c  libcpp/po/ca.gmo
*************** da0e27c48fd0ce5f2d3e37e41af99cf2  libcpp
*** 62941,62952 ****
  36946b653677056e322ef20e95f6b80e  libcpp/ucnid.h
  80847d07e519c55c76ac9e1a89b0b7e8  libcpp/ucnid.tab
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! 43c5e997d744f578c996eee34b78f323  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
  57ec341dbbf2ad937be2f9a710932b57  libdecnumber/Makefile.in
  b9ab907f769f0664ed31991a9c9bf3bb  libdecnumber/aclocal.m4
  728c92a81977f6b1ce57146d7a66076c  libdecnumber/bid/bid-dpd.h
! 12230c29a88550a7f662f60696680206  libdecnumber/bid/bid2dpd_dpd2bid.c
  e6d087e338c023920a35188158b74578  libdecnumber/bid/bid2dpd_dpd2bid.h
  ea69a6d83c0278792d3acc4f6b069c82  libdecnumber/bid/decimal128.c
  47afd72790bc284aceb5a23597cc6146  libdecnumber/bid/decimal128.h
--- 63457,63468 ----
  36946b653677056e322ef20e95f6b80e  libcpp/ucnid.h
  80847d07e519c55c76ac9e1a89b0b7e8  libcpp/ucnid.tab
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! 4997554a0c80f688c98bbced33f9882a  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
  57ec341dbbf2ad937be2f9a710932b57  libdecnumber/Makefile.in
  b9ab907f769f0664ed31991a9c9bf3bb  libdecnumber/aclocal.m4
  728c92a81977f6b1ce57146d7a66076c  libdecnumber/bid/bid-dpd.h
! 8dd7f7e592ee8a3ad328f2f06da6a3ab  libdecnumber/bid/bid2dpd_dpd2bid.c
  e6d087e338c023920a35188158b74578  libdecnumber/bid/bid2dpd_dpd2bid.h
  ea69a6d83c0278792d3acc4f6b069c82  libdecnumber/bid/decimal128.c
  47afd72790bc284aceb5a23597cc6146  libdecnumber/bid/decimal128.h
*************** a97c47969dfc92a7666dfe3c2e1e1448  libdec
*** 63004,63010 ****
  1b3ac8f16152273c87e1f2ec5f887016  libdecnumber/dpd/decimal64.c
  e2fdfe70083dbc8a6bec996d90813407  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
! c2e457389cdecdfaf74f306983773edd  libffi/ChangeLog
  ba66fc19311348d373ec271be939a659  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
--- 63520,63526 ----
  1b3ac8f16152273c87e1f2ec5f887016  libdecnumber/dpd/decimal64.c
  e2fdfe70083dbc8a6bec996d90813407  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
! db8c6a9e001d9636f9bdde6369235478  libffi/ChangeLog
  ba66fc19311348d373ec271be939a659  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
*************** d47c79b281339983862a8e52d8c73f0f  libffi
*** 63361,63369 ****
  291be426192f460f6a07dfe1c96ab094  libffi/testsuite/libffi.special/special.exp
  93fc3ea311b79f64004992807ce75d1e  libffi/testsuite/libffi.special/unwindtest.cc
  185d0795017fbbe253a13db8e34085f9  libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
! 2a9d28374375b7e9d65bf7553fa99696  libgcc/ChangeLog
  709335298d900a72f48092ad0056f60d  libgcc/Makefile.in
! 5d9265327c85f8961ccb448fa2c53f45  libgcc/config.host
  dbd4c68a64e3be09ab49bad953cf29cd  libgcc/config.in
  36e58f05f226663c441c805c4042fdea  libgcc/config/aarch64/aarch64-unwind.h
  f85b457b3c170683ab135af0907ac329  libgcc/config/aarch64/crtfastmath.c
--- 63877,63885 ----
  291be426192f460f6a07dfe1c96ab094  libffi/testsuite/libffi.special/special.exp
  93fc3ea311b79f64004992807ce75d1e  libffi/testsuite/libffi.special/unwindtest.cc
  185d0795017fbbe253a13db8e34085f9  libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
! 9c6de87ff987688cb18792f60abe8001  libgcc/ChangeLog
  709335298d900a72f48092ad0056f60d  libgcc/Makefile.in
! 63d545dbb6993f45f6befde63b5c059c  libgcc/config.host
  dbd4c68a64e3be09ab49bad953cf29cd  libgcc/config.in
  36e58f05f226663c441c805c4042fdea  libgcc/config/aarch64/aarch64-unwind.h
  f85b457b3c170683ab135af0907ac329  libgcc/config/aarch64/crtfastmath.c
*************** ff9dfacf1d2fe2fe2be328831f559783  libgcc
*** 63732,63738 ****
  b271243f3ea668919b7aa0bc58063de6  libgcc/config/ia64/vms-unwind.h
  6a404f703b0a7e76acc46ccaae1d725d  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! 8d6eadc39c920ffda809c8f3988b9307  libgcc/config/libbid/ChangeLog
  bc4a84dca1d7640acb8977fddc50b727  libgcc/config/libbid/_addsub_dd.c
  ad8b5daba470d3a6579d78248ffa7c92  libgcc/config/libbid/_addsub_sd.c
  eec7e38d96b43c9118b42fc3cbee2a5f  libgcc/config/libbid/_addsub_td.c
--- 64248,64254 ----
  b271243f3ea668919b7aa0bc58063de6  libgcc/config/ia64/vms-unwind.h
  6a404f703b0a7e76acc46ccaae1d725d  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! d566fe501eff320711aa884c63299cff  libgcc/config/libbid/ChangeLog
  bc4a84dca1d7640acb8977fddc50b727  libgcc/config/libbid/_addsub_dd.c
  ad8b5daba470d3a6579d78248ffa7c92  libgcc/config/libbid/_addsub_sd.c
  eec7e38d96b43c9118b42fc3cbee2a5f  libgcc/config/libbid/_addsub_td.c
*************** b8976f2dd9f18cb249502ba793c2155d  libgcc
*** 64260,64272 ****
  6bc2cab83a131e477cf374b606f1d239  libgcc/config/nvptx/nvptx-malloc.h
  63522f5e1f92380eaa6ef2c752d6b6de  libgcc/config/nvptx/reduction.c
  dffcd9969bf41775f6581a1dd31f351f  libgcc/config/nvptx/t-nvptx
! c7cc3cf12f9adba6e11b9f036e67fb36  libgcc/config/pa/fptr.c
  b5ea7db9f2a22b5b7b8f31f6f8edd956  libgcc/config/pa/gthr-dce.h
  beadcbb36e29db4af5eb65522e70813e  libgcc/config/pa/hpux-unwind.h
! c54c3a2c39e79a12c73ddf0c5e37b6fd  libgcc/config/pa/lib2funcs.S
! 786047114461066d0f8e61d0bc18c31e  libgcc/config/pa/linux-atomic.c
  a7dec62b6949025d65111d42c351ea73  libgcc/config/pa/linux-unwind.h
! d997b655dbdb8f99d36e0f0c34755d19  libgcc/config/pa/milli64.S
  dce608a3c87e08193d64cbdaa54e2233  libgcc/config/pa/pa64-hpux-lib.h
  ecb2861bf5e34f2220ef551dc49b81c5  libgcc/config/pa/quadlib.c
  37555ac91c34eff5b83f116fb104e0bb  libgcc/config/pa/stublib.c
--- 64776,64788 ----
  6bc2cab83a131e477cf374b606f1d239  libgcc/config/nvptx/nvptx-malloc.h
  63522f5e1f92380eaa6ef2c752d6b6de  libgcc/config/nvptx/reduction.c
  dffcd9969bf41775f6581a1dd31f351f  libgcc/config/nvptx/t-nvptx
! f71f80474fdd53053ad958491625dce2  libgcc/config/pa/fptr.c
  b5ea7db9f2a22b5b7b8f31f6f8edd956  libgcc/config/pa/gthr-dce.h
  beadcbb36e29db4af5eb65522e70813e  libgcc/config/pa/hpux-unwind.h
! bd6278e65bcb4be370bf702870cb93ca  libgcc/config/pa/lib2funcs.S
! 64ffeebe235a4fa4d6dbf2fcede3d6f1  libgcc/config/pa/linux-atomic.c
  a7dec62b6949025d65111d42c351ea73  libgcc/config/pa/linux-unwind.h
! b998ee4ab00780117eee52757de2defd  libgcc/config/pa/milli64.S
  dce608a3c87e08193d64cbdaa54e2233  libgcc/config/pa/pa64-hpux-lib.h
  ecb2861bf5e34f2220ef551dc49b81c5  libgcc/config/pa/quadlib.c
  37555ac91c34eff5b83f116fb104e0bb  libgcc/config/pa/stublib.c
*************** e04fe3d20b9a5c6c4cf56cd67382a1ad  libgcc
*** 64346,64352 ****
  6e2a071fe17f9ac12ea2fa2f412fbc69  libgcc/config/rs6000/darwin-gpsave.S
  6eb18581e71673540bbfcb96372ee6fb  libgcc/config/rs6000/darwin-tramp.S
  9d1aadd59f952cd852c0f483affc8f89  libgcc/config/rs6000/darwin-unwind.h
! 0a63e8624e12851e29c9935e23fc3f49  libgcc/config/rs6000/darwin-vecsave.S
  ae33e115f78bec8c83666519f341bb32  libgcc/config/rs6000/darwin-world.S
  553b5b3861d8220121a4c020091396a8  libgcc/config/rs6000/e500crtres32gpr.S
  9be7cb0a472ef2e70a76844966c79f20  libgcc/config/rs6000/e500crtres64gpr.S
--- 64862,64868 ----
  6e2a071fe17f9ac12ea2fa2f412fbc69  libgcc/config/rs6000/darwin-gpsave.S
  6eb18581e71673540bbfcb96372ee6fb  libgcc/config/rs6000/darwin-tramp.S
  9d1aadd59f952cd852c0f483affc8f89  libgcc/config/rs6000/darwin-unwind.h
! 6d7d0965769d3f1aaf7165f903a37838  libgcc/config/rs6000/darwin-vecsave.S
  ae33e115f78bec8c83666519f341bb32  libgcc/config/rs6000/darwin-world.S
  553b5b3861d8220121a4c020091396a8  libgcc/config/rs6000/e500crtres32gpr.S
  9be7cb0a472ef2e70a76844966c79f20  libgcc/config/rs6000/e500crtres64gpr.S
*************** ae9fbb2d21d9ac45513f6d3df94f3d59  libgcc
*** 64394,64401 ****
  6dcccb0e93492b49bd7e2a1bfc2175c2  libgcc/config/rs6000/sol-cn.S
  8e65197842ba39fd658038728475e572  libgcc/config/rs6000/t-aix-cxa
  0d6637a7e112c021e7ce371918c7659c  libgcc/config/rs6000/t-crtstuff
! fbf232aa523ca2f4bcf139e827eba2da  libgcc/config/rs6000/t-darwin
! d7cdc73d7a8e658f872ea07474837bc2  libgcc/config/rs6000/t-darwin64
  6bcbbeccaa021da0a7d1bdbd456a3435  libgcc/config/rs6000/t-e500v1-fp
  ef7d3fefd129fa59acb1b31acbb29702  libgcc/config/rs6000/t-e500v2-fp
  f9c993d20fe30bd0ec55ec5caf62518d  libgcc/config/rs6000/t-float128
--- 64910,64917 ----
  6dcccb0e93492b49bd7e2a1bfc2175c2  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
  6bcbbeccaa021da0a7d1bdbd456a3435  libgcc/config/rs6000/t-e500v1-fp
  ef7d3fefd129fa59acb1b31acbb29702  libgcc/config/rs6000/t-e500v2-fp
  f9c993d20fe30bd0ec55ec5caf62518d  libgcc/config/rs6000/t-float128
*************** ada9a39786da3b2e999f7440a17a1ed7  libgcc
*** 64502,64508 ****
  7f567bcd22705a965e07f79e8f68ebaa  libgcc/config/stormy16/umodsi3.c
  f199b38114ce849b77b38bd475d72cff  libgcc/config/t-crtfm
  060a49bb5c4a53a2125123d4cbd571de  libgcc/config/t-crtstuff-pic
! d642b4a8c7de2f18dad59fd567c521f0  libgcc/config/t-darwin
  ee7ad6460936fc6f3f89ecb711376477  libgcc/config/t-dfprules
  d747115cbcc2bd56b6b4f73c350c2ae3  libgcc/config/t-eh-dw2-dip
  b9d08c1cbead9131f216accd515ec32c  libgcc/config/t-fdpbit
--- 65018,65024 ----
  7f567bcd22705a965e07f79e8f68ebaa  libgcc/config/stormy16/umodsi3.c
  f199b38114ce849b77b38bd475d72cff  libgcc/config/t-crtfm
  060a49bb5c4a53a2125123d4cbd571de  libgcc/config/t-crtstuff-pic
! 4062850a39423731508ce332c6f06273  libgcc/config/t-darwin
  ee7ad6460936fc6f3f89ecb711376477  libgcc/config/t-dfprules
  d747115cbcc2bd56b6b4f73c350c2ae3  libgcc/config/t-eh-dw2-dip
  b9d08c1cbead9131f216accd515ec32c  libgcc/config/t-fdpbit
*************** f5e07b4d53f51bc6c745e21ee9160a2e  libgcc
*** 64752,64758 ****
  0aa8ba2bb5350d77b57720aaa4f27d15  libgcc/vtv_end_preinit.c
  61dd4e929b7360c913bb73da6785fc3d  libgcc/vtv_start.c
  ff8ccb48fa2495fe0bf8e6e56992bceb  libgcc/vtv_start_preinit.c
! f6c020cf9e5ef65b87c8e52ca596cbd2  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
--- 65268,65274 ----
  0aa8ba2bb5350d77b57720aaa4f27d15  libgcc/vtv_end_preinit.c
  61dd4e929b7360c913bb73da6785fc3d  libgcc/vtv_start.c
  ff8ccb48fa2495fe0bf8e6e56992bceb  libgcc/vtv_start_preinit.c
! e907e3a5cebdb7ab92a457c294213155  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
*************** f281a90f9c3ce551256344af337248ae  libgfo
*** 65407,65413 ****
  60e1efa124856c90bf75f4aad4025c3a  libgfortran/intrinsics/pack_generic.c
  be06b0a84413d3b2b040a27a23ba5f7a  libgfortran/intrinsics/perror.c
  78d85f8c99956917c9b5c8fc6235a06b  libgfortran/intrinsics/rand.c
! 7ddd95cfefbf679622cf9f4bf55d81a4  libgfortran/intrinsics/random.c
  e9d4d53f546d779165363d6cbbf22939  libgfortran/intrinsics/rename.c
  3db3158352d9096ba80d3da676d5db0c  libgfortran/intrinsics/reshape_generic.c
  3a7470aaa3be1e4df83d6008a1e5b203  libgfortran/intrinsics/reshape_packed.c
--- 65923,65929 ----
  60e1efa124856c90bf75f4aad4025c3a  libgfortran/intrinsics/pack_generic.c
  be06b0a84413d3b2b040a27a23ba5f7a  libgfortran/intrinsics/perror.c
  78d85f8c99956917c9b5c8fc6235a06b  libgfortran/intrinsics/rand.c
! b5a081a00caaee9aa73309710fff7883  libgfortran/intrinsics/random.c
  e9d4d53f546d779165363d6cbbf22939  libgfortran/intrinsics/rename.c
  3db3158352d9096ba80d3da676d5db0c  libgfortran/intrinsics/reshape_generic.c
  3a7470aaa3be1e4df83d6008a1e5b203  libgfortran/intrinsics/reshape_packed.c
*************** f77170aa2a6af7a3e505b0950757e872  libgfo
*** 65429,65435 ****
  875c553f6b7f68a0b3698c459f2ff88c  libgfortran/intrinsics/umask.c
  3c8116b91a5fd4ed6c84c584e857b7ef  libgfortran/intrinsics/unlink.c
  5885b48f8e6cab42ede8bcf96f813d1b  libgfortran/intrinsics/unpack_generic.c
! f953b4a58d3d5ca49fe330eb6fea5d8a  libgfortran/io/close.c
  7dc50bbffc606e5b1e695795c170369f  libgfortran/io/fbuf.c
  71e0d0ad94bfa124b31a26e49b51dd0c  libgfortran/io/fbuf.h
  e735bc6badd6c15280405038275f0f91  libgfortran/io/file_pos.c
--- 65945,65951 ----
  875c553f6b7f68a0b3698c459f2ff88c  libgfortran/intrinsics/umask.c
  3c8116b91a5fd4ed6c84c584e857b7ef  libgfortran/intrinsics/unlink.c
  5885b48f8e6cab42ede8bcf96f813d1b  libgfortran/intrinsics/unpack_generic.c
! 0a07b6d424f03fa180d7f3884ca6d101  libgfortran/io/close.c
  7dc50bbffc606e5b1e695795c170369f  libgfortran/io/fbuf.c
  71e0d0ad94bfa124b31a26e49b51dd0c  libgfortran/io/fbuf.h
  e735bc6badd6c15280405038275f0f91  libgfortran/io/file_pos.c
*************** ea6f74ca36ed9b8e4e0a090302ae62aa  libgfo
*** 65443,65455 ****
  9b8a2a4d030a28a0fa32ea9648934dcc  libgfortran/io/open.c
  8540963a24bd87b37cd3e2ef3befd25c  libgfortran/io/read.c
  1c7c4368a1a6cc4cbc206abd1c68934a  libgfortran/io/size_from_kind.c
! 805204503103abc8ebd77e5bd8c9c059  libgfortran/io/transfer.c
  4c2c7eafd2d0335795f53c1a63829e6d  libgfortran/io/transfer128.c
  a5f94c6e898523027475fd1beb16a402  libgfortran/io/unit.c
  cbaca42a11a35b340e7747c7b7f7c1e3  libgfortran/io/unix.c
  b693858bb490e3d3f86b419ea3032f26  libgfortran/io/unix.h
  9495872a16d6a83a19d5a8fc03d5b16d  libgfortran/io/write.c
! a3f7ebbaec0ece4c4e796216190466fc  libgfortran/io/write_float.def
  72d31c0b0a88f4512eb82ff83ef87081  libgfortran/kinds-override.h
  148d6fdc81e9892fcefbd1674b4c53ad  libgfortran/libgfortran.h
  2527bb19b82f08b34038b07b172d029d  libgfortran/libgfortran.spec.in
--- 65959,65971 ----
  9b8a2a4d030a28a0fa32ea9648934dcc  libgfortran/io/open.c
  8540963a24bd87b37cd3e2ef3befd25c  libgfortran/io/read.c
  1c7c4368a1a6cc4cbc206abd1c68934a  libgfortran/io/size_from_kind.c
! 54e95bb0fa5a895f20024a2b63993048  libgfortran/io/transfer.c
  4c2c7eafd2d0335795f53c1a63829e6d  libgfortran/io/transfer128.c
  a5f94c6e898523027475fd1beb16a402  libgfortran/io/unit.c
  cbaca42a11a35b340e7747c7b7f7c1e3  libgfortran/io/unix.c
  b693858bb490e3d3f86b419ea3032f26  libgfortran/io/unix.h
  9495872a16d6a83a19d5a8fc03d5b16d  libgfortran/io/write.c
! 747eefe2a4a0305fbba138e3a51439ff  libgfortran/io/write_float.def
  72d31c0b0a88f4512eb82ff83ef87081  libgfortran/kinds-override.h
  148d6fdc81e9892fcefbd1674b4c53ad  libgfortran/libgfortran.h
  2527bb19b82f08b34038b07b172d029d  libgfortran/libgfortran.spec.in
*************** d5b66d8ff7aa9646e9241ce25683afa2  libgo/
*** 69018,69024 ****
  5399e70b49321ce881a655dfb4603d1e  libgo/testsuite/gotest
  ead4e721beb57b319fcd7da8ddf10705  libgo/testsuite/lib/libgo.exp
  6df485581d2f02246f41b5ca46f5bb5d  libgo/testsuite/libgo.testmain/testmain.exp
! cf3ef5823fe7f9ff3a9aa440a161ff3a  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  55534454ed4bb50459c2c58ed02cad59  libgomp/Makefile.am
  3afa7de402313c9d3311755688e27cb8  libgomp/Makefile.in
--- 69534,69540 ----
  5399e70b49321ce881a655dfb4603d1e  libgo/testsuite/gotest
  ead4e721beb57b319fcd7da8ddf10705  libgo/testsuite/lib/libgo.exp
  6df485581d2f02246f41b5ca46f5bb5d  libgo/testsuite/libgo.testmain/testmain.exp
! 370546b4039c878b21b170fb9e888aab  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  55534454ed4bb50459c2c58ed02cad59  libgomp/Makefile.am
  3afa7de402313c9d3311755688e27cb8  libgomp/Makefile.in
*************** f2e3abab1161390ec02492ee5b386de5  libgom
*** 69141,69147 ****
  f621c54e42a9b1406b5504019f903c37  libgomp/oacc-async.c
  bbc40b6692c1f59483277e4ba216f818  libgomp/oacc-cuda.c
  c74e3d61fec95f38c9108b806e56b9f6  libgomp/oacc-host.c
! 4f9369afa10eee8c313c8c66cf4348a2  libgomp/oacc-init.c
  d508015b7fb857c3609bb4c7b3303862  libgomp/oacc-int.h
  341eae5f7b1634b92a12c974d8a6d3d4  libgomp/oacc-mem.c
  ea43fa08f78f7529c0ce0b9aff4b279d  libgomp/oacc-parallel.c
--- 69657,69663 ----
  f621c54e42a9b1406b5504019f903c37  libgomp/oacc-async.c
  bbc40b6692c1f59483277e4ba216f818  libgomp/oacc-cuda.c
  c74e3d61fec95f38c9108b806e56b9f6  libgomp/oacc-host.c
! 6657447954f717cda92ae02d6fb19ce9  libgomp/oacc-init.c
  d508015b7fb857c3609bb4c7b3303862  libgomp/oacc-int.h
  341eae5f7b1634b92a12c974d8a6d3d4  libgomp/oacc-mem.c
  ea43fa08f78f7529c0ce0b9aff4b279d  libgomp/oacc-parallel.c
*************** a3adecb174d96c98b914adb0813e2d1b  libgom
*** 69149,69155 ****
  63bc8475de67440376af5da9991171d2  libgomp/oacc-plugin.h
  82168b0aa8cd6cc22be4951f50aa70c4  libgomp/omp.h.in
  761eee4353e7277065b0368e8be8915f  libgomp/omp_lib.f90.in
! b9354d509f77a26fa976240e5dd8e8c0  libgomp/omp_lib.h.in
  1dae47d97eec74bc20f12e69e90001c9  libgomp/openacc.f90
  899b1b3af2790454645ed900385c1f59  libgomp/openacc.h
  bd287e782ca9ca3513b447031eeaf99a  libgomp/openacc_lib.h
--- 69665,69671 ----
  63bc8475de67440376af5da9991171d2  libgomp/oacc-plugin.h
  82168b0aa8cd6cc22be4951f50aa70c4  libgomp/omp.h.in
  761eee4353e7277065b0368e8be8915f  libgomp/omp_lib.f90.in
! e7e1d9f584e33d567bf600978c0658b3  libgomp/omp_lib.h.in
  1dae47d97eec74bc20f12e69e90001c9  libgomp/openacc.f90
  899b1b3af2790454645ed900385c1f59  libgomp/openacc.h
  bd287e782ca9ca3513b447031eeaf99a  libgomp/openacc_lib.h
*************** d9a7298e78e8ea76741e66f95462261f  libgom
*** 69159,69165 ****
  b9f214e88e1727770afc1f9db29f2319  libgomp/plugin/configfrag.ac
  e16d8b74c66c42dfe1bfefef13b0a64f  libgomp/plugin/cuda/cuda.h
  16ed69fb21aeb5b329cbba3aca7ba1ef  libgomp/plugin/hsa_ext_finalize.h
! b443b99c012094178fcb8fa2e9b63345  libgomp/plugin/plugin-hsa.c
  d0d22cb1f268380e88de92d2f38f0f68  libgomp/plugin/plugin-nvptx.c
  349b1c204295e4c3de8a51e5c2bd1deb  libgomp/priority_queue.c
  dca40fe9954326a1c856393514df27be  libgomp/priority_queue.h
--- 69675,69681 ----
  b9f214e88e1727770afc1f9db29f2319  libgomp/plugin/configfrag.ac
  e16d8b74c66c42dfe1bfefef13b0a64f  libgomp/plugin/cuda/cuda.h
  16ed69fb21aeb5b329cbba3aca7ba1ef  libgomp/plugin/hsa_ext_finalize.h
! 4c7a0750082c9a13b601af21e0d065d1  libgomp/plugin/plugin-hsa.c
  d0d22cb1f268380e88de92d2f38f0f68  libgomp/plugin/plugin-nvptx.c
  349b1c204295e4c3de8a51e5c2bd1deb  libgomp/priority_queue.c
  dca40fe9954326a1c856393514df27be  libgomp/priority_queue.h
*************** cae1fc2a9354c3a86718128ae4ce239b  libgom
*** 69398,69403 ****
--- 69914,69921 ----
  325bc05f5a92dc21b7b2f0ecf33f9322  libgomp/testsuite/libgomp.c++/udr-18.C
  72c7ea67ff8ae2b015a95ae0229913a7  libgomp/testsuite/libgomp.c++/udr-19.C
  d781578fb089699e0ef346a39952f9ba  libgomp/testsuite/libgomp.c++/udr-2.C
+ 5b4b50c570b25d55796124f11168988d  libgomp/testsuite/libgomp.c++/udr-20.C
+ 66c3ee1d97bf98787c71112cad84a23b  libgomp/testsuite/libgomp.c++/udr-21.C
  9fbc10fae7a305b6bd8fea38417fa68d  libgomp/testsuite/libgomp.c++/udr-3.C
  ea9d7efadb5b2c25e305ce1e8aee8d04  libgomp/testsuite/libgomp.c++/udr-4.C
  237e9df073e4ccf5adf875c41f053cb2  libgomp/testsuite/libgomp.c++/udr-5.C
*************** f8306bcde3b73b14f3e4d12cc73d9544  libgom
*** 69408,69413 ****
--- 69926,69932 ----
  025dfca2b02c470cf7f46afb552c078c  libgomp/testsuite/libgomp.c-c++-common/cancel-taskgroup-1.c
  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
  a33f34c1b9c57d52227eae6f7812f713  libgomp/testsuite/libgomp.c/affinity-1.c
  1158aba9f91c847a376587e1a9d453a0  libgomp/testsuite/libgomp.c/affinity-2.c
  5b7669d833c280f2eb266ac1f26d1462  libgomp/testsuite/libgomp.c/appendix-a/a.15.1.c
*************** e768743d2af95f59780e3418077b7e1e  libgom
*** 69674,69679 ****
--- 70193,70199 ----
  5996dc15da52a000b77c153bb70588f6  libgomp/testsuite/libgomp.c/pr81687-2.c
  ed00c0e197dcbbf46f44ea320b473f78  libgomp/testsuite/libgomp.c/pr86660.c
  98b922b1cdf2f28ae03ab1ce3c81629a  libgomp/testsuite/libgomp.c/pr89002.c
+ c809670e9df5e9371adcd7582c352fe5  libgomp/testsuite/libgomp.c/pr90811.c
  2a0a447db3ae892c0c62b0136b00360e  libgomp/testsuite/libgomp.c/priority.c
  ea7c9e74bda402b1663a903b26400fab  libgomp/testsuite/libgomp.c/private-1.c
  a594cebdf052900dd0c8792068e14d85  libgomp/testsuite/libgomp.c/reduction-1.c
*************** f34e0c37442a4a7019dadca0b34ac11d  libgom
*** 69821,69826 ****
--- 70341,70347 ----
  2c2ab56c5741226dd3be35ac891385a6  libgomp/testsuite/libgomp.fortran/associate1.f90
  b4c15022416962dcec51efe75df665a7  libgomp/testsuite/libgomp.fortran/associate2.f90
  4a53fa8fb79d2d9f8e1498e0bc47f999  libgomp/testsuite/libgomp.fortran/associate3.f90
+ 0cf6fc87987dbd18ee6f54a20ad2c091  libgomp/testsuite/libgomp.fortran/atomic1.f90
  4d455a0a3b8e0006a359454c3fb17aec  libgomp/testsuite/libgomp.fortran/cancel-do-1.f90
  dd51543eb89b458e7a62739bd9e26d57  libgomp/testsuite/libgomp.fortran/cancel-do-2.f90
  7f4a53305903de225bc7d7bb581cb477  libgomp/testsuite/libgomp.fortran/cancel-parallel-1.f90
*************** ee7521ad4aa9a4706a403ccbc2d58f80  libgom
*** 70457,70463 ****
  ca78ca2ee2a528893865330c2b0d05bc  libgomp/testsuite/libgomp.oacc-fortran/subarrays-2.f90
  e8a3245c095430c8ef2413afe2ee4c48  libgomp/testsuite/libgomp.oacc-fortran/update-1.f90
  c67ec2e385386e9cd884ca6e2db70c96  libgomp/work.c
! 3ca1f762d3fcf50d35e5e2aa7518df2a  libhsail-rt/ChangeLog
  9147b482b39962a71e580b4a8265285e  libhsail-rt/Makefile.am
  a38674477ad0a784b375b84f710eb630  libhsail-rt/Makefile.in
  de97a355fadb5753d182cbcf06b1b33a  libhsail-rt/README
--- 70978,70984 ----
  ca78ca2ee2a528893865330c2b0d05bc  libgomp/testsuite/libgomp.oacc-fortran/subarrays-2.f90
  e8a3245c095430c8ef2413afe2ee4c48  libgomp/testsuite/libgomp.oacc-fortran/update-1.f90
  c67ec2e385386e9cd884ca6e2db70c96  libgomp/work.c
! 3a74498c146f6cca323f027256d53c1c  libhsail-rt/ChangeLog
  9147b482b39962a71e580b4a8265285e  libhsail-rt/Makefile.am
  a38674477ad0a784b375b84f710eb630  libhsail-rt/Makefile.in
  de97a355fadb5753d182cbcf06b1b33a  libhsail-rt/README
*************** cf2af200b91048d551f109843d246196  libhsa
*** 70484,70490 ****
  ef9f05873915c22cae79ef5545355353  libhsail-rt/target-config.h.in
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! bef9bd7a66030a5c682adf3ed9857cee  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  b7d09397fa5854702176b44d5620224c  libiberty/Makefile.in
  c68dbf7834af4281ebd84caa3fd54680  libiberty/README
--- 71005,71011 ----
  ef9f05873915c22cae79ef5545355353  libhsail-rt/target-config.h.in
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 2f36ddd07144d5ad74967cc7eefbdee6  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  b7d09397fa5854702176b44d5620224c  libiberty/Makefile.in
  c68dbf7834af4281ebd84caa3fd54680  libiberty/README
*************** d2fbd69c4dbaecd5d4ebdb169daee6a8  libibe
*** 70589,70595 ****
  284bb7a096480b355b75c337086220a2  libiberty/sigsetmask.c
  82761d9f6573203298572c35ae6a8d92  libiberty/simple-object-coff.c
  86c2b58dcbca0ddaa516e65b95e84ce1  libiberty/simple-object-common.h
! 37d33a83da9a8c0944417404c809f648  libiberty/simple-object-elf.c
  93dd698684effc8a4f33cd522941397d  libiberty/simple-object-mach-o.c
  8b384697dd6c0500a48a8deda57ab756  libiberty/simple-object-xcoff.c
  f483c26c131a53ee3dec5a5f4e7272d9  libiberty/simple-object.c
--- 71110,71116 ----
  284bb7a096480b355b75c337086220a2  libiberty/sigsetmask.c
  82761d9f6573203298572c35ae6a8d92  libiberty/simple-object-coff.c
  86c2b58dcbca0ddaa516e65b95e84ce1  libiberty/simple-object-common.h
! 63150cd353e99f4832cacdb8fb335367  libiberty/simple-object-elf.c
  93dd698684effc8a4f33cd522941397d  libiberty/simple-object-mach-o.c
  8b384697dd6c0500a48a8deda57ab756  libiberty/simple-object-xcoff.c
  f483c26c131a53ee3dec5a5f4e7272d9  libiberty/simple-object.c
*************** b2c289eb14e9197dcad172f3acba12b7  libibe
*** 70648,70654 ****
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  1c473960735644ebe9746b641c8fc08b  libiberty/xstrndup.c
  5c487ad9b00e5ed38ae0f00fc04f7463  libiberty/xvasprintf.c
! 91ad7eeb875b4f72987b78735ab6ea8d  libitm/ChangeLog
  f0841cbe677cca223ebc3864c6840fb3  libitm/Makefile.am
  e1255afd6132994f7f06afc4d668acc8  libitm/Makefile.in
  61fc1a86d6e23c6680a7d504a4f424d3  libitm/aatree.cc
--- 71169,71175 ----
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  1c473960735644ebe9746b641c8fc08b  libiberty/xstrndup.c
  5c487ad9b00e5ed38ae0f00fc04f7463  libiberty/xvasprintf.c
! 3b44c35cc69d4a0653427938ae1afcf9  libitm/ChangeLog
  f0841cbe677cca223ebc3864c6840fb3  libitm/Makefile.am
  e1255afd6132994f7f06afc4d668acc8  libitm/Makefile.in
  61fc1a86d6e23c6680a7d504a4f424d3  libitm/aatree.cc
*************** d158bc2daf89b4f087badcf1148937e6  libitm
*** 70691,70697 ****
  27ac1998f82c019272804ff36175661c  libitm/config/powerpc/target.h
  fc8320f2db766eeb3285280bf7e9847d  libitm/config/s390/sjlj.S
  4e9b2ba8f77bb3ba3bc50bae5687b84f  libitm/config/s390/target.h
! 54af1e24e8c388275cac131330420c7a  libitm/config/sh/sjlj.S
  93a74d9d8780e66998c35d4c7dc859b6  libitm/config/sh/target.h
  ef804fc5a94e57d0e7cb5304cb1d8b24  libitm/config/sparc/sjlj.S
  0d89c5d7efa71aba071c7a1a85b94907  libitm/config/sparc/target.h
--- 71212,71218 ----
  27ac1998f82c019272804ff36175661c  libitm/config/powerpc/target.h
  fc8320f2db766eeb3285280bf7e9847d  libitm/config/s390/sjlj.S
  4e9b2ba8f77bb3ba3bc50bae5687b84f  libitm/config/s390/target.h
! bb4b01fb330a967d0a001ea8dcdc766b  libitm/config/sh/sjlj.S
  93a74d9d8780e66998c35d4c7dc859b6  libitm/config/sh/target.h
  ef804fc5a94e57d0e7cb5304cb1d8b24  libitm/config/sparc/sjlj.S
  0d89c5d7efa71aba071c7a1a85b94907  libitm/config/sparc/target.h
*************** b4e503ecfdccc9f13da8f73eeb6f23a9  libitm
*** 70751,70757 ****
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
  5a07467ef2e51e7198096e55045bc668  libitm/useraction.cc
  ea804fc9b7f5665938cb44285cad0633  libitm/util.cc
! 15f11eadd6f413409d0c21582f82e045  libmpx/ChangeLog
  08c39b0de69ded1b0ec0d079e8ffa278  libmpx/Makefile.am
  dd63e64acaa22d5f260d305a19d7c84e  libmpx/Makefile.in
  59ba4807cf0f71eba4361c3be341ae58  libmpx/acinclude.m4
--- 71272,71278 ----
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
  5a07467ef2e51e7198096e55045bc668  libitm/useraction.cc
  ea804fc9b7f5665938cb44285cad0633  libitm/util.cc
! cb5bea23612c0c783a6784776a7f288d  libmpx/ChangeLog
  08c39b0de69ded1b0ec0d079e8ffa278  libmpx/Makefile.am
  dd63e64acaa22d5f260d305a19d7c84e  libmpx/Makefile.in
  59ba4807cf0f71eba4361c3be341ae58  libmpx/acinclude.m4
*************** d2fc1c363920a36ea4f3927fa646eab8  libmpx
*** 70774,70780 ****
  e7c62aca341ea472234d7cb0bc4af328  libmpx/mpxwrap/libmpxwrappers.map
  240daa7f37ceeb22e331595ac7363fe8  libmpx/mpxwrap/libtool-version
  84b2ae6cc72d1bc6af32bbf75fdf747b  libmpx/mpxwrap/mpx_wrappers.c
! c37a482476813f9e41e2acdf180ef176  libobjc/ChangeLog
  7d008332e098e2af6624d9758e85926f  libobjc/Makefile.in
  93d27f8450c569cd7cea0063fff63376  libobjc/NXConstStr.m
  45674d682d9d5737541bca6a0836270d  libobjc/Object.m
--- 71295,71301 ----
  e7c62aca341ea472234d7cb0bc4af328  libmpx/mpxwrap/libmpxwrappers.map
  240daa7f37ceeb22e331595ac7363fe8  libmpx/mpxwrap/libtool-version
  84b2ae6cc72d1bc6af32bbf75fdf747b  libmpx/mpxwrap/mpx_wrappers.c
! cdcc0a53558a043a19b9f9ede88b2ae8  libobjc/ChangeLog
  7d008332e098e2af6624d9758e85926f  libobjc/Makefile.in
  93d27f8450c569cd7cea0063fff63376  libobjc/NXConstStr.m
  45674d682d9d5737541bca6a0836270d  libobjc/Object.m
*************** f81efea7a2f6cf641b42ff3e410bbf9d  libobj
*** 70831,70837 ****
  66dcc830fd378f3cb8e075e37ac22af3  libobjc/selector.c
  0395b628d68612c1d62d72a0607b04b6  libobjc/sendmsg.c
  3bc9da57ef6f3dbcf87349c9c17c40b5  libobjc/thr.c
! d88e6824feae22f48cfc94d9321618d8  liboffloadmic/ChangeLog
  04abd6719c66f08c91fbd9f04b69d3f5  liboffloadmic/Makefile.am
  30b43aa8aba9a4769f58028e2f0424f7  liboffloadmic/Makefile.in
  49cb389d7dff64b95e25b4d7e85c7ecf  liboffloadmic/aclocal.m4
--- 71352,71358 ----
  66dcc830fd378f3cb8e075e37ac22af3  libobjc/selector.c
  0395b628d68612c1d62d72a0607b04b6  libobjc/sendmsg.c
  3bc9da57ef6f3dbcf87349c9c17c40b5  libobjc/thr.c
! 27f5ed228df886bbfd4cb4a3f61ee7d2  liboffloadmic/ChangeLog
  04abd6719c66f08c91fbd9f04b69d3f5  liboffloadmic/Makefile.am
  30b43aa8aba9a4769f58028e2f0424f7  liboffloadmic/Makefile.in
  49cb389d7dff64b95e25b4d7e85c7ecf  liboffloadmic/aclocal.m4
*************** b1def68202639bd452fb59aea3371fe4  liboff
*** 70920,70926 ****
  cc603cdf253cc686bfcee192bb7630df  liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c
  dff5c8575c49d6aa71e549b0fa021479  liboffloadmic/runtime/orsl-lite/version.txt
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! 81f5b09d81bf165f9ac08757e710af3e  libquadmath/ChangeLog
  31439f2092557562291450eceb31cd0f  libquadmath/Makefile.am
  eb6557055ad3027b4e6b039c86d570da  libquadmath/Makefile.in
  d9afbc1f1e04c7e461265ff9323cc6f4  libquadmath/acinclude.m4
--- 71441,71447 ----
  cc603cdf253cc686bfcee192bb7630df  liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c
  dff5c8575c49d6aa71e549b0fa021479  liboffloadmic/runtime/orsl-lite/version.txt
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! 1df96a9ff3279c0fba1a61e2601540d3  libquadmath/ChangeLog
  31439f2092557562291450eceb31cd0f  libquadmath/Makefile.am
  eb6557055ad3027b4e6b039c86d570da  libquadmath/Makefile.in
  d9afbc1f1e04c7e461265ff9323cc6f4  libquadmath/acinclude.m4
*************** e1960c6cccb78a5a2d60bdfe428c9d1b  libqua
*** 71044,71050 ****
  d2588a7f4e04e453e8926777100a5490  libquadmath/printf/submul_1.c
  9d08eb52806ffe1fdfcb466db72f6b1b  libquadmath/quadmath-imp.h
  50709da39971589779199b3433120e3e  libquadmath/quadmath-rounding-mode.h
! ac7ffb6b3b54d00b65c653d8207b9ed5  libquadmath/quadmath.h
  fc051f1b6573329e749733b661b30677  libquadmath/quadmath.map
  95a02a6553e7ab525a199590417d4af9  libquadmath/quadmath_weak.h
  e766022f8615b72cbc38335d262e9d3d  libquadmath/strtod/grouping.h
--- 71565,71571 ----
  d2588a7f4e04e453e8926777100a5490  libquadmath/printf/submul_1.c
  9d08eb52806ffe1fdfcb466db72f6b1b  libquadmath/quadmath-imp.h
  50709da39971589779199b3433120e3e  libquadmath/quadmath-rounding-mode.h
! 6656317fe45e1ed0025877f456cfcf1b  libquadmath/quadmath.h
  fc051f1b6573329e749733b661b30677  libquadmath/quadmath.map
  95a02a6553e7ab525a199590417d4af9  libquadmath/quadmath_weak.h
  e766022f8615b72cbc38335d262e9d3d  libquadmath/strtod/grouping.h
*************** e766022f8615b72cbc38335d262e9d3d  libqua
*** 71052,71058 ****
  a81cc82679e80c86cfbd5575867450d0  libquadmath/strtod/strtod_l.c
  da808e110fc09ebd41ebd405790a70df  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
! 85eaf866d58177e5328068c54a2ab78c  libsanitizer/ChangeLog
  c5b0b63dd90ad073654139697e69d009  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  f11d8e68ccf5dbd2281333342f0cea86  libsanitizer/LOCAL_PATCHES
--- 71573,71579 ----
  a81cc82679e80c86cfbd5575867450d0  libquadmath/strtod/strtod_l.c
  da808e110fc09ebd41ebd405790a70df  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
! 30b55ecbce5b36154bf0d5a9eed3eaa0  libsanitizer/ChangeLog
  c5b0b63dd90ad073654139697e69d009  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  f11d8e68ccf5dbd2281333342f0cea86  libsanitizer/LOCAL_PATCHES
*************** ba863cde49bfd0852ac8471c23fff987  libsan
*** 71271,71278 ****
  12e351892dc0c5187a76637811e4fe78  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
  bf83351f76a21b8e31a7b0ddb90d4f25  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cc
  6f015933e239a9b36914e7fef5350cb5  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
! 91e6a839321ad7efc8d499cec67d69dc  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
! 5014bd63f0884ec761d7a9531521fe1b  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
  cb36de7c4a74dc34a8c607ba59d67421  libsanitizer/sanitizer_common/sanitizer_posix.cc
  e14dd858b7329762ae6f0903a60bf243  libsanitizer/sanitizer_common/sanitizer_posix.h
  ef33962167fb3a32a0c968bf2cf8ae44  libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc
--- 71792,71799 ----
  12e351892dc0c5187a76637811e4fe78  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
  bf83351f76a21b8e31a7b0ddb90d4f25  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cc
  6f015933e239a9b36914e7fef5350cb5  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
! 9afcfcca97d088141aca58d3cc2c17db  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
! a097fa15a6c35b297bb9ad1eaacfb918  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
  cb36de7c4a74dc34a8c607ba59d67421  libsanitizer/sanitizer_common/sanitizer_posix.cc
  e14dd858b7329762ae6f0903a60bf243  libsanitizer/sanitizer_common/sanitizer_posix.h
  ef33962167fb3a32a0c968bf2cf8ae44  libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc
*************** c5879d18c940a4f39d0fa273fd180cec  libsan
*** 71426,71432 ****
  46e3b6415e85a8bbfc9c5ea5256eba29  libsanitizer/ubsan/ubsan_win_dll_thunk.cc
  a42bfadb27dcd986b87e4c05b987ec4f  libsanitizer/ubsan/ubsan_win_dynamic_runtime_thunk.cc
  fbe131ba54e0deb0af35869b10c45e4a  libsanitizer/ubsan/ubsan_win_weak_interception.cc
! c934970cb657c0dc63e394e43ce0893e  libssp/ChangeLog
  2fbb6d42c9219e5a15363976ae7ba49e  libssp/Makefile.am
  b0a50bbb91d3f61cc74b49b8b438feda  libssp/Makefile.in
  3f58b0fe2019cd8e6090e6d5d51d233e  libssp/aclocal.m4
--- 71947,71953 ----
  46e3b6415e85a8bbfc9c5ea5256eba29  libsanitizer/ubsan/ubsan_win_dll_thunk.cc
  a42bfadb27dcd986b87e4c05b987ec4f  libsanitizer/ubsan/ubsan_win_dynamic_runtime_thunk.cc
  fbe131ba54e0deb0af35869b10c45e4a  libsanitizer/ubsan/ubsan_win_weak_interception.cc
! 65d9504e75cf1be2e4f4e7e5ab9d40b5  libssp/ChangeLog
  2fbb6d42c9219e5a15363976ae7ba49e  libssp/Makefile.am
  b0a50bbb91d3f61cc74b49b8b438feda  libssp/Makefile.in
  3f58b0fe2019cd8e6090e6d5d51d233e  libssp/aclocal.m4
*************** d039df3e0460a3ce2b6abaa4400e2119  libssp
*** 71455,71461 ****
  7c46bef1a3dc65ab5b4618934d31d669  libssp/strncpy-chk.c
  760e66133a54c359be987217ce04682b  libssp/vsnprintf-chk.c
  09019d4ee8eb193fa49db0552d95d655  libssp/vsprintf-chk.c
! 38289c9d65ca5f386d25cc96acedf6ba  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 71976,71982 ----
  7c46bef1a3dc65ab5b4618934d31d669  libssp/strncpy-chk.c
  760e66133a54c359be987217ce04682b  libssp/vsnprintf-chk.c
  09019d4ee8eb193fa49db0552d95d655  libssp/vsprintf-chk.c
! 20354a64d2f97f17afc9d3b04f473b56  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** b331fae97e334afde1bd5fa125610458  libstd
*** 71477,71487 ****
  7bafaec51877b01c0fa5a1c20b004559  libstdc++-v3/ChangeLog-2016
  ced62eb7e4ae82690abb361aefcea876  libstdc++-v3/ChangeLog-2017
  880a8ed9312c3d9bbe45d15bdbd7c540  libstdc++-v3/Makefile.am
! b2454ab35b74b502f57f8b441b533f05  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 0de3e35634cddecd9a98ce1b3b240b42  libstdc++-v3/acinclude.m4
  2a88f1fcc47abc6e54fb44954da2919a  libstdc++-v3/aclocal.m4
! 87fbeac1c46b6e1f23aa3f0066fef94f  libstdc++-v3/config.h.in
  d8ee8534629ad067e967bc0a0a30a4f5  libstdc++-v3/config/abi/compatibility.h
  b4bb5d911464a4e5ce4e8d2fbde122b5  libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
  f5bfb76447e675a88fa1dbb27d052e72  libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
--- 71998,72008 ----
  7bafaec51877b01c0fa5a1c20b004559  libstdc++-v3/ChangeLog-2016
  ced62eb7e4ae82690abb361aefcea876  libstdc++-v3/ChangeLog-2017
  880a8ed9312c3d9bbe45d15bdbd7c540  libstdc++-v3/Makefile.am
! 4a11534587dfd46e34df85d46cffacc3  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 43446d458a3c26875a73a6a5837cd97c  libstdc++-v3/acinclude.m4
  2a88f1fcc47abc6e54fb44954da2919a  libstdc++-v3/aclocal.m4
! 452c1b32d3e4b9ac04aaea9528008998  libstdc++-v3/config.h.in
  d8ee8534629ad067e967bc0a0a30a4f5  libstdc++-v3/config/abi/compatibility.h
  b4bb5d911464a4e5ce4e8d2fbde122b5  libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
  f5bfb76447e675a88fa1dbb27d052e72  libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
*************** b340310bcafdb96731e994002e89ae1d  libstd
*** 71600,71606 ****
  e3a2165e12fb7d45c8b29b0ad54160e2  libstdc++-v3/config/os/bsd/darwin/ctype_configure_char.cc
  fb34842d90928c4410e9069a4b9b05d4  libstdc++-v3/config/os/bsd/darwin/ctype_inline.h
  84facc9314919abcf0d9a74786c7e9ca  libstdc++-v3/config/os/bsd/darwin/os_defines.h
! 96acc6c320b15094b860bd727d99a90f  libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver
  8dc8e1c026e08e8584d4c932710ba2bf  libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h
  c3906565fd05f5eaff287781db2b7790  libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc
  7cbe6f8482d1c579c1a27322f08164a2  libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h
--- 72121,72127 ----
  e3a2165e12fb7d45c8b29b0ad54160e2  libstdc++-v3/config/os/bsd/darwin/ctype_configure_char.cc
  fb34842d90928c4410e9069a4b9b05d4  libstdc++-v3/config/os/bsd/darwin/ctype_inline.h
  84facc9314919abcf0d9a74786c7e9ca  libstdc++-v3/config/os/bsd/darwin/os_defines.h
! 64eaf8f8fdcbdbe03f5e656342cb13dc  libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver
  8dc8e1c026e08e8584d4c932710ba2bf  libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h
  c3906565fd05f5eaff287781db2b7790  libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc
  7cbe6f8482d1c579c1a27322f08164a2  libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h
*************** f1a91225f9eb6e6ad04e3b1950bfecc5  libstd
*** 71671,71682 ****
  48d9e86ad4ef42901bd75da6d033735d  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  69b3ded0fef25251ec3cc455c63ccb35  libstdc++-v3/config/os/vxworks/ctype_inline.h
  9ab732d9a797dc9f1e4b3737a660a811  libstdc++-v3/config/os/vxworks/os_defines.h
! a30626827cfc39ca916f92f9ad9f265a  libstdc++-v3/configure
! 2dc4794c156921badcc27653de5e01c3  libstdc++-v3/configure.ac
  011a5e201f8d9c1d58f79a6e76f94900  libstdc++-v3/configure.host
  f4237aa0d451589ec49f489c2f4a3d26  libstdc++-v3/crossconfig.m4
! a73416d547c6e45dc617080622b99327  libstdc++-v3/doc/Makefile.am
! e336a04070b2b4a61b3eab18b428e7b9  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
  52a6a337155d5af357625d178eca46b8  libstdc++-v3/doc/doxygen/doxygroups.cc
  520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
--- 72192,72203 ----
  48d9e86ad4ef42901bd75da6d033735d  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  69b3ded0fef25251ec3cc455c63ccb35  libstdc++-v3/config/os/vxworks/ctype_inline.h
  9ab732d9a797dc9f1e4b3737a660a811  libstdc++-v3/config/os/vxworks/os_defines.h
! 4306eed0b221872faa90f82dba904600  libstdc++-v3/configure
! 72e4890e69e80c885b055559df8d5545  libstdc++-v3/configure.ac
  011a5e201f8d9c1d58f79a6e76f94900  libstdc++-v3/configure.host
  f4237aa0d451589ec49f489c2f4a3d26  libstdc++-v3/crossconfig.m4
! 31981bd8fa960e039dc88ae3619aa496  libstdc++-v3/doc/Makefile.am
! 5caa6d645187727a7029f62582fe9371  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
  52a6a337155d5af357625d178eca46b8  libstdc++-v3/doc/doxygen/doxygroups.cc
  520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
*************** ee599e042e0ab46c3d78dd8675b8ba7f  libstd
*** 71687,71693 ****
  edf4fe529876f5d89b6d9b73fe2569dc  libstdc++-v3/doc/html/api.html
  fd168dc2b2d0c12b1e17b40ffec96390  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! bb09d30aca2fbea5a1c4cc2d0f1ccf1b  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
--- 72208,72214 ----
  edf4fe529876f5d89b6d9b73fe2569dc  libstdc++-v3/doc/html/api.html
  fd168dc2b2d0c12b1e17b40ffec96390  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! 1d6878273835d3cad196580169aa5f42  libstdc++-v3/doc/html/faq.html
  1ae70f0bf94464b036515d333fff8ab2  libstdc++-v3/doc/html/images/confdeps.png
  d7f63b43e9f4c39cf71de7585de522ee  libstdc++-v3/doc/html/images/pbds_balls_and_bins.png
  22eedc841676a98f8ae8b95131ac4d7e  libstdc++-v3/doc/html/images/pbds_binary_priority_queue_int_push.png
*************** d7249eb4d31bd107d0b09ea3c80cb723  libstd
*** 71767,71778 ****
  1d86b338a316806c80b250eb132ac6dd  libstdc++-v3/doc/html/images/pbds_tree_text_lor_find.png
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
! 1e18c95592576257635f20334f859574  libstdc++-v3/doc/html/index.html
  52a798524b2b09bcf01d7715562cb609  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
! 398b32669587014a18d6aaf46f12c664  libstdc++-v3/doc/html/manual/api.html
  54dd1e43f1bd7c3e8db1a59012fff57d  libstdc++-v3/doc/html/manual/appendix.html
! 2e203459294270410e5c5c7c6dca5cd5  libstdc++-v3/doc/html/manual/appendix_contributing.html
  0b45d6195986f5092b2354c1f678a790  libstdc++-v3/doc/html/manual/appendix_free.html
  31b030eb32be4f6fa6ea75f183787741  libstdc++-v3/doc/html/manual/appendix_gfdl.html
  6f716660c6221f5daa1a8841e82d3f97  libstdc++-v3/doc/html/manual/appendix_gpl.html
--- 72288,72299 ----
  1d86b338a316806c80b250eb132ac6dd  libstdc++-v3/doc/html/images/pbds_tree_text_lor_find.png
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
! 3f37debbdfaf68920cfd09ade2778e62  libstdc++-v3/doc/html/index.html
  52a798524b2b09bcf01d7715562cb609  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
! 53e7bcd18f9ae12f54c63412fa0d3193  libstdc++-v3/doc/html/manual/api.html
  54dd1e43f1bd7c3e8db1a59012fff57d  libstdc++-v3/doc/html/manual/appendix.html
! fd7e395b897066e7d5a445e73654946e  libstdc++-v3/doc/html/manual/appendix_contributing.html
  0b45d6195986f5092b2354c1f678a790  libstdc++-v3/doc/html/manual/appendix_free.html
  31b030eb32be4f6fa6ea75f183787741  libstdc++-v3/doc/html/manual/appendix_gfdl.html
  6f716660c6221f5daa1a8841e82d3f97  libstdc++-v3/doc/html/manual/appendix_gpl.html
*************** b8ac9fc2f2cfcaed0450c79e2fb01569  libstd
*** 71782,71800 ****
  5861d1e084df31a36567b1e081c3deab  libstdc++-v3/doc/html/manual/backwards.html
  eed66bf6108dd329e892b6e813b80906  libstdc++-v3/doc/html/manual/bitmap_allocator.html
  9492db633acbfab53feaff0b37361e68  libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
! 617d14df4ed322e4e385a561514b8703  libstdc++-v3/doc/html/manual/bugs.html
  cc3700f2fde50987f186f23abf98a7b1  libstdc++-v3/doc/html/manual/concept_checking.html
  f3a54a6315d716742603d33f454f2c19  libstdc++-v3/doc/html/manual/concurrency.html
  ef792a711c76c67c86fc2fa8174c2980  libstdc++-v3/doc/html/manual/configure.html
  4bccee4ac05257d0c5dfc90aeee91604  libstdc++-v3/doc/html/manual/containers.html
  c7e40c1085e414b3b4d5896db4013205  libstdc++-v3/doc/html/manual/containers_and_c.html
! 012dc3d3a4e5423c2fba69d5a3949d93  libstdc++-v3/doc/html/manual/debug.html
  1bd34529d162b6f3a08d5f2ea4943c6a  libstdc++-v3/doc/html/manual/debug_mode.html
  1cdde24f16865575b93bcb86156f70e5  libstdc++-v3/doc/html/manual/debug_mode_design.html
  fc2f4ac9d9c05ca8c4dce6b46e259f97  libstdc++-v3/doc/html/manual/debug_mode_semantics.html
  33325138d9fa5d5628cdb1dd11cdef77  libstdc++-v3/doc/html/manual/debug_mode_using.html
  7bcc35e818f9360d10ecfe70e4dedcc0  libstdc++-v3/doc/html/manual/diagnostics.html
! 5d2be4d0f89a3d3eecb4938446c14d0d  libstdc++-v3/doc/html/manual/documentation_hacking.html
  c472d3d333cea10a613a5177af5b053a  libstdc++-v3/doc/html/manual/dynamic_memory.html
  55666dfa05ec7aae2596d6968f6fdb38  libstdc++-v3/doc/html/manual/errno.html
  f5df2458b52ebaa400811787cbf348fa  libstdc++-v3/doc/html/manual/ext_algorithms.html
--- 72303,72321 ----
  5861d1e084df31a36567b1e081c3deab  libstdc++-v3/doc/html/manual/backwards.html
  eed66bf6108dd329e892b6e813b80906  libstdc++-v3/doc/html/manual/bitmap_allocator.html
  9492db633acbfab53feaff0b37361e68  libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
! 1eb6c197cbe4bdf5207bb356fb05e3a7  libstdc++-v3/doc/html/manual/bugs.html
  cc3700f2fde50987f186f23abf98a7b1  libstdc++-v3/doc/html/manual/concept_checking.html
  f3a54a6315d716742603d33f454f2c19  libstdc++-v3/doc/html/manual/concurrency.html
  ef792a711c76c67c86fc2fa8174c2980  libstdc++-v3/doc/html/manual/configure.html
  4bccee4ac05257d0c5dfc90aeee91604  libstdc++-v3/doc/html/manual/containers.html
  c7e40c1085e414b3b4d5896db4013205  libstdc++-v3/doc/html/manual/containers_and_c.html
! a408b4344cc2b3b611b51146c0bab9a9  libstdc++-v3/doc/html/manual/debug.html
  1bd34529d162b6f3a08d5f2ea4943c6a  libstdc++-v3/doc/html/manual/debug_mode.html
  1cdde24f16865575b93bcb86156f70e5  libstdc++-v3/doc/html/manual/debug_mode_design.html
  fc2f4ac9d9c05ca8c4dce6b46e259f97  libstdc++-v3/doc/html/manual/debug_mode_semantics.html
  33325138d9fa5d5628cdb1dd11cdef77  libstdc++-v3/doc/html/manual/debug_mode_using.html
  7bcc35e818f9360d10ecfe70e4dedcc0  libstdc++-v3/doc/html/manual/diagnostics.html
! b1d4fb4eeb86d59b38cb63212d07818d  libstdc++-v3/doc/html/manual/documentation_hacking.html
  c472d3d333cea10a613a5177af5b053a  libstdc++-v3/doc/html/manual/dynamic_memory.html
  55666dfa05ec7aae2596d6968f6fdb38  libstdc++-v3/doc/html/manual/errno.html
  f5df2458b52ebaa400811787cbf348fa  libstdc++-v3/doc/html/manual/ext_algorithms.html
*************** cf360e652a99b60dfce0e335b47297ed  libstd
*** 71814,71829 ****
  33d3eb7f9e6575fa00d986ec17944e53  libstdc++-v3/doc/html/manual/facets.html
  9b06f8b16b4ba69e1269f98bb22377f2  libstdc++-v3/doc/html/manual/fstreams.html
  b404abb1e78a27e8a8980eb14ec27bab  libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
! acb39f8542b4e2f3cc728f2eb4d5b033  libstdc++-v3/doc/html/manual/index.html
  8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
! c7ffc4ff6594f9e3dfeec284f8f782bd  libstdc++-v3/doc/html/manual/intro.html
  46de5aefef02b8c599fc816bea53ae67  libstdc++-v3/doc/html/manual/io.html
  371c9928b1459cd70fcfc48407cf26cd  libstdc++-v3/doc/html/manual/io_and_c.html
  32f6d6929349f8f96de44fbdd842ed48  libstdc++-v3/doc/html/manual/iterators.html
  ae9b2e57903953c857a0a2314010036c  libstdc++-v3/doc/html/manual/license.html
  69cfb7ea1d69c38e3d673ba9f4a7c3ba  libstdc++-v3/doc/html/manual/localization.html
  9d7282a3a92209b987a91b15973414af  libstdc++-v3/doc/html/manual/make.html
! 3b674a669ec6dd2e0ead0f69e70b7e3e  libstdc++-v3/doc/html/manual/memory.html
  4970f8a0270bd70ee4f48d19c4782afc  libstdc++-v3/doc/html/manual/mt_allocator.html
  0ade9da6c1a80afa0f9e498caea2faf9  libstdc++-v3/doc/html/manual/mt_allocator_design.html
  6cedc0933aa9ffe31dbea517db997b9e  libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html
--- 72335,72350 ----
  33d3eb7f9e6575fa00d986ec17944e53  libstdc++-v3/doc/html/manual/facets.html
  9b06f8b16b4ba69e1269f98bb22377f2  libstdc++-v3/doc/html/manual/fstreams.html
  b404abb1e78a27e8a8980eb14ec27bab  libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
! bc780181f389c6b3d6df1d6db2eed1db  libstdc++-v3/doc/html/manual/index.html
  8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
! 3075a7173dc7bc563de7d38c3ad573e3  libstdc++-v3/doc/html/manual/intro.html
  46de5aefef02b8c599fc816bea53ae67  libstdc++-v3/doc/html/manual/io.html
  371c9928b1459cd70fcfc48407cf26cd  libstdc++-v3/doc/html/manual/io_and_c.html
  32f6d6929349f8f96de44fbdd842ed48  libstdc++-v3/doc/html/manual/iterators.html
  ae9b2e57903953c857a0a2314010036c  libstdc++-v3/doc/html/manual/license.html
  69cfb7ea1d69c38e3d673ba9f4a7c3ba  libstdc++-v3/doc/html/manual/localization.html
  9d7282a3a92209b987a91b15973414af  libstdc++-v3/doc/html/manual/make.html
! c3177ad892394c3c73d9031f9dfdf2de  libstdc++-v3/doc/html/manual/memory.html
  4970f8a0270bd70ee4f48d19c4782afc  libstdc++-v3/doc/html/manual/mt_allocator.html
  0ade9da6c1a80afa0f9e498caea2faf9  libstdc++-v3/doc/html/manual/mt_allocator_design.html
  6cedc0933aa9ffe31dbea517db997b9e  libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html
*************** dc012f6bbeb24332ca023dc15d6da9cf  libstd
*** 71853,71859 ****
  94a606d009c84c4160e2b0557563c305  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  f87298c8974ee33f2519348430b786ae  libstdc++-v3/doc/html/manual/source_organization.html
! 03fea86a208c4262035bf9dbde66db33  libstdc++-v3/doc/html/manual/status.html
  9e6cce6bed38f62648e12eb77363d1fc  libstdc++-v3/doc/html/manual/std_contents.html
  dbb5f81a9e8864374fbb835eaa4e8b0d  libstdc++-v3/doc/html/manual/streambufs.html
  47e6a6ef4752e7c7e3ecb2a4948a7514  libstdc++-v3/doc/html/manual/strings.html
--- 72374,72380 ----
  94a606d009c84c4160e2b0557563c305  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  f87298c8974ee33f2519348430b786ae  libstdc++-v3/doc/html/manual/source_organization.html
! 1db2f93b4d29e46b97b3de3269410c2c  libstdc++-v3/doc/html/manual/status.html
  9e6cce6bed38f62648e12eb77363d1fc  libstdc++-v3/doc/html/manual/std_contents.html
  dbb5f81a9e8864374fbb835eaa4e8b0d  libstdc++-v3/doc/html/manual/streambufs.html
  47e6a6ef4752e7c7e3ecb2a4948a7514  libstdc++-v3/doc/html/manual/strings.html
*************** d8ac0a9de0b3b518111ccdd44d818898  libstd
*** 71863,71875 ****
  4a391d50650e0936164a93b67285659a  libstdc++-v3/doc/html/manual/test.html
  c39b927efcec5ac84139c1490c8ef320  libstdc++-v3/doc/html/manual/traits.html
  530b96535baacfe35df2e65f9dfe7efc  libstdc++-v3/doc/html/manual/unordered_associative.html
! 32ec434b69d695939737049fe27503d8  libstdc++-v3/doc/html/manual/using.html
  4738b5033faff66c317159aea346263a  libstdc++-v3/doc/html/manual/using_concurrency.html
  79fb9de4a4c89a913a76e1828500499d  libstdc++-v3/doc/html/manual/using_dual_abi.html
  4868e3591133577974ca85a537dbd8a0  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
  3f1b2fcb0f6064ea3b698623f2b6a79a  libstdc++-v3/doc/html/manual/using_exceptions.html
  285c6675e034c05d5dc06a6adb81ce0a  libstdc++-v3/doc/html/manual/using_headers.html
! 842198c1e138c0f4d83ceb71239f3f83  libstdc++-v3/doc/html/manual/using_macros.html
  ccc3b1a320ccc49a977c80546610195b  libstdc++-v3/doc/html/manual/using_namespaces.html
  d881fcffb799c09a28d8174ccb1326a2  libstdc++-v3/doc/html/manual/utilities.html
  1453b0f54e347d9a8b835f76b3566678  libstdc++-v3/doc/xml/api.xml
--- 72384,72396 ----
  4a391d50650e0936164a93b67285659a  libstdc++-v3/doc/html/manual/test.html
  c39b927efcec5ac84139c1490c8ef320  libstdc++-v3/doc/html/manual/traits.html
  530b96535baacfe35df2e65f9dfe7efc  libstdc++-v3/doc/html/manual/unordered_associative.html
! d6aa1435948dab765630f0f1a0c5a539  libstdc++-v3/doc/html/manual/using.html
  4738b5033faff66c317159aea346263a  libstdc++-v3/doc/html/manual/using_concurrency.html
  79fb9de4a4c89a913a76e1828500499d  libstdc++-v3/doc/html/manual/using_dual_abi.html
  4868e3591133577974ca85a537dbd8a0  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
  3f1b2fcb0f6064ea3b698623f2b6a79a  libstdc++-v3/doc/html/manual/using_exceptions.html
  285c6675e034c05d5dc06a6adb81ce0a  libstdc++-v3/doc/html/manual/using_headers.html
! 40287e92698ce05919d5df2d4048ae4a  libstdc++-v3/doc/html/manual/using_macros.html
  ccc3b1a320ccc49a977c80546610195b  libstdc++-v3/doc/html/manual/using_namespaces.html
  d881fcffb799c09a28d8174ccb1326a2  libstdc++-v3/doc/html/manual/utilities.html
  1453b0f54e347d9a8b835f76b3566678  libstdc++-v3/doc/xml/api.xml
*************** d881fcffb799c09a28d8174ccb1326a2  libstd
*** 71877,71883 ****
  f5a41d4f7585b850b3182fc5f4888f93  libstdc++-v3/doc/xml/book.txml
  95d1335e76860d53246f3e400231ec38  libstdc++-v3/doc/xml/chapter.txml
  7f8c520dc83013026c671c5c342f73e2  libstdc++-v3/doc/xml/class.txml
! 562b1a6a1588ee3cb0962b635b88ec57  libstdc++-v3/doc/xml/faq.xml
  0408e04957d20fcb2a1048c482230ec0  libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
  df4574d04d7f029398ab0183832017b6  libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
  18a6390297702ec8fd75cbcc525d2005  libstdc++-v3/doc/xml/images/confdeps.dot
--- 72398,72404 ----
  f5a41d4f7585b850b3182fc5f4888f93  libstdc++-v3/doc/xml/book.txml
  95d1335e76860d53246f3e400231ec38  libstdc++-v3/doc/xml/chapter.txml
  7f8c520dc83013026c671c5c342f73e2  libstdc++-v3/doc/xml/class.txml
! 898d8d638c878045b8e5910dd2490fbd  libstdc++-v3/doc/xml/faq.xml
  0408e04957d20fcb2a1048c482230ec0  libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
  df4574d04d7f029398ab0183832017b6  libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
  18a6390297702ec8fd75cbcc525d2005  libstdc++-v3/doc/xml/images/confdeps.dot
*************** f63bfdc03ba2b82c74864f02206d7c52  libstd
*** 72059,72066 ****
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png
  e62e6443c3944d0bf1096caa89a8afd5  libstdc++-v3/doc/xml/manual/abi.xml
  6a68f07a8b8abd9e65846432ed52d646  libstdc++-v3/doc/xml/manual/algorithms.xml
! b34d89b4b055b80aa37e1a235b78e48a  libstdc++-v3/doc/xml/manual/allocator.xml
! b06c7d4934846623f43ca218d68492c7  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
  2de6516b70a1010a37be27c15ddf0a51  libstdc++-v3/doc/xml/manual/appendix_free.xml
  fddfbac311009ebd3056c4edd7ee522a  libstdc++-v3/doc/xml/manual/appendix_porting.xml
  e0b6ea09e982758f8a79d0d165939943  libstdc++-v3/doc/xml/manual/atomics.xml
--- 72580,72587 ----
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png
  e62e6443c3944d0bf1096caa89a8afd5  libstdc++-v3/doc/xml/manual/abi.xml
  6a68f07a8b8abd9e65846432ed52d646  libstdc++-v3/doc/xml/manual/algorithms.xml
! 982605b324ce3fea88249425bd91cb27  libstdc++-v3/doc/xml/manual/allocator.xml
! 7118d1ee7ac88107708c3feaedcf0475  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
  2de6516b70a1010a37be27c15ddf0a51  libstdc++-v3/doc/xml/manual/appendix_free.xml
  fddfbac311009ebd3056c4edd7ee522a  libstdc++-v3/doc/xml/manual/appendix_porting.xml
  e0b6ea09e982758f8a79d0d165939943  libstdc++-v3/doc/xml/manual/atomics.xml
*************** e0b6ea09e982758f8a79d0d165939943  libstd
*** 72074,72087 ****
  f13297d479322bdb5fffc34f5fb1c5c8  libstdc++-v3/doc/xml/manual/configure.xml
  139c2ae43b623fb7b87cb11a75145b74  libstdc++-v3/doc/xml/manual/containers.xml
  35d8bc77747044001636800a86dbac24  libstdc++-v3/doc/xml/manual/ctype.xml
! e7a9590bfa29f2842a602c7d9281e8df  libstdc++-v3/doc/xml/manual/debug.xml
  c2b5fe8f3aba75d63e43dedc1c66c9a1  libstdc++-v3/doc/xml/manual/debug_mode.xml
  f0323e43ff8fc1ca28dcdfae61b6cb19  libstdc++-v3/doc/xml/manual/diagnostics.xml
! b7c5460dc18afa7e663f7540ff0183c3  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
! b0d87530af583d9830a22217a8b95ec6  libstdc++-v3/doc/xml/manual/evolution.xml
  7744489eb14a334faa20ba3a6f3ab6eb  libstdc++-v3/doc/xml/manual/extensions.xml
  26083dec441281888a23365de5567180  libstdc++-v3/doc/xml/manual/internals.xml
! e948a4e814706e8a1cf2678e8685d24b  libstdc++-v3/doc/xml/manual/intro.xml
  82d01f11ebf848dc64a611a829ef5a38  libstdc++-v3/doc/xml/manual/io.xml
  bab548248426e0e90cdc1436ff5b87de  libstdc++-v3/doc/xml/manual/iterators.xml
  5d3e282d89ac0af0f7752f88466a9d39  libstdc++-v3/doc/xml/manual/locale.xml
--- 72595,72608 ----
  f13297d479322bdb5fffc34f5fb1c5c8  libstdc++-v3/doc/xml/manual/configure.xml
  139c2ae43b623fb7b87cb11a75145b74  libstdc++-v3/doc/xml/manual/containers.xml
  35d8bc77747044001636800a86dbac24  libstdc++-v3/doc/xml/manual/ctype.xml
! 4906f9b3ace8b160c77a6f2fe898b2d7  libstdc++-v3/doc/xml/manual/debug.xml
  c2b5fe8f3aba75d63e43dedc1c66c9a1  libstdc++-v3/doc/xml/manual/debug_mode.xml
  f0323e43ff8fc1ca28dcdfae61b6cb19  libstdc++-v3/doc/xml/manual/diagnostics.xml
! d984a744ab516d20830812d56b9016b1  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
! 6ab875936288100809d417afc1b3a52e  libstdc++-v3/doc/xml/manual/evolution.xml
  7744489eb14a334faa20ba3a6f3ab6eb  libstdc++-v3/doc/xml/manual/extensions.xml
  26083dec441281888a23365de5567180  libstdc++-v3/doc/xml/manual/internals.xml
! 9f6a7d6b431dab6fca59f7e7b4332cb6  libstdc++-v3/doc/xml/manual/intro.xml
  82d01f11ebf848dc64a611a829ef5a38  libstdc++-v3/doc/xml/manual/io.xml
  bab548248426e0e90cdc1436ff5b87de  libstdc++-v3/doc/xml/manual/iterators.xml
  5d3e282d89ac0af0f7752f88466a9d39  libstdc++-v3/doc/xml/manual/locale.xml
*************** e2b6426957c60c385c84e7b5143089ce  libstd
*** 72094,72120 ****
  f5a9e21e4b5cd0ffa74991fccf970f9a  libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml
  4e49a8e041ae187579c7683d4b840fc4  libstdc++-v3/doc/xml/manual/prerequisites.xml
  5cca2fce9e94a0243e546e0c59792f87  libstdc++-v3/doc/xml/manual/profile_mode.xml
! d86ab4ddaebc9752d3a71f23cc8879cb  libstdc++-v3/doc/xml/manual/shared_ptr.xml
! b9249e4e0a9c66b4d575b78ae1000432  libstdc++-v3/doc/xml/manual/spine.xml
! dbbc0a4ffa7e564eb59e5595a11a7511  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
! 3859d81c49dcfa127c564d5070831837  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
! ab2024fae49f12d36b19759a519a671e  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
! e21501333f0942ffb6c2247520601bfd  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
  3c72998c4574690fac280c058a0db757  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
! 0328d8bf2d7935051ce9dc880ef63b6d  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
! 716409ea4f3fdc47d1b88cc8ac63b392  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
  1ea4904f13ba196db9689534b653622f  libstdc++-v3/doc/xml/manual/strings.xml
  c564c4399f854273d5814b3c57d3d591  libstdc++-v3/doc/xml/manual/support.xml
  ba5b083d25092e77bbb681596ab0b11b  libstdc++-v3/doc/xml/manual/test.xml
  b3e6db24172a20bdef96a05a3ea26101  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
! d1df6cf8566e0849b93ef09d379f44ba  libstdc++-v3/doc/xml/manual/using.xml
  cc84d1c1a7a9491f46a3e463fcd8aa26  libstdc++-v3/doc/xml/manual/using_exceptions.xml
  43b751639aa82dbcd414b6c628beefac  libstdc++-v3/doc/xml/manual/utilities.xml
  e4b5f6193fcb7008a4f52448e594cd82  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  fa0fbb589f8e3959f474ba45b0758902  libstdc++-v3/fragment.am
! bb5466e8fc887cf49e367453bdf67793  libstdc++-v3/include/Makefile.am
! 8476bdbc86d6a16f08562ac91884fbea  libstdc++-v3/include/Makefile.in
  824b6f034ff0dc823441ea8a5102c218  libstdc++-v3/include/backward/auto_ptr.h
  3173cd6674451da5a8446b58212eac46  libstdc++-v3/include/backward/backward_warning.h
  c6390a6ec1f7ad8a28676a016a710ea9  libstdc++-v3/include/backward/binders.h
--- 72615,72641 ----
  f5a9e21e4b5cd0ffa74991fccf970f9a  libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml
  4e49a8e041ae187579c7683d4b840fc4  libstdc++-v3/doc/xml/manual/prerequisites.xml
  5cca2fce9e94a0243e546e0c59792f87  libstdc++-v3/doc/xml/manual/profile_mode.xml
! d006612b2e21ab181c25bc88697b4543  libstdc++-v3/doc/xml/manual/shared_ptr.xml
! 4fa9d6b0b90d56a3b6ae65a55acee46f  libstdc++-v3/doc/xml/manual/spine.xml
! 877f5d6cbc888f6bf7380de2df7fff0b  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
! 13589b3b7a8153fae2bc5778a839b8f6  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
! 10b9b8546c822fa0cf6546ff3d2fe0f9  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
! d971f2134692eecf360d3a232f5a20e8  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
  3c72998c4574690fac280c058a0db757  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
! b58a95c04b6624c679274ee4dc65f792  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
! 9ef471042d64693d26c5564a6fd62c95  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
  1ea4904f13ba196db9689534b653622f  libstdc++-v3/doc/xml/manual/strings.xml
  c564c4399f854273d5814b3c57d3d591  libstdc++-v3/doc/xml/manual/support.xml
  ba5b083d25092e77bbb681596ab0b11b  libstdc++-v3/doc/xml/manual/test.xml
  b3e6db24172a20bdef96a05a3ea26101  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
! 3834c3df4993761d19192be161446a89  libstdc++-v3/doc/xml/manual/using.xml
  cc84d1c1a7a9491f46a3e463fcd8aa26  libstdc++-v3/doc/xml/manual/using_exceptions.xml
  43b751639aa82dbcd414b6c628beefac  libstdc++-v3/doc/xml/manual/utilities.xml
  e4b5f6193fcb7008a4f52448e594cd82  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  fa0fbb589f8e3959f474ba45b0758902  libstdc++-v3/fragment.am
! 8d79662dccb577652dacc017a24ec092  libstdc++-v3/include/Makefile.am
! 7584abc71b8c30804be3650d2cfe6262  libstdc++-v3/include/Makefile.in
  824b6f034ff0dc823441ea8a5102c218  libstdc++-v3/include/backward/auto_ptr.h
  3173cd6674451da5a8446b58212eac46  libstdc++-v3/include/backward/backward_warning.h
  c6390a6ec1f7ad8a28676a016a710ea9  libstdc++-v3/include/backward/binders.h
*************** b77b16ec692bec45274d9725b52396a7  libstd
*** 72136,72163 ****
  ee61876f1a08650c8cb54b01596fa309  libstdc++-v3/include/bits/boost_concept_check.h
  1af59f5b03be3fe0a399e335023c0a77  libstdc++-v3/include/bits/c++0x_warning.h
  d19a4045cca4c9a42c017f45e39ef8e2  libstdc++-v3/include/bits/c++config
! 5ac7e06316503f5138168c437308004b  libstdc++-v3/include/bits/char_traits.h
  8d612eed8a1bb508c2be589fd5d5ad36  libstdc++-v3/include/bits/codecvt.h
  be03bc53a8e7e8ef4d08595b7c6c042b  libstdc++-v3/include/bits/concept_check.h
  0ea42d88c60f94eaa0626f129217880b  libstdc++-v3/include/bits/cpp_type_traits.h
  579ba795e972b8e232783b3fbdf69b21  libstdc++-v3/include/bits/deque.tcc
  378a3d72a39bdc6f9608fe0f52366be4  libstdc++-v3/include/bits/enable_special_members.h
  17d43a9147ace6b7f169fbd03f12ebec  libstdc++-v3/include/bits/forward_list.h
! 91db2da1e550d157dfe296faa77605bc  libstdc++-v3/include/bits/forward_list.tcc
  825484d3eed81a051ebd04f350795e60  libstdc++-v3/include/bits/fs_dir.h
  9a1fee79c1324e54eb10a4f266a517e3  libstdc++-v3/include/bits/fs_fwd.h
  2ea08c1f3b40763ada96c07482b05d64  libstdc++-v3/include/bits/fs_ops.h
! 8ce36a619b5d1e53df9d348b4cdc8ad9  libstdc++-v3/include/bits/fs_path.h
  f0b42df9f4ad86cf8e82027100b870ce  libstdc++-v3/include/bits/fstream.tcc
  d8c24430761323aac9575d7e781aca2e  libstdc++-v3/include/bits/functexcept.h
  42f22c27e688f6a3c83ceb3298843db4  libstdc++-v3/include/bits/functional_hash.h
  8b3f4b87ab86cbf2f3a91470ab50a25e  libstdc++-v3/include/bits/gslice.h
  f5178df22711ac096d9cc4db4f4b9b79  libstdc++-v3/include/bits/gslice_array.h
! e782021f8649adcba63ef5254b2bcfe7  libstdc++-v3/include/bits/hashtable.h
! 5a8a238ffe72b24e18de666041cc9510  libstdc++-v3/include/bits/hashtable_policy.h
  27c5b607f868444ab1a42cab63fa645a  libstdc++-v3/include/bits/indirect_array.h
  a5d6623036d7695651b3182e4f3f9564  libstdc++-v3/include/bits/invoke.h
! dc35b85fd51dd992b210cc4791281112  libstdc++-v3/include/bits/ios_base.h
  9615665b74c1633b5c617ae63c8b8f55  libstdc++-v3/include/bits/istream.tcc
  d04a6eb3bd754b9da8c1970cad4f92e9  libstdc++-v3/include/bits/list.tcc
  2b896e047b761d874e85530c264b0cf6  libstdc++-v3/include/bits/locale_classes.h
--- 72657,72684 ----
  ee61876f1a08650c8cb54b01596fa309  libstdc++-v3/include/bits/boost_concept_check.h
  1af59f5b03be3fe0a399e335023c0a77  libstdc++-v3/include/bits/c++0x_warning.h
  d19a4045cca4c9a42c017f45e39ef8e2  libstdc++-v3/include/bits/c++config
! 7d7584276876c0fef19574dcc7587321  libstdc++-v3/include/bits/char_traits.h
  8d612eed8a1bb508c2be589fd5d5ad36  libstdc++-v3/include/bits/codecvt.h
  be03bc53a8e7e8ef4d08595b7c6c042b  libstdc++-v3/include/bits/concept_check.h
  0ea42d88c60f94eaa0626f129217880b  libstdc++-v3/include/bits/cpp_type_traits.h
  579ba795e972b8e232783b3fbdf69b21  libstdc++-v3/include/bits/deque.tcc
  378a3d72a39bdc6f9608fe0f52366be4  libstdc++-v3/include/bits/enable_special_members.h
  17d43a9147ace6b7f169fbd03f12ebec  libstdc++-v3/include/bits/forward_list.h
! 5be9eb1be4103828c1ae9bfaf7e50613  libstdc++-v3/include/bits/forward_list.tcc
  825484d3eed81a051ebd04f350795e60  libstdc++-v3/include/bits/fs_dir.h
  9a1fee79c1324e54eb10a4f266a517e3  libstdc++-v3/include/bits/fs_fwd.h
  2ea08c1f3b40763ada96c07482b05d64  libstdc++-v3/include/bits/fs_ops.h
! b9fa942b114cc626ff948a5181593778  libstdc++-v3/include/bits/fs_path.h
  f0b42df9f4ad86cf8e82027100b870ce  libstdc++-v3/include/bits/fstream.tcc
  d8c24430761323aac9575d7e781aca2e  libstdc++-v3/include/bits/functexcept.h
  42f22c27e688f6a3c83ceb3298843db4  libstdc++-v3/include/bits/functional_hash.h
  8b3f4b87ab86cbf2f3a91470ab50a25e  libstdc++-v3/include/bits/gslice.h
  f5178df22711ac096d9cc4db4f4b9b79  libstdc++-v3/include/bits/gslice_array.h
! 8b0170edc52601584a60055437f5bc41  libstdc++-v3/include/bits/hashtable.h
! eecf6b65c7cc9e55179a18a2a4376b5c  libstdc++-v3/include/bits/hashtable_policy.h
  27c5b607f868444ab1a42cab63fa645a  libstdc++-v3/include/bits/indirect_array.h
  a5d6623036d7695651b3182e4f3f9564  libstdc++-v3/include/bits/invoke.h
! 79e468046b15b7e678a32615a6f807fc  libstdc++-v3/include/bits/ios_base.h
  9615665b74c1633b5c617ae63c8b8f55  libstdc++-v3/include/bits/istream.tcc
  d04a6eb3bd754b9da8c1970cad4f92e9  libstdc++-v3/include/bits/list.tcc
  2b896e047b761d874e85530c264b0cf6  libstdc++-v3/include/bits/locale_classes.h
*************** a68fdeb650c7928567d29bbb4a195f1e  libstd
*** 72169,72175 ****
  467e493380e0fc1fe119b80519078bbb  libstdc++-v3/include/bits/locale_facets_nonio.tcc
  a65f214b141f99ad16986ac14ae4a202  libstdc++-v3/include/bits/localefwd.h
  e7bef767d52c08c97ca23bd74cf2a9d7  libstdc++-v3/include/bits/mask_array.h
! b056fbe0be8e4eab3c88886c9b07d9f5  libstdc++-v3/include/bits/memoryfwd.h
  128148bb393c406c4ea1bcdaed893374  libstdc++-v3/include/bits/move.h
  be3241c16ff00130d0f388a27b29f455  libstdc++-v3/include/bits/node_handle.h
  32ee79166bff8791f54597f62e80bd65  libstdc++-v3/include/bits/ostream.tcc
--- 72690,72696 ----
  467e493380e0fc1fe119b80519078bbb  libstdc++-v3/include/bits/locale_facets_nonio.tcc
  a65f214b141f99ad16986ac14ae4a202  libstdc++-v3/include/bits/localefwd.h
  e7bef767d52c08c97ca23bd74cf2a9d7  libstdc++-v3/include/bits/mask_array.h
! 4552c7d90533bedc4789ee24efd9cf0c  libstdc++-v3/include/bits/memoryfwd.h
  128148bb393c406c4ea1bcdaed893374  libstdc++-v3/include/bits/move.h
  be3241c16ff00130d0f388a27b29f455  libstdc++-v3/include/bits/node_handle.h
  32ee79166bff8791f54597f62e80bd65  libstdc++-v3/include/bits/ostream.tcc
*************** be3241c16ff00130d0f388a27b29f455  libstd
*** 72179,72186 ****
  c4488885b044d9477796f6d04761c9e8  libstdc++-v3/include/bits/predefined_ops.h
  16a059fd89d0979f4e145ff937c59d40  libstdc++-v3/include/bits/ptr_traits.h
  3b4411cbde9b0f1eb19c2753c599c4b1  libstdc++-v3/include/bits/quoted_string.h
! beb35a8f7801e76406479cd5a6118b71  libstdc++-v3/include/bits/random.h
! 1f5c3e28eb4a4285665fe05bd9ed9c1d  libstdc++-v3/include/bits/random.tcc
  8bdb239bf5c7047cbf4cd795d5d510af  libstdc++-v3/include/bits/range_access.h
  cfbaf8364aabdb3d0b2dea1751e1d158  libstdc++-v3/include/bits/refwrap.h
  7c82c3987abc7d110ba74fdf77b7adde  libstdc++-v3/include/bits/regex.h
--- 72700,72707 ----
  c4488885b044d9477796f6d04761c9e8  libstdc++-v3/include/bits/predefined_ops.h
  16a059fd89d0979f4e145ff937c59d40  libstdc++-v3/include/bits/ptr_traits.h
  3b4411cbde9b0f1eb19c2753c599c4b1  libstdc++-v3/include/bits/quoted_string.h
! 746f95cebb39740d04f3c86176cd0ff1  libstdc++-v3/include/bits/random.h
! 1b183e735667b15de349819092a23b79  libstdc++-v3/include/bits/random.tcc
  8bdb239bf5c7047cbf4cd795d5d510af  libstdc++-v3/include/bits/range_access.h
  cfbaf8364aabdb3d0b2dea1751e1d158  libstdc++-v3/include/bits/refwrap.h
  7c82c3987abc7d110ba74fdf77b7adde  libstdc++-v3/include/bits/regex.h
*************** acd1c54326b04738c23b893ba8a03da2  libstd
*** 72205,72211 ****
  8e9a1e44fe60f090a9de986a264180ec  libstdc++-v3/include/bits/std_function.h
  6a4c091e5d4670705e42d4fff51ca42a  libstdc++-v3/include/bits/std_mutex.h
  52ea3eafc6a0b82ae28b19432ed6df52  libstdc++-v3/include/bits/stl_algo.h
! f6b70f6cfa24dadc62702723b2cfa5aa  libstdc++-v3/include/bits/stl_algobase.h
  543595f245ff5dae7fc0594cdc71787c  libstdc++-v3/include/bits/stl_bvector.h
  6e7a77a27553aaec7319f0a44c932a2b  libstdc++-v3/include/bits/stl_construct.h
  806b2285c88044954824630c7d4c963c  libstdc++-v3/include/bits/stl_deque.h
--- 72726,72732 ----
  8e9a1e44fe60f090a9de986a264180ec  libstdc++-v3/include/bits/std_function.h
  6a4c091e5d4670705e42d4fff51ca42a  libstdc++-v3/include/bits/std_mutex.h
  52ea3eafc6a0b82ae28b19432ed6df52  libstdc++-v3/include/bits/stl_algo.h
! 24c9000c6ab9a256322ebe8e9e10af91  libstdc++-v3/include/bits/stl_algobase.h
  543595f245ff5dae7fc0594cdc71787c  libstdc++-v3/include/bits/stl_bvector.h
  6e7a77a27553aaec7319f0a44c932a2b  libstdc++-v3/include/bits/stl_construct.h
  806b2285c88044954824630c7d4c963c  libstdc++-v3/include/bits/stl_deque.h
*************** acff23e53d46e1656eb31daaba4239ef  libstd
*** 72220,72244 ****
  d12c97b7d4a808b1ec90ac1e0f89032f  libstdc++-v3/include/bits/stl_multiset.h
  05e0abfeae12a74ba5ac9472da9af143  libstdc++-v3/include/bits/stl_numeric.h
  9a7996187125e471e26ca57a6c9f4c5e  libstdc++-v3/include/bits/stl_pair.h
! 61cee169653c366cb8c62a6bc6024d87  libstdc++-v3/include/bits/stl_queue.h
  7440af9ddf694a046490dfc95a69fa19  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  65b9b3808c35cc6b9603c38adf3f597a  libstdc++-v3/include/bits/stl_relops.h
  f35b569901b86e6fa10afef0c6e0ea68  libstdc++-v3/include/bits/stl_set.h
  28f7d715c34d075b4a09f832b70ff21c  libstdc++-v3/include/bits/stl_stack.h
  becd4a09d374f38cd74aa3cc036142bf  libstdc++-v3/include/bits/stl_tempbuf.h
! bcb30518cfcf10a2f5b0602bbe79d77e  libstdc++-v3/include/bits/stl_tree.h
! 6aebd022faef1992c9ae9a5624e85f73  libstdc++-v3/include/bits/stl_uninitialized.h
! 0df8966cad4fc9590818953d7c4d2f05  libstdc++-v3/include/bits/stl_vector.h
  37903d1831e37a8dcc2087d9716a2d10  libstdc++-v3/include/bits/stream_iterator.h
  885101d2111686dfd9be5e25b6afd378  libstdc++-v3/include/bits/streambuf.tcc
  f571c93455866a2aa9ce45453f590765  libstdc++-v3/include/bits/streambuf_iterator.h
  9ecb8637c8767c261f5e6db77dc6f1fc  libstdc++-v3/include/bits/string_view.tcc
  c6673a8a7af82b8a7e980c02724ca737  libstdc++-v3/include/bits/stringfwd.h
  846e9490b0b182309ef44970dec9d148  libstdc++-v3/include/bits/uniform_int_dist.h
! 9c22c0e5dcbc9f0c910a1b38c1ee79a5  libstdc++-v3/include/bits/unique_ptr.h
  fbaa0cafd2c8c11c35e35d9704640bbb  libstdc++-v3/include/bits/unordered_map.h
  6e08c43bc64c22eb4dbc866f82137d1e  libstdc++-v3/include/bits/unordered_set.h
! 3e69e6010dff16c4ae67ac39a7af9f9e  libstdc++-v3/include/bits/uses_allocator.h
  da4aa1ea8bbb9e3dfd2428ad29b0fe65  libstdc++-v3/include/bits/valarray_after.h
  50632c2f73e0c96b92685887b1f60897  libstdc++-v3/include/bits/valarray_array.h
  d5149f7d6aecaba61bb4767cea6e2b9d  libstdc++-v3/include/bits/valarray_array.tcc
--- 72741,72765 ----
  d12c97b7d4a808b1ec90ac1e0f89032f  libstdc++-v3/include/bits/stl_multiset.h
  05e0abfeae12a74ba5ac9472da9af143  libstdc++-v3/include/bits/stl_numeric.h
  9a7996187125e471e26ca57a6c9f4c5e  libstdc++-v3/include/bits/stl_pair.h
! 3052990516f6cc48d664976ac39cbb4d  libstdc++-v3/include/bits/stl_queue.h
  7440af9ddf694a046490dfc95a69fa19  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  65b9b3808c35cc6b9603c38adf3f597a  libstdc++-v3/include/bits/stl_relops.h
  f35b569901b86e6fa10afef0c6e0ea68  libstdc++-v3/include/bits/stl_set.h
  28f7d715c34d075b4a09f832b70ff21c  libstdc++-v3/include/bits/stl_stack.h
  becd4a09d374f38cd74aa3cc036142bf  libstdc++-v3/include/bits/stl_tempbuf.h
! 8e80c9aa0c13a357aa7aa6a8a23f7962  libstdc++-v3/include/bits/stl_tree.h
! 2158a719e2acfb47947dab1979fb71d4  libstdc++-v3/include/bits/stl_uninitialized.h
! ba305a1e10d49c66b3a70acbb63616a6  libstdc++-v3/include/bits/stl_vector.h
  37903d1831e37a8dcc2087d9716a2d10  libstdc++-v3/include/bits/stream_iterator.h
  885101d2111686dfd9be5e25b6afd378  libstdc++-v3/include/bits/streambuf.tcc
  f571c93455866a2aa9ce45453f590765  libstdc++-v3/include/bits/streambuf_iterator.h
  9ecb8637c8767c261f5e6db77dc6f1fc  libstdc++-v3/include/bits/string_view.tcc
  c6673a8a7af82b8a7e980c02724ca737  libstdc++-v3/include/bits/stringfwd.h
  846e9490b0b182309ef44970dec9d148  libstdc++-v3/include/bits/uniform_int_dist.h
! b9ddda222b683150743e50849d9e35eb  libstdc++-v3/include/bits/unique_ptr.h
  fbaa0cafd2c8c11c35e35d9704640bbb  libstdc++-v3/include/bits/unordered_map.h
  6e08c43bc64c22eb4dbc866f82137d1e  libstdc++-v3/include/bits/unordered_set.h
! 3dd628bc68b162211c8169c5063378ff  libstdc++-v3/include/bits/uses_allocator.h
  da4aa1ea8bbb9e3dfd2428ad29b0fe65  libstdc++-v3/include/bits/valarray_after.h
  50632c2f73e0c96b92685887b1f60897  libstdc++-v3/include/bits/valarray_array.h
  d5149f7d6aecaba61bb4767cea6e2b9d  libstdc++-v3/include/bits/valarray_array.tcc
*************** b7deb76eacc249755ed84107bea2b0a3  libstd
*** 72369,72381 ****
  46f13b4ad1ec44acc6e045f4f35736d3  libstdc++-v3/include/decimal/decimal
  67025aa6536dc7818f5a79d7b8b476fe  libstdc++-v3/include/decimal/decimal.h
  5964679cc87c0993f190904cdadde174  libstdc++-v3/include/experimental/algorithm
! ff88ab1be594b84feb6e198a94a6048a  libstdc++-v3/include/experimental/any
  5b4fe84e61da5736f46e163c8cf5087a  libstdc++-v3/include/experimental/array
  79ee96cb97cdec6c2fa004402bd85cc3  libstdc++-v3/include/experimental/bits/erase_if.h
  b31d223fc4e81e9ca56007031aa84a92  libstdc++-v3/include/experimental/bits/fs_dir.h
  609183f8496329cd1d5de92646da7b85  libstdc++-v3/include/experimental/bits/fs_fwd.h
  7e96d237e463194566951fa93b5dab6b  libstdc++-v3/include/experimental/bits/fs_ops.h
! d3a9682350fbd67e4641d880a021e499  libstdc++-v3/include/experimental/bits/fs_path.h
  44bafbb8e568fec7452ca1bd97588957  libstdc++-v3/include/experimental/bits/lfts_config.h
  bb4f41e864b9f643e813a777cbb2cd69  libstdc++-v3/include/experimental/bits/shared_ptr.h
  ef4ee263c638c988bd3fc807cba960e9  libstdc++-v3/include/experimental/bits/string_view.tcc
--- 72890,72902 ----
  46f13b4ad1ec44acc6e045f4f35736d3  libstdc++-v3/include/decimal/decimal
  67025aa6536dc7818f5a79d7b8b476fe  libstdc++-v3/include/decimal/decimal.h
  5964679cc87c0993f190904cdadde174  libstdc++-v3/include/experimental/algorithm
! 577b08b98bea9fe825e9240456602045  libstdc++-v3/include/experimental/any
  5b4fe84e61da5736f46e163c8cf5087a  libstdc++-v3/include/experimental/array
  79ee96cb97cdec6c2fa004402bd85cc3  libstdc++-v3/include/experimental/bits/erase_if.h
  b31d223fc4e81e9ca56007031aa84a92  libstdc++-v3/include/experimental/bits/fs_dir.h
  609183f8496329cd1d5de92646da7b85  libstdc++-v3/include/experimental/bits/fs_fwd.h
  7e96d237e463194566951fa93b5dab6b  libstdc++-v3/include/experimental/bits/fs_ops.h
! 3d0a0d2e02e7879a99dc57240d9a90f3  libstdc++-v3/include/experimental/bits/fs_path.h
  44bafbb8e568fec7452ca1bd97588957  libstdc++-v3/include/experimental/bits/lfts_config.h
  bb4f41e864b9f643e813a777cbb2cd69  libstdc++-v3/include/experimental/bits/shared_ptr.h
  ef4ee263c638c988bd3fc807cba960e9  libstdc++-v3/include/experimental/bits/string_view.tcc
*************** a1814009155738d2bd8aebefc8eb9f49  libstd
*** 72401,72407 ****
  3e2536dc86edb3612332af8370d9d773  libstdc++-v3/include/experimental/string_view
  0a83f7784deca0367daa540e31d44684  libstdc++-v3/include/experimental/system_error
  495957705bd6aafc528b12e339a6f2ae  libstdc++-v3/include/experimental/tuple
! c68fc607d1088fb6ed554e0245c5d2b3  libstdc++-v3/include/experimental/type_traits
  77e5979fd3f2cf6081eb13739149100e  libstdc++-v3/include/experimental/unordered_map
  fd404bc6dae5c740f48b48ae45dc7d36  libstdc++-v3/include/experimental/unordered_set
  bace8556784b47dd9d766e2b26056829  libstdc++-v3/include/experimental/utility
--- 72922,72928 ----
  3e2536dc86edb3612332af8370d9d773  libstdc++-v3/include/experimental/string_view
  0a83f7784deca0367daa540e31d44684  libstdc++-v3/include/experimental/system_error
  495957705bd6aafc528b12e339a6f2ae  libstdc++-v3/include/experimental/tuple
! 9f8e5fc6f27453d1e15a88429390636d  libstdc++-v3/include/experimental/type_traits
  77e5979fd3f2cf6081eb13739149100e  libstdc++-v3/include/experimental/unordered_map
  fd404bc6dae5c740f48b48ae45dc7d36  libstdc++-v3/include/experimental/unordered_set
  bace8556784b47dd9d766e2b26056829  libstdc++-v3/include/experimental/utility
*************** ee69eb8f56fe19bafb340403c14cad0d  libstd
*** 72770,72776 ****
  f8bcc5741ac9a1b2aa7235833330596f  libstdc++-v3/include/profile/unordered_set
  c671d4e818721717d360a33348a156d9  libstdc++-v3/include/profile/vector
  b7ce8ff19118e4439858424fc3f511c9  libstdc++-v3/include/std/algorithm
! b0fc006535604478a847effde8829616  libstdc++-v3/include/std/any
  94c58e3f2ae6f4e6e64f764f1634080e  libstdc++-v3/include/std/array
  367f35f83cb8377555ffdde1a1ba14a4  libstdc++-v3/include/std/atomic
  2d2c76909d20cdf1de724b00a22f8cbb  libstdc++-v3/include/std/bitset
--- 73291,73297 ----
  f8bcc5741ac9a1b2aa7235833330596f  libstdc++-v3/include/profile/unordered_set
  c671d4e818721717d360a33348a156d9  libstdc++-v3/include/profile/vector
  b7ce8ff19118e4439858424fc3f511c9  libstdc++-v3/include/std/algorithm
! 0a6014e9ca88fad798c638afdc43c010  libstdc++-v3/include/std/any
  94c58e3f2ae6f4e6e64f764f1634080e  libstdc++-v3/include/std/array
  367f35f83cb8377555ffdde1a1ba14a4  libstdc++-v3/include/std/atomic
  2d2c76909d20cdf1de724b00a22f8cbb  libstdc++-v3/include/std/bitset
*************** df98684350120e7dc5f4fc26aa2d4336  libstd
*** 72798,72805 ****
  5f8c74a78988a14e1e9bd2383f64b266  libstdc++-v3/include/std/memory
  47bc968221d76ad5996568fb865cacb4  libstdc++-v3/include/std/mutex
  6e94db557f82107cbb74f1ca12998f44  libstdc++-v3/include/std/numeric
! 78b6f754e097ae8b62ae3cf30e27db06  libstdc++-v3/include/std/optional
! 353b0091928699d6d4fb7de2174affac  libstdc++-v3/include/std/ostream
  5c07c809e30daa621aad47af606418d9  libstdc++-v3/include/std/queue
  19877a6114456d0e963351ed8931e06b  libstdc++-v3/include/std/random
  9ca4942b926d18243634c2f25fe9f6c6  libstdc++-v3/include/std/ratio
--- 73319,73326 ----
  5f8c74a78988a14e1e9bd2383f64b266  libstdc++-v3/include/std/memory
  47bc968221d76ad5996568fb865cacb4  libstdc++-v3/include/std/mutex
  6e94db557f82107cbb74f1ca12998f44  libstdc++-v3/include/std/numeric
! 294e237db1bbcb93d872f73b327ce1e2  libstdc++-v3/include/std/optional
! ab23ebdaecd898050ca509020dfe8e92  libstdc++-v3/include/std/ostream
  5c07c809e30daa621aad47af606418d9  libstdc++-v3/include/std/queue
  19877a6114456d0e963351ed8931e06b  libstdc++-v3/include/std/random
  9ca4942b926d18243634c2f25fe9f6c6  libstdc++-v3/include/std/ratio
*************** e7044bfbebc23a3cf56057a6f775bc7d  libstd
*** 72816,72828 ****
  25f1a2ea5a112e54baf0fca4c0586df4  libstdc++-v3/include/std/system_error
  a6180f359e18686c8179dd4f253fa945  libstdc++-v3/include/std/thread
  eb4742b9d7f8a67c927c000f4f08bdaf  libstdc++-v3/include/std/tuple
! a8552ad955f107bda56e6bbdbb0e0228  libstdc++-v3/include/std/type_traits
  575649d6d1cac2dd7972306d2502a5a9  libstdc++-v3/include/std/typeindex
  b7dfff7bcde643270c02b328f66afb20  libstdc++-v3/include/std/unordered_map
  fcd40d278ab3aab699a63ff199c72d7a  libstdc++-v3/include/std/unordered_set
  e659d4d7c28d849fe648eae206bed6cc  libstdc++-v3/include/std/utility
  44f678755394b2ba7ea2edc8c4855a22  libstdc++-v3/include/std/valarray
! 1f8d4f874bd0e4bb6e7c7a8637996bb0  libstdc++-v3/include/std/variant
  03eaa11fbda7bb8fd9885fa88a16fbe1  libstdc++-v3/include/std/vector
  46a122be7109715c35fa8247ce567ea6  libstdc++-v3/include/tr1/array
  63a659b3cb9e797beff37ab1cef1c1f8  libstdc++-v3/include/tr1/bessel_function.tcc
--- 73337,73349 ----
  25f1a2ea5a112e54baf0fca4c0586df4  libstdc++-v3/include/std/system_error
  a6180f359e18686c8179dd4f253fa945  libstdc++-v3/include/std/thread
  eb4742b9d7f8a67c927c000f4f08bdaf  libstdc++-v3/include/std/tuple
! ef098d21691a6886513cc2555555bc20  libstdc++-v3/include/std/type_traits
  575649d6d1cac2dd7972306d2502a5a9  libstdc++-v3/include/std/typeindex
  b7dfff7bcde643270c02b328f66afb20  libstdc++-v3/include/std/unordered_map
  fcd40d278ab3aab699a63ff199c72d7a  libstdc++-v3/include/std/unordered_set
  e659d4d7c28d849fe648eae206bed6cc  libstdc++-v3/include/std/utility
  44f678755394b2ba7ea2edc8c4855a22  libstdc++-v3/include/std/valarray
! 1a31782b22cdeed127bb6a7e0016ba00  libstdc++-v3/include/std/variant
  03eaa11fbda7bb8fd9885fa88a16fbe1  libstdc++-v3/include/std/vector
  46a122be7109715c35fa8247ce567ea6  libstdc++-v3/include/tr1/array
  63a659b3cb9e797beff37ab1cef1c1f8  libstdc++-v3/include/tr1/bessel_function.tcc
*************** aadea4e15e5b46de0052e4c929066597  libstd
*** 72888,72899 ****
  c1a9fea5cddca696a0f9a6b46d2b63bd  libstdc++-v3/include/tr1/wctype.h
  c711079dbdf3fbc37ec013da1d73ea3f  libstdc++-v3/include/tr2/bool_set
  17673c46d7c0b0a06c22ac1812c0ff4b  libstdc++-v3/include/tr2/bool_set.tcc
! 62313536dfb939e5be3238c2bc9773de  libstdc++-v3/include/tr2/dynamic_bitset
! 8436d63d88c46f8ecd693850aa58646c  libstdc++-v3/include/tr2/dynamic_bitset.tcc
  c15ef53984b01a6fa752f8244f33bbc0  libstdc++-v3/include/tr2/ratio
  2cb08e2a102d6fb867e5b016e26168ef  libstdc++-v3/include/tr2/type_traits
  35723d649e2938008f801ff0c392a967  libstdc++-v3/libsupc++/Makefile.am
! 4bc24ec516b7a02cdc96cb39864c3b55  libstdc++-v3/libsupc++/Makefile.in
  631f21736305bc4ae54ef33e0ce49835  libstdc++-v3/libsupc++/array_type_info.cc
  688eaa2b5aef0e352ad3f28c00a12468  libstdc++-v3/libsupc++/atexit_arm.cc
  a00f3abb4b3304aff4800cb0435a33c0  libstdc++-v3/libsupc++/atexit_thread.cc
--- 73409,73420 ----
  c1a9fea5cddca696a0f9a6b46d2b63bd  libstdc++-v3/include/tr1/wctype.h
  c711079dbdf3fbc37ec013da1d73ea3f  libstdc++-v3/include/tr2/bool_set
  17673c46d7c0b0a06c22ac1812c0ff4b  libstdc++-v3/include/tr2/bool_set.tcc
! d0f2fe23dc0fc087564e071283341737  libstdc++-v3/include/tr2/dynamic_bitset
! dc2f764b089d9e566895649ba57ca9f7  libstdc++-v3/include/tr2/dynamic_bitset.tcc
  c15ef53984b01a6fa752f8244f33bbc0  libstdc++-v3/include/tr2/ratio
  2cb08e2a102d6fb867e5b016e26168ef  libstdc++-v3/include/tr2/type_traits
  35723d649e2938008f801ff0c392a967  libstdc++-v3/libsupc++/Makefile.am
! 04dc60053f0bf829b3794194c1c36d9a  libstdc++-v3/libsupc++/Makefile.in
  631f21736305bc4ae54ef33e0ce49835  libstdc++-v3/libsupc++/array_type_info.cc
  688eaa2b5aef0e352ad3f28c00a12468  libstdc++-v3/libsupc++/atexit_arm.cc
  a00f3abb4b3304aff4800cb0435a33c0  libstdc++-v3/libsupc++/atexit_thread.cc
*************** a0f90044fdf7e6011c6eb7927f28221a  libstd
*** 72904,72910 ****
  2bd523a39c0264e62dad84c7e1d0d2a5  libstdc++-v3/libsupc++/bad_cast.cc
  cf5f64d5397e30f49c5789cbfd7c8688  libstdc++-v3/libsupc++/bad_typeid.cc
  6e24c5cf0922dca2e84819b1c5131cf0  libstdc++-v3/libsupc++/class_type_info.cc
! 5b9c0e54d648d34402fb923663ecf789  libstdc++-v3/libsupc++/cxxabi.h
  89c79c1be5d0424e33e3f1fa775eeaed  libstdc++-v3/libsupc++/cxxabi_forced.h
  011902ba1a9d14ad750b8d185e16c2ff  libstdc++-v3/libsupc++/cxxabi_init_exception.h
  eed5419771d32658a76afe8eec054108  libstdc++-v3/libsupc++/del_op.cc
--- 73425,73431 ----
  2bd523a39c0264e62dad84c7e1d0d2a5  libstdc++-v3/libsupc++/bad_cast.cc
  cf5f64d5397e30f49c5789cbfd7c8688  libstdc++-v3/libsupc++/bad_typeid.cc
  6e24c5cf0922dca2e84819b1c5131cf0  libstdc++-v3/libsupc++/class_type_info.cc
! f8c55db4e145b33f10365e66223947b6  libstdc++-v3/libsupc++/cxxabi.h
  89c79c1be5d0424e33e3f1fa775eeaed  libstdc++-v3/libsupc++/cxxabi_forced.h
  011902ba1a9d14ad750b8d185e16c2ff  libstdc++-v3/libsupc++/cxxabi_init_exception.h
  eed5419771d32658a76afe8eec054108  libstdc++-v3/libsupc++/del_op.cc
*************** f8b4475f27d2a49f23ca2915db2aa1a2  libstd
*** 72937,72951 ****
  c7cf8027d4c2462452b21c7637b63208  libstdc++-v3/libsupc++/eh_type.cc
  7b56e34582ba823c33a7c442878a47c3  libstdc++-v3/libsupc++/eh_unex_handler.cc
  427b1d41bbac3a6682f9efe261dbe2c2  libstdc++-v3/libsupc++/enum_type_info.cc
! 7ade5a8c17b101bef641ffcf11fccacf  libstdc++-v3/libsupc++/exception
  34861721c4e6489755e5972a55794d34  libstdc++-v3/libsupc++/exception.h
  c2de4a15fee39a464b4195a4d743df96  libstdc++-v3/libsupc++/exception_defines.h
  25d44782b686509a9fc5c8aaa8066643  libstdc++-v3/libsupc++/exception_ptr.h
  33b9711053b5013082dcd01ff6886553  libstdc++-v3/libsupc++/function_type_info.cc
  15da917c7e92611ca228f73691b30d73  libstdc++-v3/libsupc++/fundamental_type_info.cc
  e8b4a9f0184d46c812afe3d4438008ed  libstdc++-v3/libsupc++/guard.cc
! c96d8729200a8bf030a734e9e9ed0ead  libstdc++-v3/libsupc++/guard_error.cc
! 111e07c0b209346cbc5004483c2152b2  libstdc++-v3/libsupc++/hash_bytes.cc
  18b00c9d367c5f25dd72f0af8dc43339  libstdc++-v3/libsupc++/hash_bytes.h
  74d6ff3721b8e641a241c5f5cdd38c1a  libstdc++-v3/libsupc++/initializer_list
  11da6d9eb3e8eec38c2e995a3a8c6329  libstdc++-v3/libsupc++/nested_exception.cc
--- 73458,73472 ----
  c7cf8027d4c2462452b21c7637b63208  libstdc++-v3/libsupc++/eh_type.cc
  7b56e34582ba823c33a7c442878a47c3  libstdc++-v3/libsupc++/eh_unex_handler.cc
  427b1d41bbac3a6682f9efe261dbe2c2  libstdc++-v3/libsupc++/enum_type_info.cc
! 86384f6999514dd3a508aaa03a9517d4  libstdc++-v3/libsupc++/exception
  34861721c4e6489755e5972a55794d34  libstdc++-v3/libsupc++/exception.h
  c2de4a15fee39a464b4195a4d743df96  libstdc++-v3/libsupc++/exception_defines.h
  25d44782b686509a9fc5c8aaa8066643  libstdc++-v3/libsupc++/exception_ptr.h
  33b9711053b5013082dcd01ff6886553  libstdc++-v3/libsupc++/function_type_info.cc
  15da917c7e92611ca228f73691b30d73  libstdc++-v3/libsupc++/fundamental_type_info.cc
  e8b4a9f0184d46c812afe3d4438008ed  libstdc++-v3/libsupc++/guard.cc
! 3466933aedfa6e76ac1f96e7d647c32b  libstdc++-v3/libsupc++/guard_error.cc
! a02c42932bbaa28e1e5661328cff5926  libstdc++-v3/libsupc++/hash_bytes.cc
  18b00c9d367c5f25dd72f0af8dc43339  libstdc++-v3/libsupc++/hash_bytes.h
  74d6ff3721b8e641a241c5f5cdd38c1a  libstdc++-v3/libsupc++/initializer_list
  11da6d9eb3e8eec38c2e995a3a8c6329  libstdc++-v3/libsupc++/nested_exception.cc
*************** ceff39d5a5a0e636f3769816d9de7d97  libstd
*** 72953,72959 ****
  da8ecc0aad6bb85c8749a418747d4f25  libstdc++-v3/libsupc++/new
  b929c7855e2a39856dc6bc912f5757c9  libstdc++-v3/libsupc++/new_handler.cc
  9a8b6e3bde9862a50e22f3e17e18057e  libstdc++-v3/libsupc++/new_op.cc
! 974bf27b054955ec98007fe708b6016b  libstdc++-v3/libsupc++/new_opa.cc
  ff0051268537a430520f52ce98b01451  libstdc++-v3/libsupc++/new_opant.cc
  61c65763931abb56e989c083c9552591  libstdc++-v3/libsupc++/new_opnt.cc
  896cf33a18cdcc1f27cf70cd8a10e8a3  libstdc++-v3/libsupc++/new_opv.cc
--- 73474,73480 ----
  da8ecc0aad6bb85c8749a418747d4f25  libstdc++-v3/libsupc++/new
  b929c7855e2a39856dc6bc912f5757c9  libstdc++-v3/libsupc++/new_handler.cc
  9a8b6e3bde9862a50e22f3e17e18057e  libstdc++-v3/libsupc++/new_op.cc
! d0c10c8607fbe4707f51346370559bce  libstdc++-v3/libsupc++/new_opa.cc
  ff0051268537a430520f52ce98b01451  libstdc++-v3/libsupc++/new_opant.cc
  61c65763931abb56e989c083c9552591  libstdc++-v3/libsupc++/new_opnt.cc
  896cf33a18cdcc1f27cf70cd8a10e8a3  libstdc++-v3/libsupc++/new_opv.cc
*************** b767ca21604431bdeb9f4a8a0874b380  libstd
*** 72976,72994 ****
  e20ecaecb4cdf35f272eb9bf14e2ee4d  libstdc++-v3/libsupc++/vtv_stubs.cc
  6e1809e9ac8f237378ab1ebc1b99fb6a  libstdc++-v3/linkage.m4
  84db6d4c2c607fc0a4ecffdf29fe3244  libstdc++-v3/po/Makefile.am
! 69d23076b3ef37404d682b622b0fe049  libstdc++-v3/po/Makefile.in
  1a96a7fbff96968443fda669ce95ff1f  libstdc++-v3/po/POTFILES.in
  fa9de930263a3a95827ef51abac81302  libstdc++-v3/po/de.po
  5f4aac1893406c9cd07f2e72300c0fe2  libstdc++-v3/po/fr.po
  dc2f2463bb52c0e7ff931af1f4312ac1  libstdc++-v3/po/libstdc++.pot
  85017a56b34879df688618b79df6e396  libstdc++-v3/po/string_literals.cc
  db33018f9a0c153cdacbad74d90cd744  libstdc++-v3/python/Makefile.am
! 97daaf288d7206432fe42cf501f297b9  libstdc++-v3/python/Makefile.in
  b42ce5546cb46bbbd486454dc2b29343  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  016d8953f53a812b7ce03d94d76fb15d  libstdc++-v3/python/libstdcxx/v6/__init__.py
  99ba46a5bcbdbe5f72c1daf7be1dbee1  libstdc++-v3/python/libstdcxx/v6/printers.py
! 415ba9594feeee0d643a6d665fdb61d8  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  b1441422cec6381d9285b7681b666124  libstdc++-v3/scripts/check_compile
  533e594add6e79910b0e557ba690fac6  libstdc++-v3/scripts/check_performance
  f480e111db2d50194a3e1f7014c9f422  libstdc++-v3/scripts/create_testsuite_files
--- 73497,73515 ----
  e20ecaecb4cdf35f272eb9bf14e2ee4d  libstdc++-v3/libsupc++/vtv_stubs.cc
  6e1809e9ac8f237378ab1ebc1b99fb6a  libstdc++-v3/linkage.m4
  84db6d4c2c607fc0a4ecffdf29fe3244  libstdc++-v3/po/Makefile.am
! 1127b75d7181fb8fed8177ceaef833a2  libstdc++-v3/po/Makefile.in
  1a96a7fbff96968443fda669ce95ff1f  libstdc++-v3/po/POTFILES.in
  fa9de930263a3a95827ef51abac81302  libstdc++-v3/po/de.po
  5f4aac1893406c9cd07f2e72300c0fe2  libstdc++-v3/po/fr.po
  dc2f2463bb52c0e7ff931af1f4312ac1  libstdc++-v3/po/libstdc++.pot
  85017a56b34879df688618b79df6e396  libstdc++-v3/po/string_literals.cc
  db33018f9a0c153cdacbad74d90cd744  libstdc++-v3/python/Makefile.am
! 4d5248438c6b7e741b55fd8d359b9d42  libstdc++-v3/python/Makefile.in
  b42ce5546cb46bbbd486454dc2b29343  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  016d8953f53a812b7ce03d94d76fb15d  libstdc++-v3/python/libstdcxx/v6/__init__.py
  99ba46a5bcbdbe5f72c1daf7be1dbee1  libstdc++-v3/python/libstdcxx/v6/printers.py
! 8b5e4c30c0cefaf21b1a71d0e78e6961  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  b1441422cec6381d9285b7681b666124  libstdc++-v3/scripts/check_compile
  533e594add6e79910b0e557ba690fac6  libstdc++-v3/scripts/check_performance
  f480e111db2d50194a3e1f7014c9f422  libstdc++-v3/scripts/create_testsuite_files
*************** e8e7773bc629a008b2813ee507a0dab6  libstd
*** 73001,73010 ****
  80b6ff44b325c6b6d113435d8eea4b76  libstdc++-v3/scripts/make_graph.py
  3564a0b925e650a7d2cc2ec7f2e7379f  libstdc++-v3/scripts/run_doxygen
  7579350b0ac0412cb42e9c354485ebd9  libstdc++-v3/scripts/testsuite_flags.in
! 419845487b408bcd0d6ca0fe211976b7  libstdc++-v3/src/Makefile.am
! ec24c6a9fddf30e4c267e32d40f70226  libstdc++-v3/src/Makefile.in
  b126c7ff261f4aba9341c48f67a51ffd  libstdc++-v3/src/c++11/Makefile.am
! 3037cac2cfd247a2cbee6d0c656b6e4c  libstdc++-v3/src/c++11/Makefile.in
  8112dfc874427401d41b79800ca28310  libstdc++-v3/src/c++11/chrono.cc
  8c0d8622888eca7a4ad7dbe143468562  libstdc++-v3/src/c++11/codecvt.cc
  d0837fc9a3d11fc292e0f58c3afa791b  libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc
--- 73522,73531 ----
  80b6ff44b325c6b6d113435d8eea4b76  libstdc++-v3/scripts/make_graph.py
  3564a0b925e650a7d2cc2ec7f2e7379f  libstdc++-v3/scripts/run_doxygen
  7579350b0ac0412cb42e9c354485ebd9  libstdc++-v3/scripts/testsuite_flags.in
! 7a18372cc58f2bd5438e86c050fb5b01  libstdc++-v3/src/Makefile.am
! 636e9590282765d2756c5d83fdfb2ce4  libstdc++-v3/src/Makefile.in
  b126c7ff261f4aba9341c48f67a51ffd  libstdc++-v3/src/c++11/Makefile.am
! 9d7ef415444d5dbaa326c0ac0b687df4  libstdc++-v3/src/c++11/Makefile.in
  8112dfc874427401d41b79800ca28310  libstdc++-v3/src/c++11/chrono.cc
  8c0d8622888eca7a4ad7dbe143468562  libstdc++-v3/src/c++11/codecvt.cc
  d0837fc9a3d11fc292e0f58c3afa791b  libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc
*************** c6ecb548eb9548bbca645925e1c40ce3  libstd
*** 73062,73069 ****
  4587c2b594addc57375201e4e2840954  libstdc++-v3/src/c++11/wlocale-inst.cc
  467cd61a70c7fa3add6dd732ea7337eb  libstdc++-v3/src/c++11/wstring-inst.cc
  0043b48b6d4240791b6e5ea75f289cb7  libstdc++-v3/src/c++11/wstring-io-inst.cc
  1d2f0306e22a3d0994a31f96a82a81b2  libstdc++-v3/src/c++98/Makefile.am
! d5bb909c195f394c648f3348ab48a65d  libstdc++-v3/src/c++98/Makefile.in
  1af7d1431070d1191ba0c26958292bd0  libstdc++-v3/src/c++98/allocator-inst.cc
  5fe119083458d53e6e7ca04fafae39b8  libstdc++-v3/src/c++98/bitmap_allocator.cc
  9cac9377c40f34f7b6fe46eaaca4a8ff  libstdc++-v3/src/c++98/codecvt.cc
--- 73583,73591 ----
  4587c2b594addc57375201e4e2840954  libstdc++-v3/src/c++11/wlocale-inst.cc
  467cd61a70c7fa3add6dd732ea7337eb  libstdc++-v3/src/c++11/wstring-inst.cc
  0043b48b6d4240791b6e5ea75f289cb7  libstdc++-v3/src/c++11/wstring-io-inst.cc
+ 9cca3cfd93f43b9ff610bb85aa008108  libstdc++-v3/src/c++17/Makefile.in
  1d2f0306e22a3d0994a31f96a82a81b2  libstdc++-v3/src/c++98/Makefile.am
! 9c30c9090b85588185c27028c3a8044d  libstdc++-v3/src/c++98/Makefile.in
  1af7d1431070d1191ba0c26958292bd0  libstdc++-v3/src/c++98/allocator-inst.cc
  5fe119083458d53e6e7ca04fafae39b8  libstdc++-v3/src/c++98/bitmap_allocator.cc
  9cac9377c40f34f7b6fe46eaaca4a8ff  libstdc++-v3/src/c++98/codecvt.cc
*************** cd207df6b3d9119d15141821428b8880  libstd
*** 73091,73097 ****
  a73d3f645f57edd4eb3f65b4bf81ce83  libstdc++-v3/src/c++98/list_associated.cc
  fe2779d51dc3f5946c0fd6e6161c052d  libstdc++-v3/src/c++98/locale.cc
  8245e7b134954624f2d08a252b401a62  libstdc++-v3/src/c++98/locale_facets.cc
! 41ef48fbe68d90a9bd34be86c5aa540f  libstdc++-v3/src/c++98/locale_init.cc
  66505fa4b47baf73218e00ee1664d7e8  libstdc++-v3/src/c++98/localename.cc
  e8752c5b5eb8f73b5fa3edc854be6af5  libstdc++-v3/src/c++98/math_stubs_float.cc
  e39b0e232c9f087d063de8b5fded3928  libstdc++-v3/src/c++98/math_stubs_long_double.cc
--- 73613,73619 ----
  a73d3f645f57edd4eb3f65b4bf81ce83  libstdc++-v3/src/c++98/list_associated.cc
  fe2779d51dc3f5946c0fd6e6161c052d  libstdc++-v3/src/c++98/locale.cc
  8245e7b134954624f2d08a252b401a62  libstdc++-v3/src/c++98/locale_facets.cc
! d0e1f9d8fc309d2cbf5ef69a9c73ae71  libstdc++-v3/src/c++98/locale_init.cc
  66505fa4b47baf73218e00ee1664d7e8  libstdc++-v3/src/c++98/localename.cc
  e8752c5b5eb8f73b5fa3edc854be6af5  libstdc++-v3/src/c++98/math_stubs_float.cc
  e39b0e232c9f087d063de8b5fded3928  libstdc++-v3/src/c++98/math_stubs_long_double.cc
*************** eea5fd36e43cb312dbfe5794f87127ee  libstd
*** 73105,73111 ****
  cb756de7d9060d64e44b929f62034fc2  libstdc++-v3/src/c++98/tree.cc
  7c64ecadd9161b822f13fae2d5fac83e  libstdc++-v3/src/c++98/valarray.cc
  e2ff5e34304224a747e3d1204249289a  libstdc++-v3/src/filesystem/Makefile.am
! 491ffb297c12cd9e24b7a455e1085482  libstdc++-v3/src/filesystem/Makefile.in
  b26f36b095ce739a3477f3a0d9344cb5  libstdc++-v3/src/filesystem/cow-dir.cc
  ee1a255b00a8af7777d83264abb18c3a  libstdc++-v3/src/filesystem/cow-ops.cc
  93702fda212378b01a6e67f4ce5afbde  libstdc++-v3/src/filesystem/cow-path.cc
--- 73627,73633 ----
  cb756de7d9060d64e44b929f62034fc2  libstdc++-v3/src/c++98/tree.cc
  7c64ecadd9161b822f13fae2d5fac83e  libstdc++-v3/src/c++98/valarray.cc
  e2ff5e34304224a747e3d1204249289a  libstdc++-v3/src/filesystem/Makefile.am
! 417ce2b87db17db607271c0a08a6a70f  libstdc++-v3/src/filesystem/Makefile.in
  b26f36b095ce739a3477f3a0d9344cb5  libstdc++-v3/src/filesystem/cow-dir.cc
  ee1a255b00a8af7777d83264abb18c3a  libstdc++-v3/src/filesystem/cow-ops.cc
  93702fda212378b01a6e67f4ce5afbde  libstdc++-v3/src/filesystem/cow-path.cc
*************** fb2efeb60fd8c764483e34d6c089ccc2  libstd
*** 73113,73125 ****
  24939d6b9b46c6886fdff3896ded6268  libstdc++-v3/src/filesystem/cow-std-ops.cc
  30373fbc8bce18c2e7a9df73a784a6c8  libstdc++-v3/src/filesystem/cow-std-path.cc
  b74d6594f0374085c9300b092775aeb1  libstdc++-v3/src/filesystem/dir-common.h
! 7d47eafed9b0df004eb5196272d725ce  libstdc++-v3/src/filesystem/dir.cc
  767020a0dd8a279cae757fdccf19282d  libstdc++-v3/src/filesystem/ops-common.h
! 698057c19fd4e05437ddcd69df91aacc  libstdc++-v3/src/filesystem/ops.cc
! 95d8ca3a8ad78a09ca269a347b27fd4a  libstdc++-v3/src/filesystem/path.cc
! 9157503d4bc833a58de7ade9a0c4a95f  libstdc++-v3/src/filesystem/std-dir.cc
! c4f7bd8c26838b5329dc9cf61831c6cd  libstdc++-v3/src/filesystem/std-ops.cc
! e2c0685a024031fd4e3a49501dcc1664  libstdc++-v3/src/filesystem/std-path.cc
  0601bf78d93bd1788214ede5de7c02ad  libstdc++-v3/src/shared/hashtable-aux.cc
  3d8476b40375b3b047530c4521769b00  libstdc++-v3/testsuite/17_intro/freestanding.cc
  4d2ce97c9adf17a612622ccde5efdd9c  libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc
--- 73635,73647 ----
  24939d6b9b46c6886fdff3896ded6268  libstdc++-v3/src/filesystem/cow-std-ops.cc
  30373fbc8bce18c2e7a9df73a784a6c8  libstdc++-v3/src/filesystem/cow-std-path.cc
  b74d6594f0374085c9300b092775aeb1  libstdc++-v3/src/filesystem/dir-common.h
! 0ba6dc1bba1992ff09540ea197e6e1d2  libstdc++-v3/src/filesystem/dir.cc
  767020a0dd8a279cae757fdccf19282d  libstdc++-v3/src/filesystem/ops-common.h
! fd209da361963a27b764d35d6c21f424  libstdc++-v3/src/filesystem/ops.cc
! 840192d6fdc056f927bc41e1ecf34142  libstdc++-v3/src/filesystem/path.cc
! 8b15763484fcff6f0941f922a04de0e9  libstdc++-v3/src/filesystem/std-dir.cc
! 2a26384fadbd439562782b6e30b2b16d  libstdc++-v3/src/filesystem/std-ops.cc
! 06d014f6e5811ebdcb3f1ca84a5f71a2  libstdc++-v3/src/filesystem/std-path.cc
  0601bf78d93bd1788214ede5de7c02ad  libstdc++-v3/src/shared/hashtable-aux.cc
  3d8476b40375b3b047530c4521769b00  libstdc++-v3/testsuite/17_intro/freestanding.cc
  4d2ce97c9adf17a612622ccde5efdd9c  libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc
*************** cc67ba58cdcf2fa16c7fddc0e1845cc9  libstd
*** 73151,73157 ****
  99c7bab5cf77f9d7d103460f12fbf954  libstdc++-v3/testsuite/17_intro/headers/c++2014/operator_names.cc
  033f3e052d6bd92f3dc3281f0adca3d5  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc
  3fbe5f48befda0a7ae41578ffb062112  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc
! ca154df990b1f3a4735132aea2e95e7c  libstdc++-v3/testsuite/17_intro/names.cc
  357540b6cc78c6c371c3e93cb428b27b  libstdc++-v3/testsuite/17_intro/shared_with_static_deps.cc
  1e043a78bac9deb4ffe351f12b341c04  libstdc++-v3/testsuite/17_intro/static.cc
  6c6837d18fc37f57bbc58b567dffa584  libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc
--- 73673,73679 ----
  99c7bab5cf77f9d7d103460f12fbf954  libstdc++-v3/testsuite/17_intro/headers/c++2014/operator_names.cc
  033f3e052d6bd92f3dc3281f0adca3d5  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc
  3fbe5f48befda0a7ae41578ffb062112  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc
! feb127da5e32f0a9df2bceed3d106531  libstdc++-v3/testsuite/17_intro/names.cc
  357540b6cc78c6c371c3e93cb428b27b  libstdc++-v3/testsuite/17_intro/shared_with_static_deps.cc
  1e043a78bac9deb4ffe351f12b341c04  libstdc++-v3/testsuite/17_intro/static.cc
  6c6837d18fc37f57bbc58b567dffa584  libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc
*************** fa68920fbdbc5db01e9aad92559f70f3  libstd
*** 73159,73164 ****
--- 73681,73687 ----
  7d3c14c3e18f6f1fb63219918baa8e80  libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc
  cdc28410e5294149a309fff57df35e17  libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc
  cd369277a10b3b5d7f91c6e97f9e2416  libstdc++-v3/testsuite/18_support/50594.cc
+ 2f87c47ecadaa7e8377f15d2db944354  libstdc++-v3/testsuite/18_support/51333.cc
  f43b1286355794fbc19db326c21cdf0f  libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc
  bc370f76a2ea2999ef7d12d8fc757cd4  libstdc++-v3/testsuite/18_support/bad_alloc/cons_virtual_derivation.cc
  7d2d56171f5077d1428d6f9a39bc63bc  libstdc++-v3/testsuite/18_support/bad_alloc/what.cc
*************** ed2537353b7b140a34cd433efe390177  libstd
*** 73387,73393 ****
  dcea191c8d87737588370196323afc6e  libstdc++-v3/testsuite/20_util/any/cons/in_place.cc
  8a21b66009ff6f60cba16f59056d3d8a  libstdc++-v3/testsuite/20_util/any/cons/nontrivial.cc
  761224dbe50b54dbe89d5702f39f484d  libstdc++-v3/testsuite/20_util/any/make_any.cc
! 44c81d38c248ba6c04f6bbbb5b2f9f10  libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc
  47069e16ce00f3c36757ccedc1f2dc41  libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc
  6c2d9e722f0f83536158347f8f69c681  libstdc++-v3/testsuite/20_util/any/misc/any_cast_no_rtti.cc
  dab7e55421df6d039979bbd32e75db40  libstdc++-v3/testsuite/20_util/any/misc/swap.cc
--- 73910,73916 ----
  dcea191c8d87737588370196323afc6e  libstdc++-v3/testsuite/20_util/any/cons/in_place.cc
  8a21b66009ff6f60cba16f59056d3d8a  libstdc++-v3/testsuite/20_util/any/cons/nontrivial.cc
  761224dbe50b54dbe89d5702f39f484d  libstdc++-v3/testsuite/20_util/any/make_any.cc
! 7ae90e4f16760190711693fd8a2dd01c  libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc
  47069e16ce00f3c36757ccedc1f2dc41  libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc
  6c2d9e722f0f83536158347f8f69c681  libstdc++-v3/testsuite/20_util/any/misc/any_cast_no_rtti.cc
  dab7e55421df6d039979bbd32e75db40  libstdc++-v3/testsuite/20_util/any/misc/swap.cc
*************** c8ad557be78347ce88107b471eacce96  libstd
*** 73438,73446 ****
  19c91034a01eb56d3d60cdb22c8e3082  libstdc++-v3/testsuite/20_util/bind/socket.cc
  b924bc529ce784068a2fb7c08bbfdcb0  libstdc++-v3/testsuite/20_util/bool_constant/requirements.cc
  5d7dbd2eab7307a6017fe100aef24bae  libstdc++-v3/testsuite/20_util/common_type/requirements/alias_decl.cc
! d5b38502a319774fc7360710cdf63785  libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc
! d5e7d50216fbae397b93b56f1ba1f4bd  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc
! 11325d6641efe9587975de750a992c31  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc
  6bc06a273df2dabdd47e3614835daf83  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-1.cc
  2a433e3a6b0152522fbe0fd8efc7d3a2  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-2.cc
  13aef816cb5b4c342945fdc528cf77b2  libstdc++-v3/testsuite/20_util/conditional/requirements/alias_decl.cc
--- 73961,73969 ----
  19c91034a01eb56d3d60cdb22c8e3082  libstdc++-v3/testsuite/20_util/bind/socket.cc
  b924bc529ce784068a2fb7c08bbfdcb0  libstdc++-v3/testsuite/20_util/bool_constant/requirements.cc
  5d7dbd2eab7307a6017fe100aef24bae  libstdc++-v3/testsuite/20_util/common_type/requirements/alias_decl.cc
! 25e626bfcc2469f986006fe355a205ca  libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc
! 89b9a8ee0399046ed8ad5aa090aadf0a  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc
! d108bda84736fbff3ad4bca3fd7487ab  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc
  6bc06a273df2dabdd47e3614835daf83  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-1.cc
  2a433e3a6b0152522fbe0fd8efc7d3a2  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-2.cc
  13aef816cb5b4c342945fdc528cf77b2  libstdc++-v3/testsuite/20_util/conditional/requirements/alias_decl.cc
*************** c0a38d0fcccfac4ead39c9a15fd731d5  libstd
*** 73585,73590 ****
--- 74108,74114 ----
  02eb313d6e9dd13cf1662604c6a6f45a  libstdc++-v3/testsuite/20_util/hash/52931.cc
  c2dc3f28d0935423a6fe187b7bb63966  libstdc++-v3/testsuite/20_util/hash/60970.cc
  5cff0c5e33300b9f5a3f70e70fb086b7  libstdc++-v3/testsuite/20_util/hash/84998.cc
+ 4eaefc7af2963267cf693a946b55afe9  libstdc++-v3/testsuite/20_util/hash/89629.cc
  b57f09e4d4f0857ef2399e08258f68be  libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_flip_set.cc
  b83eb9b74655ef0695e50e595f19f404  libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_string_set.cc
  d9070e3783eb6f437f00415a8d1f2f25  libstdc++-v3/testsuite/20_util/hash/chi2_q_document_words.cc
*************** a5e184714ddd867798fa94c2ebe2c9fe  libstd
*** 73655,73662 ****
  34bee5445a2e040a512b487bc5f46268  libstdc++-v3/testsuite/20_util/is_constructible/80812.cc
  ee9f238d298fefd12b4b321d39224dd8  libstdc++-v3/testsuite/20_util/is_constructible/requirements/explicit_instantiation.cc
  28cb77c131abfb3a47871a75d1dbc4f4  libstdc++-v3/testsuite/20_util/is_constructible/requirements/typedefs.cc
! 239da8f9ba7f0a51066686760560f8e7  libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
! f3b4924bf0f593add6e2b108cc406432  libstdc++-v3/testsuite/20_util/is_constructible/value.cc
  b3ef5ee32480fe6a6f4b26acc5b44c72  libstdc++-v3/testsuite/20_util/is_convertible/requirements/explicit_instantiation.cc
  cd70ec5a9ae06842631fd8fa31348220  libstdc++-v3/testsuite/20_util/is_convertible/requirements/typedefs.cc
  31fd24a4e5e09b17fe8ac964de567d64  libstdc++-v3/testsuite/20_util/is_convertible/value.cc
--- 74179,74186 ----
  34bee5445a2e040a512b487bc5f46268  libstdc++-v3/testsuite/20_util/is_constructible/80812.cc
  ee9f238d298fefd12b4b321d39224dd8  libstdc++-v3/testsuite/20_util/is_constructible/requirements/explicit_instantiation.cc
  28cb77c131abfb3a47871a75d1dbc4f4  libstdc++-v3/testsuite/20_util/is_constructible/requirements/typedefs.cc
! e901c995c7d1daad30b971b8bfc79d64  libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
! e0167ce0367de637cc920121881479e7  libstdc++-v3/testsuite/20_util/is_constructible/value.cc
  b3ef5ee32480fe6a6f4b26acc5b44c72  libstdc++-v3/testsuite/20_util/is_convertible/requirements/explicit_instantiation.cc
  cd70ec5a9ae06842631fd8fa31348220  libstdc++-v3/testsuite/20_util/is_convertible/requirements/typedefs.cc
  31fd24a4e5e09b17fe8ac964de567d64  libstdc++-v3/testsuite/20_util/is_convertible/value.cc
*************** cd70ec5a9ae06842631fd8fa31348220  libstd
*** 73668,73674 ****
  bc127212fc71d16a83f8dd277d9d2286  libstdc++-v3/testsuite/20_util/is_copy_constructible/value.cc
  ce6191e946d6e8c2707829c222fac733  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/explicit_instantiation.cc
  fc6fa1ac2b3b46ed747864b880fe1529  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/typedefs.cc
! 80746c5a9a8bb074a5cc3b28be8d475d  libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc
  9e366844f4b37e4a2f4eed512be1801b  libstdc++-v3/testsuite/20_util/is_destructible/requirements/explicit_instantiation.cc
  4f931ec7ae80104f7fdf1120ca1940d4  libstdc++-v3/testsuite/20_util/is_destructible/requirements/typedefs.cc
  5a57187988c412b935b2a809f8179638  libstdc++-v3/testsuite/20_util/is_destructible/value.cc
--- 74192,74198 ----
  bc127212fc71d16a83f8dd277d9d2286  libstdc++-v3/testsuite/20_util/is_copy_constructible/value.cc
  ce6191e946d6e8c2707829c222fac733  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/explicit_instantiation.cc
  fc6fa1ac2b3b46ed747864b880fe1529  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/typedefs.cc
! 8b9de5356c593a93d26adbe03be78d84  libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc
  9e366844f4b37e4a2f4eed512be1801b  libstdc++-v3/testsuite/20_util/is_destructible/requirements/explicit_instantiation.cc
  4f931ec7ae80104f7fdf1120ca1940d4  libstdc++-v3/testsuite/20_util/is_destructible/requirements/typedefs.cc
  5a57187988c412b935b2a809f8179638  libstdc++-v3/testsuite/20_util/is_destructible/value.cc
*************** c6cb4f2b8d52b4fa40deb7de9c33ae8e  libstd
*** 73749,73755 ****
  f7b131d81bcf74d7bac7f77161e2230b  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation_ext.cc
  0fac290cf59185c0930c249dc1dedaf1  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc
  ef86e41f91053adf190cf1a1e10dad79  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs_ext.cc
! 7c3d1231001023333290ff7dc1a34e5e  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc
  6542600f8d8e44db336a2da4ce2d0583  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc
  5678e84f30bc3374f6270dab990cd7e2  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/explicit_instantiation.cc
  99b6db1eb0ad0964623487177eaec29f  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/typedefs.cc
--- 74273,74279 ----
  f7b131d81bcf74d7bac7f77161e2230b  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation_ext.cc
  0fac290cf59185c0930c249dc1dedaf1  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc
  ef86e41f91053adf190cf1a1e10dad79  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs_ext.cc
! 2a5ee39066e865be5c70999b384488ef  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc
  6542600f8d8e44db336a2da4ce2d0583  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc
  5678e84f30bc3374f6270dab990cd7e2  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/explicit_instantiation.cc
  99b6db1eb0ad0964623487177eaec29f  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/typedefs.cc
*************** e1993f7ba83873b0bc325ab53d7945a5  libstd
*** 73818,73824 ****
  3676d3b93dede30cd71d29ddee2da137  libstdc++-v3/testsuite/20_util/is_trivially_assignable/value.cc
  5449805a77d02588c19c8ce49b897721  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/explicit_instantiation.cc
  b51a3623284386948e01231b23c4ef38  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/typedefs.cc
! 5661baa554e7c5e4e2f7e5ef003310f9  libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc
  bd8a59605dcba36e84a77e314311784f  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/explicit_instantiation.cc
  a9944cb6258882c860bb9b3be6a11c4b  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/typedefs.cc
  cb9579523ffa9c296b89783726f12d16  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/value.cc
--- 74342,74348 ----
  3676d3b93dede30cd71d29ddee2da137  libstdc++-v3/testsuite/20_util/is_trivially_assignable/value.cc
  5449805a77d02588c19c8ce49b897721  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/explicit_instantiation.cc
  b51a3623284386948e01231b23c4ef38  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/typedefs.cc
! e7c8b1b7df738b3925e8ac759207a579  libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc
  bd8a59605dcba36e84a77e314311784f  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/explicit_instantiation.cc
  a9944cb6258882c860bb9b3be6a11c4b  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/typedefs.cc
  cb9579523ffa9c296b89783726f12d16  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/value.cc
*************** d6d497226001b84e608e9ad011d12b2b  libstd
*** 73830,73836 ****
  d8bd2e65a1413c61a4179037f30e0405  libstdc++-v3/testsuite/20_util/is_trivially_copyable/value.cc
  c26f9cd364efb1be39a4c57ec5999a52  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/explicit_instantiation.cc
  4df7a1bc5c3761cbdb938eaac8a774d9  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/typedefs.cc
! e280e832a0a51788f3df8403c161fe48  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc
  e922716c292da2ea6cf386549d32c0bc  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/explicit_instantiation.cc
  0b84ac5f5cc1c0b0367832c8bdb9087c  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/typedefs.cc
  04d79d317e28dc93cf7112d85d0dbba0  libstdc++-v3/testsuite/20_util/is_trivially_destructible/value.cc
--- 74354,74360 ----
  d8bd2e65a1413c61a4179037f30e0405  libstdc++-v3/testsuite/20_util/is_trivially_copyable/value.cc
  c26f9cd364efb1be39a4c57ec5999a52  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/explicit_instantiation.cc
  4df7a1bc5c3761cbdb938eaac8a774d9  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/typedefs.cc
! a6a41ab6541b50d3c92389d44330385e  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc
  e922716c292da2ea6cf386549d32c0bc  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/explicit_instantiation.cc
  0b84ac5f5cc1c0b0367832c8bdb9087c  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/typedefs.cc
  04d79d317e28dc93cf7112d85d0dbba0  libstdc++-v3/testsuite/20_util/is_trivially_destructible/value.cc
*************** c0e1b293aaefc3b0ee8098fa1bc758d7  libstd
*** 73902,73908 ****
  dc4e6ac4c094dbcf83f1f12e9b8c8023  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/1.cc
  09175ba95eced101e7be251cf2678168  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/2.cc
  6a4f8534150351919cabaef08e105b62  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/3.cc
! 46bf1d9af774a1f6b654420bb614845b  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/4.cc
  c00fff8e62f8953fe5486158c51074c8  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/5.cc
  f242602d013cb71a054abd4c5e455607  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/1.cc
  cc6a00e5c60d2b53003fac8d3881c3bb  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/2.cc
--- 74426,74432 ----
  dc4e6ac4c094dbcf83f1f12e9b8c8023  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/1.cc
  09175ba95eced101e7be251cf2678168  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/2.cc
  6a4f8534150351919cabaef08e105b62  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/3.cc
! b66ae8e2d11c8fad6f67349625c0d9df  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/4.cc
  c00fff8e62f8953fe5486158c51074c8  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/5.cc
  f242602d013cb71a054abd4c5e455607  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/1.cc
  cc6a00e5c60d2b53003fac8d3881c3bb  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/2.cc
*************** cf77f78604b6146e6bdc4ce0edc3f7da  libstd
*** 73917,73923 ****
  f37ef6d81000bb0a530a664a91842d4a  libstdc++-v3/testsuite/20_util/optional/observers/1.cc
  94b5b142265de4cda53f6171a5cbe369  libstdc++-v3/testsuite/20_util/optional/observers/2.cc
  4c29d80534358c9f991791734a4b9795  libstdc++-v3/testsuite/20_util/optional/observers/3.cc
! 0f9f503e3ba553218f6629f2804820aa  libstdc++-v3/testsuite/20_util/optional/observers/4.cc
  8796bef4e2f03df43bc996fed54c72c6  libstdc++-v3/testsuite/20_util/optional/observers/5.cc
  bbfbbbbd09733cba96822ac4d7dedd1c  libstdc++-v3/testsuite/20_util/optional/observers/6.cc
  166d2606eaaee19dbf8d2f00f847b8fa  libstdc++-v3/testsuite/20_util/optional/relops/1.cc
--- 74441,74447 ----
  f37ef6d81000bb0a530a664a91842d4a  libstdc++-v3/testsuite/20_util/optional/observers/1.cc
  94b5b142265de4cda53f6171a5cbe369  libstdc++-v3/testsuite/20_util/optional/observers/2.cc
  4c29d80534358c9f991791734a4b9795  libstdc++-v3/testsuite/20_util/optional/observers/3.cc
! 6d1cbddd86e9f84a378b5e74879836ab  libstdc++-v3/testsuite/20_util/optional/observers/4.cc
  8796bef4e2f03df43bc996fed54c72c6  libstdc++-v3/testsuite/20_util/optional/observers/5.cc
  bbfbbbbd09733cba96822ac4d7dedd1c  libstdc++-v3/testsuite/20_util/optional/observers/6.cc
  166d2606eaaee19dbf8d2f00f847b8fa  libstdc++-v3/testsuite/20_util/optional/relops/1.cc
*************** e91b4bd07c82ba988422b73bed116160  libstd
*** 74044,74051 ****
  a26314d509914bf6b8a3b34629c1e3a3  libstdc++-v3/testsuite/20_util/scoped_allocator/3.cc
  9b0e75588ca9cbaa8b35ec0c76d1e5f0  libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc
  f43ab512c372b665a0a24b7cd50d106c  libstdc++-v3/testsuite/20_util/scoped_allocator/69114.cc
! c6142ee0a29a7b41216e755cb4c93b89  libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc
  e1d77ef5b3b7a83ff3d2f00513e78106  libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair.cc
  c46ddc47cc3b0714596005ffb97c03f3  libstdc++-v3/testsuite/20_util/scoped_allocator/outermost.cc
  4fb38daf6b78f9a84a6d55024e3b7a47  libstdc++-v3/testsuite/20_util/scoped_allocator/propagation.cc
  3812da962f5af5e02504c3f27c2b5c2a  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc
--- 74568,74576 ----
  a26314d509914bf6b8a3b34629c1e3a3  libstdc++-v3/testsuite/20_util/scoped_allocator/3.cc
  9b0e75588ca9cbaa8b35ec0c76d1e5f0  libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc
  f43ab512c372b665a0a24b7cd50d106c  libstdc++-v3/testsuite/20_util/scoped_allocator/69114.cc
! c8e06d724d2b9daa4fea130fd1bab429  libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc
  e1d77ef5b3b7a83ff3d2f00513e78106  libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair.cc
+ 9a0a9a13d40a3588368e4a6759e452d9  libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc
  c46ddc47cc3b0714596005ffb97c03f3  libstdc++-v3/testsuite/20_util/scoped_allocator/outermost.cc
  4fb38daf6b78f9a84a6d55024e3b7a47  libstdc++-v3/testsuite/20_util/scoped_allocator/propagation.cc
  3812da962f5af5e02504c3f27c2b5c2a  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc
*************** f80ddf8215ff699da2c9c05cbb28c2fd  libstd
*** 74201,74207 ****
  6d37a6c516aa1d7ddad5f0ce5d8e2c41  libstdc++-v3/testsuite/20_util/tuple/cons/48476.cc
  64cdd6d89387ab07c0839f6897e1694c  libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc
  10e9db1fe2c454993dc4f1a56d9c35e8  libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc
! 43128d3a007de88940c8f0afe1bd80f7  libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc
  764cef886bd43a9d53cb1f44a224127f  libstdc++-v3/testsuite/20_util/tuple/cons/assignment.cc
  38be1bb9e0717fbb641b42a31f71cc9f  libstdc++-v3/testsuite/20_util/tuple/cons/big_tuples.cc
  998ae00e699c737b806cec41ab638a1f  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr-2.cc
--- 74726,74732 ----
  6d37a6c516aa1d7ddad5f0ce5d8e2c41  libstdc++-v3/testsuite/20_util/tuple/cons/48476.cc
  64cdd6d89387ab07c0839f6897e1694c  libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc
  10e9db1fe2c454993dc4f1a56d9c35e8  libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc
! 36ecedd36d698a14c2a8fcec9ef0e5cf  libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc
  764cef886bd43a9d53cb1f44a224127f  libstdc++-v3/testsuite/20_util/tuple/cons/assignment.cc
  38be1bb9e0717fbb641b42a31f71cc9f  libstdc++-v3/testsuite/20_util/tuple/cons/big_tuples.cc
  998ae00e699c737b806cec41ab638a1f  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr-2.cc
*************** e117f13086c13e2ba3df110996d3b7fa  libstd
*** 74256,74262 ****
  5ff588b783030acfc61ae193d809940c  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-2.cc
  cb2bfb16a6a9bd9f04c6c60346718c54  libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc
  0d6251c39605ffb055857e967d0005dd  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635.cc
! 87ecfa32e7b5d05ea2e238f7340d5636  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
  a3829cf8a45d228fe9d014726d70d4ac  libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc
  b86eb4f95eb3723e429026bf3f9cdfb3  libstdc++-v3/testsuite/20_util/unique_ptr/assign/cv_qual.cc
  94e2acf2dce72db5225fbbacdf5510d5  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move.cc
--- 74781,74788 ----
  5ff588b783030acfc61ae193d809940c  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-2.cc
  cb2bfb16a6a9bd9f04c6c60346718c54  libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc
  0d6251c39605ffb055857e967d0005dd  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635.cc
! 1bcafc530706d1433a3a65fa547950a9  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
! 8fb0f2007f9a8170e29b505990a47cf0  libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc
  a3829cf8a45d228fe9d014726d70d4ac  libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc
  b86eb4f95eb3723e429026bf3f9cdfb3  libstdc++-v3/testsuite/20_util/unique_ptr/assign/cv_qual.cc
  94e2acf2dce72db5225fbbacdf5510d5  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move.cc
*************** fd7d55cf83371c9e9d621d3002317b94  libstd
*** 74271,74277 ****
  fee70f9567da3a2ef36276312783aa88  libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr.cc
  533eb72b606258139e7514cd4c689b78  libstdc++-v3/testsuite/20_util/unique_ptr/cons/convertible_neg.cc
  95b11a7eef8ff4c10c5b97475301fc1d  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual.cc
! 7a700ba3162017cbcc26390eed140ed7  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc
  d2b877e8db50f8fa08ca966a3c81291c  libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc
  6426ae19422b4abbe024d0d4b4785a2f  libstdc++-v3/testsuite/20_util/unique_ptr/cons/default.cc
  bee7be33cdf693573fffc08c157838b9  libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc
--- 74797,74803 ----
  fee70f9567da3a2ef36276312783aa88  libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr.cc
  533eb72b606258139e7514cd4c689b78  libstdc++-v3/testsuite/20_util/unique_ptr/cons/convertible_neg.cc
  95b11a7eef8ff4c10c5b97475301fc1d  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual.cc
! 9da882f2d65df223848fd665b58eb36d  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc
  d2b877e8db50f8fa08ca966a3c81291c  libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc
  6426ae19422b4abbe024d0d4b4785a2f  libstdc++-v3/testsuite/20_util/unique_ptr/cons/default.cc
  bee7be33cdf693573fffc08c157838b9  libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc
*************** bbebe5bc011885ad0f0b60e4f5e29033  libstd
*** 74289,74294 ****
--- 74815,74821 ----
  fd493e0e5d685bba46521cfb4ed1e84c  libstdc++-v3/testsuite/20_util/unique_ptr/hash/1.cc
  a1cdc46132a4eb3b88fcceec1b59eef9  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/43183.cc
  b5719d509c61b35e606a9cf865a5770a  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/48398.cc
+ 652a945e3e33dd9445a13cebd0009ed8  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/93562.cc
  4254768bebc6945b5eb03abeb7ab60ff  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/cv_qual.cc
  d964cc89f00d447d127000b27606cdb2  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/reset_neg.cc
  91cf7374799d8332580fa75fd5036ba3  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/explicit_instantiation/explicit_instantiation.cc
*************** ca69a45b7c9b170b487095106ad60531  libstd
*** 74299,74306 ****
  bdc18fecd9027b83de5c74a9a2a17a2e  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap.cc
  f232c317b13b105a87147eeacf89d1d5  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc
  7b35ddf7d24210a38efa58fae7d5d710  libstdc++-v3/testsuite/20_util/uses_allocator/69114.cc
! 4f89e8cb8eaad0dd99bcb3a628362515  libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc
! 9b9c4af925f555a05d569ac0f330c91f  libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc
  36575c5c0f8106eb535914376afa8cc7  libstdc++-v3/testsuite/20_util/uses_allocator/construction.cc
  ffd1f920ce5d07355393fddfcd00356f  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/explicit_instantiation.cc
  6c8d6b0569dd8dd87422d8478bd35bd9  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/typedefs.cc
--- 74826,74833 ----
  bdc18fecd9027b83de5c74a9a2a17a2e  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap.cc
  f232c317b13b105a87147eeacf89d1d5  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc
  7b35ddf7d24210a38efa58fae7d5d710  libstdc++-v3/testsuite/20_util/uses_allocator/69114.cc
! 12b6abf76b2dbc3e7c36c9ceceedd092  libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc
! ef650152ada62d7ba46138f57422e9f0  libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc
  36575c5c0f8106eb535914376afa8cc7  libstdc++-v3/testsuite/20_util/uses_allocator/construction.cc
  ffd1f920ce5d07355393fddfcd00356f  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/explicit_instantiation.cc
  6c8d6b0569dd8dd87422d8478bd35bd9  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/typedefs.cc
*************** ffd1f920ce5d07355393fddfcd00356f  libstd
*** 74310,74316 ****
  607aa2f9940ef542a06a4e33fd69a96b  libstdc++-v3/testsuite/20_util/variant/85183.cc
  87b33824a235eca13356293fda90c89b  libstdc++-v3/testsuite/20_util/variant/86874.cc
  5dfa07d9513e33f1fb46f85d6c9a9040  libstdc++-v3/testsuite/20_util/variant/any.cc
! 78686e68a5fdb7ab0a72bcf32d78e6e7  libstdc++-v3/testsuite/20_util/variant/compile.cc
  75e2ca0044681e55785f1949fc6677d5  libstdc++-v3/testsuite/20_util/variant/deduction.cc
  a8518acf11f1427f9c470465bd65a52e  libstdc++-v3/testsuite/20_util/variant/hash.cc
  376efd260ad9bbf6de4de519c6049b36  libstdc++-v3/testsuite/20_util/variant/index_type.cc
--- 74837,74843 ----
  607aa2f9940ef542a06a4e33fd69a96b  libstdc++-v3/testsuite/20_util/variant/85183.cc
  87b33824a235eca13356293fda90c89b  libstdc++-v3/testsuite/20_util/variant/86874.cc
  5dfa07d9513e33f1fb46f85d6c9a9040  libstdc++-v3/testsuite/20_util/variant/any.cc
! 3a6507f5c1907fa3d26327f69d279ef4  libstdc++-v3/testsuite/20_util/variant/compile.cc
  75e2ca0044681e55785f1949fc6677d5  libstdc++-v3/testsuite/20_util/variant/deduction.cc
  a8518acf11f1427f9c470465bd65a52e  libstdc++-v3/testsuite/20_util/variant/hash.cc
  376efd260ad9bbf6de4de519c6049b36  libstdc++-v3/testsuite/20_util/variant/index_type.cc
*************** dfd8058c798fbe325b5bd8140bcca4fb  libstd
*** 74628,74633 ****
--- 75155,75161 ----
  49ae415d00483574240fa3d99b95d63d  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc
  10ee68cf9c90c5708fe983b5bdefc221  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/83511.cc
  5d93952eb3d4997f13486b39df2e0ba0  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/2.cc
+ 4908512d59a8e3b2e410ccc38ba2705e  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc
  a734cbdf8949c90c23f4b09b361f3305  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc
  15c7d5bed6043124195f71158e468c13  libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc
  3e64b266315f4396a46c4aef92098b1d  libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc
*************** fdce0ee37576b469d90f78b6210626aa  libstd
*** 75468,75474 ****
  11f831ed76fbf7dc616371699927489a  libstdc++-v3/testsuite/23_containers/forward_list/allocator/swap.cc
  af454948aa829a23fdfa216e96ae8021  libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc
  95411b8726b6525fbf86208581538928  libstdc++-v3/testsuite/23_containers/forward_list/capacity/resize_size.cc
! 418ddd51f5b95994a371b8b969c76fd8  libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc
  2700909a190dde56cb1c4eff1009f300  libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc
  6d4b5d62991231b98629ff777450b01b  libstdc++-v3/testsuite/23_containers/forward_list/cons/10.cc
  23f9124fd869502a84991368366b8830  libstdc++-v3/testsuite/23_containers/forward_list/cons/11.cc
--- 75996,76002 ----
  11f831ed76fbf7dc616371699927489a  libstdc++-v3/testsuite/23_containers/forward_list/allocator/swap.cc
  af454948aa829a23fdfa216e96ae8021  libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc
  95411b8726b6525fbf86208581538928  libstdc++-v3/testsuite/23_containers/forward_list/capacity/resize_size.cc
! 6d598f7660eb689ce73a4e188dc2c1dc  libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc
  2700909a190dde56cb1c4eff1009f300  libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc
  6d4b5d62991231b98629ff777450b01b  libstdc++-v3/testsuite/23_containers/forward_list/cons/10.cc
  23f9124fd869502a84991368366b8830  libstdc++-v3/testsuite/23_containers/forward_list/cons/11.cc
*************** a633c782d23cb7199bf027aaf02137d9  libstd
*** 75536,75541 ****
--- 76064,76070 ----
  0a9f4a8d4a48d152ac396d182d2f994c  libstdc++-v3/testsuite/23_containers/forward_list/operations/5.cc
  f5a51a140f4c9a945478c86ca3147e17  libstdc++-v3/testsuite/23_containers/forward_list/operations/6.cc
  7ccd109239cfb70b7f412a059e33fe12  libstdc++-v3/testsuite/23_containers/forward_list/operations/7.cc
+ 2582009bfec0cfdae2cbb12d5e9d1425  libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc
  2e898b2be369782a1a999d0fee932cf7  libstdc++-v3/testsuite/23_containers/forward_list/operations/remove_freed.cc
  bf8932fdddb81e3e8c33d2d99fb46089  libstdc++-v3/testsuite/23_containers/forward_list/range_access.cc
  3ec1ee6c2abea43b06c858f557533326  libstdc++-v3/testsuite/23_containers/forward_list/requirements/citerators.cc
*************** f92b4d069878169afcf9df98874d1030  libstd
*** 75698,75704 ****
  036186d057ce9866c23e744d860209dd  libstdc++-v3/testsuite/23_containers/map/18604.cc
  506897298774fb990be179aae91947c1  libstdc++-v3/testsuite/23_containers/map/23781_neg.cc
  8387147eb5ef7bab14191bfc2c0f56ab  libstdc++-v3/testsuite/23_containers/map/48101-2_neg.cc
! a665795e7cb6ddb3bf1cd256de06979f  libstdc++-v3/testsuite/23_containers/map/48101_neg.cc
  a73b3e9518118adfe5b247ca42883607  libstdc++-v3/testsuite/23_containers/map/56613.cc
  e11a2ec484ac51a97fa2bf5603a37d08  libstdc++-v3/testsuite/23_containers/map/58764.cc
  3b3efc1996a1f4a53994844d9d3de11b  libstdc++-v3/testsuite/23_containers/map/59872.cc
--- 76227,76233 ----
  036186d057ce9866c23e744d860209dd  libstdc++-v3/testsuite/23_containers/map/18604.cc
  506897298774fb990be179aae91947c1  libstdc++-v3/testsuite/23_containers/map/23781_neg.cc
  8387147eb5ef7bab14191bfc2c0f56ab  libstdc++-v3/testsuite/23_containers/map/48101-2_neg.cc
! 3a60c587710041178e44d1c2b6ce711e  libstdc++-v3/testsuite/23_containers/map/48101_neg.cc
  a73b3e9518118adfe5b247ca42883607  libstdc++-v3/testsuite/23_containers/map/56613.cc
  e11a2ec484ac51a97fa2bf5603a37d08  libstdc++-v3/testsuite/23_containers/map/58764.cc
  3b3efc1996a1f4a53994844d9d3de11b  libstdc++-v3/testsuite/23_containers/map/59872.cc
*************** ee615db23935df14ef4ce7b6f32db785  libstd
*** 75786,75792 ****
  db8df6cb8a43e2b410c1c9c19917b065  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
  eed7cbf88734f2a3fe96255f205cd08b  libstdc++-v3/testsuite/23_containers/multimap/23781_neg.cc
  c730ab539e7f19642bf9d78b5aa55f6c  libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc
! b27117a94b81b776572dd6b27e3859be  libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc
  bf7d5b56860f7a8c63fae7b940bf6b7d  libstdc++-v3/testsuite/23_containers/multimap/58764.cc
  0f48d4d54426223d8abb5f18dbaf5ad6  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy.cc
  2157364773c6f0a5ac884ad6a3169699  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy_assign.cc
--- 76315,76321 ----
  db8df6cb8a43e2b410c1c9c19917b065  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
  eed7cbf88734f2a3fe96255f205cd08b  libstdc++-v3/testsuite/23_containers/multimap/23781_neg.cc
  c730ab539e7f19642bf9d78b5aa55f6c  libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc
! 24afe707107737889c6fe305a8ffd498  libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc
  bf7d5b56860f7a8c63fae7b940bf6b7d  libstdc++-v3/testsuite/23_containers/multimap/58764.cc
  0f48d4d54426223d8abb5f18dbaf5ad6  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy.cc
  2157364773c6f0a5ac884ad6a3169699  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy_assign.cc
*************** ee674edc14301f6e58e49e597c45ca5e  libstd
*** 75856,75862 ****
  e5513ccf38ceb64c14b3938488527906  libstdc++-v3/testsuite/23_containers/multiset/14340.cc
  c4d0a1f01434484fb29dc8c57d54b4b5  libstdc++-v3/testsuite/23_containers/multiset/23781_neg.cc
  92a96ebe21192cb65ad28fda0079a3de  libstdc++-v3/testsuite/23_containers/multiset/48101-2_neg.cc
! 8a01ad9498fb26ee2e9049bde9ab4bd4  libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc
  52a6223703555f7ebbaaffe088b06c02  libstdc++-v3/testsuite/23_containers/multiset/58764.cc
  a50b4d3a94496a37f6d9a3d5355fbd50  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy.cc
  135fab35e86168bc04da2c5aa1bdc559  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy_assign.cc
--- 76385,76391 ----
  e5513ccf38ceb64c14b3938488527906  libstdc++-v3/testsuite/23_containers/multiset/14340.cc
  c4d0a1f01434484fb29dc8c57d54b4b5  libstdc++-v3/testsuite/23_containers/multiset/23781_neg.cc
  92a96ebe21192cb65ad28fda0079a3de  libstdc++-v3/testsuite/23_containers/multiset/48101-2_neg.cc
! f40adb48efd05255ed141234d2e0c364  libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc
  52a6223703555f7ebbaaffe088b06c02  libstdc++-v3/testsuite/23_containers/multiset/58764.cc
  a50b4d3a94496a37f6d9a3d5355fbd50  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy.cc
  135fab35e86168bc04da2c5aa1bdc559  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy_assign.cc
*************** ee11adc3a0267b6206e764dd401cf44e  libstd
*** 75924,75929 ****
--- 76453,76459 ----
  5b38094824dc16c8c29d878c1cf080f5  libstdc++-v3/testsuite/23_containers/priority_queue/77528.cc
  0c45c759a9c047bf771f8cbdbb1cbcb1  libstdc++-v3/testsuite/23_containers/priority_queue/allocator.cc
  73e87c518935b675788f61ab9e9ff6ac  libstdc++-v3/testsuite/23_containers/priority_queue/deduction.cc
+ d935a8ceb6ee9024a81581d78574a605  libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc
  0ac0c8bf338350dc125fc27a278c6d19  libstdc++-v3/testsuite/23_containers/priority_queue/members/7161.cc
  8a8cee85ba42bcb1224a5bc52d9ca649  libstdc++-v3/testsuite/23_containers/priority_queue/moveable.cc
  cbe8cc79f8cdefbf0cf6f883eea08581  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/constructible.cc
*************** a16981324a994365fdb13ecb5b8b2aad  libstd
*** 75945,75952 ****
  e19a9f60df0a3e78b5aaa08a3c9e785e  libstdc++-v3/testsuite/23_containers/set/18604.cc
  c87096b72fdcb83b48ecc4e22ee3880d  libstdc++-v3/testsuite/23_containers/set/23781_neg.cc
  5fae4b2938fdb12cca104edfb3c1ea75  libstdc++-v3/testsuite/23_containers/set/48101-2_neg.cc
! 437f8fea8115d4ae5a53b38639865e69  libstdc++-v3/testsuite/23_containers/set/48101_neg.cc
  980d2f616bbb1f59b943008eab1126b5  libstdc++-v3/testsuite/23_containers/set/58764.cc
  c4b7f2e842a50aeae436a871c5946c9a  libstdc++-v3/testsuite/23_containers/set/allocator/71964.cc
  91964c53f95e418b337c5cb205c397f9  libstdc++-v3/testsuite/23_containers/set/allocator/copy.cc
  5c1eb028c247c235f2ac0056a1037dcc  libstdc++-v3/testsuite/23_containers/set/allocator/copy_assign.cc
--- 76475,76483 ----
  e19a9f60df0a3e78b5aaa08a3c9e785e  libstdc++-v3/testsuite/23_containers/set/18604.cc
  c87096b72fdcb83b48ecc4e22ee3880d  libstdc++-v3/testsuite/23_containers/set/23781_neg.cc
  5fae4b2938fdb12cca104edfb3c1ea75  libstdc++-v3/testsuite/23_containers/set/48101-2_neg.cc
! ef12a854aa3e4692b5b1b7e47158e6fc  libstdc++-v3/testsuite/23_containers/set/48101_neg.cc
  980d2f616bbb1f59b943008eab1126b5  libstdc++-v3/testsuite/23_containers/set/58764.cc
+ d1d49b41675997219f39e670fdfbdf0c  libstdc++-v3/testsuite/23_containers/set/85965.cc
  c4b7f2e842a50aeae436a871c5946c9a  libstdc++-v3/testsuite/23_containers/set/allocator/71964.cc
  91964c53f95e418b337c5cb205c397f9  libstdc++-v3/testsuite/23_containers/set/allocator/copy.cc
  5c1eb028c247c235f2ac0056a1037dcc  libstdc++-v3/testsuite/23_containers/set/allocator/copy_assign.cc
*************** bac724d37dbe3d26e36800b2fd3cdef8  libstd
*** 76026,76032 ****
  cb92d4a16aaa3e0212d51daa15a727a7  libstdc++-v3/testsuite/23_containers/stack/requirements/typedefs.cc
  562d59a3678df51167e112bf864bd4c1  libstdc++-v3/testsuite/23_containers/stack/requirements/uses_allocator.cc
  f942eb4cad9f35f823331d7981ec618d  libstdc++-v3/testsuite/23_containers/unordered_map/48101-2_neg.cc
! 1b9a7057b112a8990bb4694ccefa99cf  libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc
  68113270aec5e36d6d3290b17ed7a4df  libstdc++-v3/testsuite/23_containers/unordered_map/55043.cc
  613adb0359a1d90a7bf1e76c2322b438  libstdc++-v3/testsuite/23_containers/unordered_map/59548.cc
  8321846f7f82d87f7f939febc30a5bd2  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/copy.cc
--- 76557,76563 ----
  cb92d4a16aaa3e0212d51daa15a727a7  libstdc++-v3/testsuite/23_containers/stack/requirements/typedefs.cc
  562d59a3678df51167e112bf864bd4c1  libstdc++-v3/testsuite/23_containers/stack/requirements/uses_allocator.cc
  f942eb4cad9f35f823331d7981ec618d  libstdc++-v3/testsuite/23_containers/unordered_map/48101-2_neg.cc
! 434b5092ff75988c804dcb50218cfd5b  libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc
  68113270aec5e36d6d3290b17ed7a4df  libstdc++-v3/testsuite/23_containers/unordered_map/55043.cc
  613adb0359a1d90a7bf1e76c2322b438  libstdc++-v3/testsuite/23_containers/unordered_map/59548.cc
  8321846f7f82d87f7f939febc30a5bd2  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/copy.cc
*************** c709be529793865ca1c60a7c9977fd55  libstd
*** 76118,76124 ****
  b0150c9747406d73fe9c5ddc43dbe2a5  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/5.cc
  b7d32ef1d9d91301237bbd287f96e7cb  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/typedefs.cc
  c9676d8d0aec83b8e6370c30cfe090bd  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101-2_neg.cc
! afde1979e2d9ab58e4fa185a5855981c  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc
  136f0fd7955cfba79f608767d44c4d05  libstdc++-v3/testsuite/23_containers/unordered_multimap/55043.cc
  aa95467c048dc1f338ee92b94b2dd292  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy.cc
  b35d951a5ff0eff0aba071ad9e8983ce  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy_assign.cc
--- 76649,76655 ----
  b0150c9747406d73fe9c5ddc43dbe2a5  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/5.cc
  b7d32ef1d9d91301237bbd287f96e7cb  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/typedefs.cc
  c9676d8d0aec83b8e6370c30cfe090bd  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101-2_neg.cc
! 0d7551a97cdb96bd2b680bd5d16d4963  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc
  136f0fd7955cfba79f608767d44c4d05  libstdc++-v3/testsuite/23_containers/unordered_multimap/55043.cc
  aa95467c048dc1f338ee92b94b2dd292  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy.cc
  b35d951a5ff0eff0aba071ad9e8983ce  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy_assign.cc
*************** f0eae8af5a5d1485a630d856cf073eb5  libstd
*** 76202,76208 ****
  e405fb432073b9f6fd7c8a43642df36f  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/5.cc
  d21ceeb7c7c6d758fbe0a8a09b752666  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/typedefs.cc
  9cba97bf7e1f201fef1fcfec49f3afc7  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101-2_neg.cc
! f71f25dd0102a4d51f0e2ddfd970462b  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc
  a936407774ca2d4ef8864115572a6ed4  libstdc++-v3/testsuite/23_containers/unordered_multiset/55043.cc
  89d9696694a4458608916880c4bf9a4d  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy.cc
  bcb179811b302a93a42479f28884ed39  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy_assign.cc
--- 76733,76739 ----
  e405fb432073b9f6fd7c8a43642df36f  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/5.cc
  d21ceeb7c7c6d758fbe0a8a09b752666  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/typedefs.cc
  9cba97bf7e1f201fef1fcfec49f3afc7  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101-2_neg.cc
! 4ca3c7716521382a1b468debbebf76e9  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc
  a936407774ca2d4ef8864115572a6ed4  libstdc++-v3/testsuite/23_containers/unordered_multiset/55043.cc
  89d9696694a4458608916880c4bf9a4d  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy.cc
  bcb179811b302a93a42479f28884ed39  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy_assign.cc
*************** c3e5d53517e01006418201673bb9ab01  libstd
*** 76278,76290 ****
  b8eb4b4f0823c08b2f8a51dfaeea6fbc  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/5.cc
  cf6ddf2772375ece01426c09008399f7  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/typedefs.cc
  0836c1cef12ad3449a1559fe2c5aa337  libstdc++-v3/testsuite/23_containers/unordered_set/48101-2_neg.cc
! 379f7f4d91e4e80506d99360570e30db  libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc
  bda8efa68f0f300361afa662b76639fc  libstdc++-v3/testsuite/23_containers/unordered_set/55043.cc
  4fdfce80af2da4a93c37aa3959979185  libstdc++-v3/testsuite/23_containers/unordered_set/56267-2.cc
  558cf60eca0016a67d0c4a4a8754ffff  libstdc++-v3/testsuite/23_containers/unordered_set/56267.cc
  ce66a0bc5d2a126f4c1ce8f8a6c9179e  libstdc++-v3/testsuite/23_containers/unordered_set/56278.cc
  983aed75d530a4aa61f55edf38cd84b5  libstdc++-v3/testsuite/23_containers/unordered_set/61143.cc
  6ea841e1e55c38c21f5abcf6893f29b1  libstdc++-v3/testsuite/23_containers/unordered_set/63456.cc
  2eb4678b447646da664adda6e8b3124f  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy.cc
  3cf21deaba4e25d459305684a3322b8b  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy_assign.cc
  a698fbcee2da73af797dfa2ff7fe21b7  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc
--- 76809,76822 ----
  b8eb4b4f0823c08b2f8a51dfaeea6fbc  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/5.cc
  cf6ddf2772375ece01426c09008399f7  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/typedefs.cc
  0836c1cef12ad3449a1559fe2c5aa337  libstdc++-v3/testsuite/23_containers/unordered_set/48101-2_neg.cc
! f86e4f24867c2cf4bd07ec3eb68eaff2  libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc
  bda8efa68f0f300361afa662b76639fc  libstdc++-v3/testsuite/23_containers/unordered_set/55043.cc
  4fdfce80af2da4a93c37aa3959979185  libstdc++-v3/testsuite/23_containers/unordered_set/56267-2.cc
  558cf60eca0016a67d0c4a4a8754ffff  libstdc++-v3/testsuite/23_containers/unordered_set/56267.cc
  ce66a0bc5d2a126f4c1ce8f8a6c9179e  libstdc++-v3/testsuite/23_containers/unordered_set/56278.cc
  983aed75d530a4aa61f55edf38cd84b5  libstdc++-v3/testsuite/23_containers/unordered_set/61143.cc
  6ea841e1e55c38c21f5abcf6893f29b1  libstdc++-v3/testsuite/23_containers/unordered_set/63456.cc
+ 7b09154a05fe6222e87173a6dead7b2d  libstdc++-v3/testsuite/23_containers/unordered_set/85965.cc
  2eb4678b447646da664adda6e8b3124f  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy.cc
  3cf21deaba4e25d459305684a3322b8b  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy_assign.cc
  a698fbcee2da73af797dfa2ff7fe21b7  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc
*************** d8a41dec254cfb26f4efbb64f757f5c5  libstd
*** 77175,77181 ****
  150d39370e00e36ba7f7f5936eafdd60  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_global_c++17.cc
  026edfa7cd685d0219435564e9a9165e  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std.cc
  81bb4e8d816ca813278503256edf2a85  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std_c++17.cc
! 07defa45c1fa99e6a1ed8adad0bf4204  libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc
  619e1013780958f3d1a43f3d1a59c3e4  libstdc++-v3/testsuite/26_numerics/headers/cmath/macros.cc
  2f28d06d7989d0f4981ab470e43ebdaa  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads.cc
  ee5ebb05a5575f5fefbf0a8f4abe7a32  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads_c++0x_neg.cc
--- 77707,77713 ----
  150d39370e00e36ba7f7f5936eafdd60  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_global_c++17.cc
  026edfa7cd685d0219435564e9a9165e  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std.cc
  81bb4e8d816ca813278503256edf2a85  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std_c++17.cc
! 0d662be29400ef66512c233cdd0bccb7  libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc
  619e1013780958f3d1a43f3d1a59c3e4  libstdc++-v3/testsuite/26_numerics/headers/cmath/macros.cc
  2f28d06d7989d0f4981ab470e43ebdaa  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads.cc
  ee5ebb05a5575f5fefbf0a8f4abe7a32  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads_c++0x_neg.cc
*************** c7c484d24f2c0ed09c7450eb0367000f  libstd
*** 77411,77417 ****
  b97afcf969d15cc46cbd16b0b8dfa434  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/values.cc
  ddee65372702dcbe42b6c92aedd5f180  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/explicit_instantiation/1.cc
  2721ada822954bd385d9e450d45c9ae5  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/typedefs.cc
! 81d0a65cc33d66de1aef613713ef5a6e  libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
  79834f7bfd50512b2dcc68c12f572400  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default.cc
  ac71ee04e1231fa1890d5103c2c84adc  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc
  b926245686cadb267ebd5ea61da1254b  libstdc++-v3/testsuite/26_numerics/random/random_device/requirements/typedefs.cc
--- 77943,77949 ----
  b97afcf969d15cc46cbd16b0b8dfa434  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/values.cc
  ddee65372702dcbe42b6c92aedd5f180  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/explicit_instantiation/1.cc
  2721ada822954bd385d9e450d45c9ae5  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/typedefs.cc
! 95674fbf58ab2242e6f8706a18764965  libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
  79834f7bfd50512b2dcc68c12f572400  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default.cc
  ac71ee04e1231fa1890d5103c2c84adc  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc
  b926245686cadb267ebd5ea61da1254b  libstdc++-v3/testsuite/26_numerics/random/random_device/requirements/typedefs.cc
*************** f2bf21b06f33801dc1feecb4afeaa64c  libstd
*** 78257,78266 ****
  7b041aa20fe10f4195f6274e6fce7cfd  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/4.cc
  d607b0a2b67456cddf26dbf3f3d8c134  libstdc++-v3/testsuite/27_io/filesystem/directory_entry/86597.cc
  3829cc13e1fdd0bab7798e0299aa207d  libstdc++-v3/testsuite/27_io/filesystem/file_status/1.cc
  66a3cf9ca186f16807d3251cae4008f9  libstdc++-v3/testsuite/27_io/filesystem/iterators/directory_iterator.cc
  21f3a9ca0bffba3d2a34d06dbb0ab7e8  libstdc++-v3/testsuite/27_io/filesystem/iterators/pop.cc
  23343661d584d190aa1dfc7902635d25  libstdc++-v3/testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc
! f37e137761fac5d31bd363b1358f3598  libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc
  3c9c02d4ede1868be1f84f9947361acf  libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
  a887b16caa3fadd0149da529feb5ef3b  libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
  a6fc48e370c97136b93b4d60da06cba7  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
--- 78789,78799 ----
  7b041aa20fe10f4195f6274e6fce7cfd  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/4.cc
  d607b0a2b67456cddf26dbf3f3d8c134  libstdc++-v3/testsuite/27_io/filesystem/directory_entry/86597.cc
  3829cc13e1fdd0bab7798e0299aa207d  libstdc++-v3/testsuite/27_io/filesystem/file_status/1.cc
+ 2b20b2d15c2bb38db55a36bad39df3be  libstdc++-v3/testsuite/27_io/filesystem/iterators/caching.cc
  66a3cf9ca186f16807d3251cae4008f9  libstdc++-v3/testsuite/27_io/filesystem/iterators/directory_iterator.cc
  21f3a9ca0bffba3d2a34d06dbb0ab7e8  libstdc++-v3/testsuite/27_io/filesystem/iterators/pop.cc
  23343661d584d190aa1dfc7902635d25  libstdc++-v3/testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc
! 49cf33d8027438b7113188acd60aed95  libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc
  3c9c02d4ede1868be1f84f9947361acf  libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
  a887b16caa3fadd0149da529feb5ef3b  libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
  a6fc48e370c97136b93b4d60da06cba7  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
*************** d947178516657a8cb233a9a19ae24516  libstd
*** 78278,78284 ****
  33550d2e57ebd0cbe61b174f0405ff74  libstdc++-v3/testsuite/27_io/filesystem/operations/read_symlink.cc
  4abcf07bddc541d6928bc3a94eca4749  libstdc++-v3/testsuite/27_io/filesystem/operations/relative.cc
  fcda569eb73f03035565926297f637b0  libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
! e3a3027d3dd93e897d2770568820cbda  libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
  932f80a010ec0d99e74f616705221fb5  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
  bbd863acf30fa570bf4e9aad439457f7  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
  48535a368eb67f4dc3105b33db2ab8d3  libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
--- 78811,78817 ----
  33550d2e57ebd0cbe61b174f0405ff74  libstdc++-v3/testsuite/27_io/filesystem/operations/read_symlink.cc
  4abcf07bddc541d6928bc3a94eca4749  libstdc++-v3/testsuite/27_io/filesystem/operations/relative.cc
  fcda569eb73f03035565926297f637b0  libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
! 645e266d3361d4e7167565d3a779a900  libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
  932f80a010ec0d99e74f616705221fb5  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
  bbd863acf30fa570bf4e9aad439457f7  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
  48535a368eb67f4dc3105b33db2ab8d3  libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
*************** bbd863acf30fa570bf4e9aad439457f7  libstd
*** 78287,78299 ****
  2695d733396cbaa1654ccdd60d27fb51  libstdc++-v3/testsuite/27_io/filesystem/path/append/path.cc
  66d1b417c6c469331f02c1bf8d9838c6  libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc
  745664709078f13870ab58bc6e42da6b  libstdc++-v3/testsuite/27_io/filesystem/path/assign/assign.cc
! a844d427bb1d9cd556b0e28d7239b2ce  libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc
  27a7a60c1f1480f039e979af768517e4  libstdc++-v3/testsuite/27_io/filesystem/path/compare/compare.cc
  f128e4f619cc23592ed68faca3925b80  libstdc++-v3/testsuite/27_io/filesystem/path/compare/path.cc
  d7ebd8759252cbcd8edecdecc811e053  libstdc++-v3/testsuite/27_io/filesystem/path/compare/strings.cc
  3a4a7bdb581ab38d10bf13aaf9df6a91  libstdc++-v3/testsuite/27_io/filesystem/path/concat/path.cc
  e4933d72dada5335be05afa8e82b7cb0  libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc
! 7d86eee52072b8a1407d4be1828049e8  libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc
  dfb5784845c7b0f246c4ba7cc07133fb  libstdc++-v3/testsuite/27_io/filesystem/path/construct/copy.cc
  6ec359becf6ac1a030cc1495200857c5  libstdc++-v3/testsuite/27_io/filesystem/path/construct/default.cc
  001093139d844b28a47457ab91a0c22c  libstdc++-v3/testsuite/27_io/filesystem/path/construct/format.cc
--- 78820,78833 ----
  2695d733396cbaa1654ccdd60d27fb51  libstdc++-v3/testsuite/27_io/filesystem/path/append/path.cc
  66d1b417c6c469331f02c1bf8d9838c6  libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc
  745664709078f13870ab58bc6e42da6b  libstdc++-v3/testsuite/27_io/filesystem/path/assign/assign.cc
! 79bcd0109f5e3b903d3c5f55e2cc0b77  libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc
  27a7a60c1f1480f039e979af768517e4  libstdc++-v3/testsuite/27_io/filesystem/path/compare/compare.cc
  f128e4f619cc23592ed68faca3925b80  libstdc++-v3/testsuite/27_io/filesystem/path/compare/path.cc
  d7ebd8759252cbcd8edecdecc811e053  libstdc++-v3/testsuite/27_io/filesystem/path/compare/strings.cc
  3a4a7bdb581ab38d10bf13aaf9df6a91  libstdc++-v3/testsuite/27_io/filesystem/path/concat/path.cc
  e4933d72dada5335be05afa8e82b7cb0  libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc
! dbd5a6225f9630d1e0bda039598c0398  libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc
! 0256393cf8a9dcbf5417817134f6b861  libstdc++-v3/testsuite/27_io/filesystem/path/construct/90634.cc
  dfb5784845c7b0f246c4ba7cc07133fb  libstdc++-v3/testsuite/27_io/filesystem/path/construct/copy.cc
  6ec359becf6ac1a030cc1495200857c5  libstdc++-v3/testsuite/27_io/filesystem/path/construct/default.cc
  001093139d844b28a47457ab91a0c22c  libstdc++-v3/testsuite/27_io/filesystem/path/construct/format.cc
*************** db777e2df8ce6a2dfb3873d51e4b72a3  libstd
*** 78306,78312 ****
  72b70d86dd4d26403f432ec29329cfce  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/relative_path.cc
  47b63736332a6b1e5d2571c3468bdf28  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc
  799ea9bb966fa20a2d5fcc2b0ecddf95  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_name.cc
! 0c85b5809ea0f8d19ec82bc17a3022b7  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc
  a0558516315a769544711b53f2782dd3  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc
  6b80be7b634437b3e1d38ab536a6d986  libstdc++-v3/testsuite/27_io/filesystem/path/generation/normal.cc
  7a8c48769b0dc0f6587511096ac86139  libstdc++-v3/testsuite/27_io/filesystem/path/generation/normal2.cc
--- 78840,78846 ----
  72b70d86dd4d26403f432ec29329cfce  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/relative_path.cc
  47b63736332a6b1e5d2571c3468bdf28  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc
  799ea9bb966fa20a2d5fcc2b0ecddf95  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_name.cc
! 41f8721c61771ad478b2ccdca7090db9  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc
  a0558516315a769544711b53f2782dd3  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc
  6b80be7b634437b3e1d38ab536a6d986  libstdc++-v3/testsuite/27_io/filesystem/path/generation/normal.cc
  7a8c48769b0dc0f6587511096ac86139  libstdc++-v3/testsuite/27_io/filesystem/path/generation/normal2.cc
*************** ff9fdf92c14e503e245052c1ac1f3fc3  libstd
*** 79033,79039 ****
  8065039a8ecd272e507f29466c512206  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/explicit_instantiation.cc
  d8f8888f1e07f092d3e7268f5c594d34  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/typedefs.cc
  042e568a03bf149f527a8ad56ab46553  libstdc++-v3/testsuite/Makefile.am
! e01204b5f6bd14329bf69a546ce82190  libstdc++-v3/testsuite/Makefile.in
  376a77df1037e10a14ab4a3e79a301f6  libstdc++-v3/testsuite/abi/30586.cc
  3ddbd6e8e0d483ee800f6c1127902325  libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc
  338e6ddcbb7389dedebbd966c4d728e9  libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc
--- 79567,79573 ----
  8065039a8ecd272e507f29466c512206  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/explicit_instantiation.cc
  d8f8888f1e07f092d3e7268f5c594d34  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/typedefs.cc
  042e568a03bf149f527a8ad56ab46553  libstdc++-v3/testsuite/Makefile.am
! f2bd08165395f0ca807d5be049f37370  libstdc++-v3/testsuite/Makefile.in
  376a77df1037e10a14ab4a3e79a301f6  libstdc++-v3/testsuite/abi/30586.cc
  3ddbd6e8e0d483ee800f6c1127902325  libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc
  338e6ddcbb7389dedebbd966c4d728e9  libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc
*************** fbc728ca502275c1d2f1ffec147ad1e5  libstd
*** 79210,79217 ****
  c590f9cd4ee7f44cda4c4c611dddc806  libstdc++-v3/testsuite/experimental/any/cons/2.cc
  da1a32ef4c9d7cf96a9873917326aca6  libstdc++-v3/testsuite/experimental/any/cons/aligned.cc
  1cea0c2eac04cc972f5869df06fc9770  libstdc++-v3/testsuite/experimental/any/cons/nontrivial.cc
! 942cec615567a000ecc78539890aea4f  libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc
! 687e6d8685c250d317bcbfc09ed11a50  libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
  0cef74745bb3144cfc5ca296528dc1f9  libstdc++-v3/testsuite/experimental/any/misc/any_cast_no_rtti.cc
  36e4ebc8edbc974b95f3c0311f29315f  libstdc++-v3/testsuite/experimental/any/misc/swap.cc
  343d811bf0253cd2ae2870bb82c9a54e  libstdc++-v3/testsuite/experimental/any/modifiers/1.cc
--- 79744,79751 ----
  c590f9cd4ee7f44cda4c4c611dddc806  libstdc++-v3/testsuite/experimental/any/cons/2.cc
  da1a32ef4c9d7cf96a9873917326aca6  libstdc++-v3/testsuite/experimental/any/cons/aligned.cc
  1cea0c2eac04cc972f5869df06fc9770  libstdc++-v3/testsuite/experimental/any/cons/nontrivial.cc
! 825c5230ba87e5b9e81b09a10e6f2fce  libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc
! 28035a20277aa421cba1ecb82e476614  libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
  0cef74745bb3144cfc5ca296528dc1f9  libstdc++-v3/testsuite/experimental/any/misc/any_cast_no_rtti.cc
  36e4ebc8edbc974b95f3c0311f29315f  libstdc++-v3/testsuite/experimental/any/misc/swap.cc
  343d811bf0253cd2ae2870bb82c9a54e  libstdc++-v3/testsuite/experimental/any/modifiers/1.cc
*************** b75de3c62da47e80e881cad01524b683  libstd
*** 79243,79249 ****
  519b1f2c820d88bd00d29c92d5ffc621  libstdc++-v3/testsuite/experimental/filesystem/operations/permissions.cc
  036a82a52bd5fd7636e2fd113168542d  libstdc++-v3/testsuite/experimental/filesystem/operations/read_symlink.cc
  de6590a0c818a1a299514ab5e4c47712  libstdc++-v3/testsuite/experimental/filesystem/operations/remove.cc
! 350a4f286d648ae39bd1547bd94d32c5  libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc
  1ecb7facd18a43c15be322da8c64e658  libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc
  0ae6cf05a1907c284964caacba61f251  libstdc++-v3/testsuite/experimental/filesystem/operations/status.cc
  23e705f6a6166b60be1ff9d7a46c032c  libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc
--- 79777,79783 ----
  519b1f2c820d88bd00d29c92d5ffc621  libstdc++-v3/testsuite/experimental/filesystem/operations/permissions.cc
  036a82a52bd5fd7636e2fd113168542d  libstdc++-v3/testsuite/experimental/filesystem/operations/read_symlink.cc
  de6590a0c818a1a299514ab5e4c47712  libstdc++-v3/testsuite/experimental/filesystem/operations/remove.cc
! a3323a839f2202661c8c430aaa7167ec  libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc
  1ecb7facd18a43c15be322da8c64e658  libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc
  0ae6cf05a1907c284964caacba61f251  libstdc++-v3/testsuite/experimental/filesystem/operations/status.cc
  23e705f6a6166b60be1ff9d7a46c032c  libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc
*************** ec5104c53cae8714ade74fd2e5fa82c7  libstd
*** 79255,79261 ****
  49e3dda894fdfa1da5931b2b62d11146  libstdc++-v3/testsuite/experimental/filesystem/path/compare/strings.cc
  e3f148f8535035b62c1639c8b5f195d2  libstdc++-v3/testsuite/experimental/filesystem/path/concat/path.cc
  9555406ac3519179fd10ed320229d613  libstdc++-v3/testsuite/experimental/filesystem/path/concat/strings.cc
! 34086f642cd5072c1599396b2ac2319e  libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc
  e28b874a136da3935a91b573c0035b9d  libstdc++-v3/testsuite/experimental/filesystem/path/construct/copy.cc
  6b68d43f6c649f3f42a9408b0cf25b48  libstdc++-v3/testsuite/experimental/filesystem/path/construct/default.cc
  08b28fe5e34d71b699d90e1f76a77718  libstdc++-v3/testsuite/experimental/filesystem/path/construct/locale.cc
--- 79789,79796 ----
  49e3dda894fdfa1da5931b2b62d11146  libstdc++-v3/testsuite/experimental/filesystem/path/compare/strings.cc
  e3f148f8535035b62c1639c8b5f195d2  libstdc++-v3/testsuite/experimental/filesystem/path/concat/path.cc
  9555406ac3519179fd10ed320229d613  libstdc++-v3/testsuite/experimental/filesystem/path/concat/strings.cc
! 72e8574cca4672a711a4f8af16b9cfd0  libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc
! b799a2264a508cb17bf5e42d58f4aa6a  libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc
  e28b874a136da3935a91b573c0035b9d  libstdc++-v3/testsuite/experimental/filesystem/path/construct/copy.cc
  6b68d43f6c649f3f42a9408b0cf25b48  libstdc++-v3/testsuite/experimental/filesystem/path/construct/default.cc
  08b28fe5e34d71b699d90e1f76a77718  libstdc++-v3/testsuite/experimental/filesystem/path/construct/locale.cc
*************** dee2e931e406bed949129ff75a17d49a  libstd
*** 79336,79341 ****
--- 79871,79877 ----
  53d343d6ffb01123f090bc970ed1488c  libstdc++-v3/testsuite/experimental/memory_resource/70966.cc
  3564c40a83ece37ec52b71a08c5ae5b2  libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
  70a02fc665a26f4c82c3cb211fd64842  libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc
+ dc08d014bb78b01ed1539a4b46e05b48  libstdc++-v3/testsuite/experimental/names.cc
  18d50bdf4289aeb0bf6a31bc4490409a  libstdc++-v3/testsuite/experimental/numeric/77801.cc
  32554723afd983b142c1b230427e232a  libstdc++-v3/testsuite/experimental/numeric/gcd.cc
  83ce73e66b7920c0ffc5f8984e56d028  libstdc++-v3/testsuite/experimental/numeric/lcm.cc
*************** fbed2394b1ff5feb95132667e69c5998  libstd
*** 80659,80665 ****
--- 81195,81206 ----
  ef001f0d957ce337d55af2fb8a95b6dd  libstdc++-v3/testsuite/tr2/direct_bases/requirements/explicit_instantiation.cc
  f6e437553963652cdd06b26dee368dba  libstdc++-v3/testsuite/tr2/direct_bases/requirements/typedefs.cc
  5480d74b1b769e1258bebfe9bc88dd27  libstdc++-v3/testsuite/tr2/direct_bases/value.cc
+ f627b801f76df3b9b3617855769dd497  libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc
+ 55b17815da3734a92aabf30752f4c282  libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc
+ 6671d3e9585abbb1e56141510a0fc388  libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc
+ 16179fe5ad0342cfee85f57bae428e2e  libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc
  1e78a4d58edbea13708990395508bd0f  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr58729.cc
+ f6df263b2b53ef17d5d912257af81895  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc
  c57a213c84c3a84071e015f5c914d241  libstdc++-v3/testsuite/tr2/headers/all.cc
  a307e5594e85b3ba1df993337c5dfc0b  libstdc++-v3/testsuite/tr2/headers/using_namespace_std_tr2.cc
  d835e5788ab73e1877cc520b447851fb  libstdc++-v3/testsuite/util/common_type/assoc/common_type.hpp
*************** e61577889746cc25cd6def82c20b20b5  libstd
*** 80768,80774 ****
  b9786ae67fc6bc45bd0881cffd4d100d  libstdc++-v3/testsuite/util/testsuite_fs.h
  99f5f9498e49119361a7d0e234ed529b  libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
  81a074e7f132053455bf40e9ea4fa373  libstdc++-v3/testsuite/util/testsuite_hooks.cc
! 3747a35ea3b98bc812853fe47a05370e  libstdc++-v3/testsuite/util/testsuite_hooks.h
  9551cf948cace73120327b858e4eec55  libstdc++-v3/testsuite/util/testsuite_io.h
  8cba7b6b963469cfc75e96f134110bf8  libstdc++-v3/testsuite/util/testsuite_iterators.h
  048aa2b91996cea75f31425b5b3cf318  libstdc++-v3/testsuite/util/testsuite_new_operators.h
--- 81309,81315 ----
  b9786ae67fc6bc45bd0881cffd4d100d  libstdc++-v3/testsuite/util/testsuite_fs.h
  99f5f9498e49119361a7d0e234ed529b  libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
  81a074e7f132053455bf40e9ea4fa373  libstdc++-v3/testsuite/util/testsuite_hooks.cc
! 6b51897d5d33338bf0c7d307507c726d  libstdc++-v3/testsuite/util/testsuite_hooks.h
  9551cf948cace73120327b858e4eec55  libstdc++-v3/testsuite/util/testsuite_io.h
  8cba7b6b963469cfc75e96f134110bf8  libstdc++-v3/testsuite/util/testsuite_iterators.h
  048aa2b91996cea75f31425b5b3cf318  libstdc++-v3/testsuite/util/testsuite_new_operators.h
*************** e9aa2dcc7750d26597f66e5ebdc64403  libstd
*** 80779,80788 ****
  9e77ccd2ace36f958b3057d8059f137f  libstdc++-v3/testsuite/util/testsuite_rvalref.h
  592cce736d6f4f682292de6b8e296334  libstdc++-v3/testsuite/util/testsuite_shared.cc
  7a6e2897f57f1d9bb58553b5043894dd  libstdc++-v3/testsuite/util/testsuite_tr1.h
! c273496d495fdc36798b672086a5b73e  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  7a2b83d2d625a4022b9213ceb75f5897  libtool.m4
! bb50880c17d09a9c3ace98abf4d803d3  libvtv/ChangeLog
  62df3278e2c3686ef285c68fe1c5270e  libvtv/Makefile.am
  c5ab21da757717eb9e3848285510342f  libvtv/Makefile.in
  3b765c4f4a0a0f606db1472bce2b8d29  libvtv/acinclude.m4
--- 81320,81329 ----
  9e77ccd2ace36f958b3057d8059f137f  libstdc++-v3/testsuite/util/testsuite_rvalref.h
  592cce736d6f4f682292de6b8e296334  libstdc++-v3/testsuite/util/testsuite_shared.cc
  7a6e2897f57f1d9bb58553b5043894dd  libstdc++-v3/testsuite/util/testsuite_tr1.h
! 952e0c703344bcec6fb9eba05d87366b  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  7a2b83d2d625a4022b9213ceb75f5897  libtool.m4
! 657677b49f06f2e87a60c6ab78ad6dff  libvtv/ChangeLog
  62df3278e2c3686ef285c68fe1c5270e  libvtv/Makefile.am
  c5ab21da757717eb9e3848285510342f  libvtv/Makefile.in
  3b765c4f4a0a0f606db1472bce2b8d29  libvtv/acinclude.m4
*************** a333fb4ae821fecf21da4dad5cb360da  libvtv
*** 80865,80871 ****
  6fc06e8da97cd20ded65bfed889dd9aa  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  4e65f2f6a05f5eca82ba79c6363aa3db  ltmain.sh
! 06bd271361ca108350b35499de045625  lto-plugin/ChangeLog
  1d51b0f01f4db0f88d302ab0d691514e  lto-plugin/Makefile.am
  3bd8be597a6d5934a69399816aec878a  lto-plugin/Makefile.in
  b8a21afb1f79664ea28d8892b4907746  lto-plugin/aclocal.m4
--- 81406,81412 ----
  6fc06e8da97cd20ded65bfed889dd9aa  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  4e65f2f6a05f5eca82ba79c6363aa3db  ltmain.sh
! e310d10f4c4f15973763e6a9a29eb407  lto-plugin/ChangeLog
  1d51b0f01f4db0f88d302ab0d691514e  lto-plugin/Makefile.am
  3bd8be597a6d5934a69399816aec878a  lto-plugin/Makefile.in
  b8a21afb1f79664ea28d8892b4907746  lto-plugin/aclocal.m4
*************** dee72a6a60e99528b0d17bf3ff9a1e15  ltopti
*** 80878,80888 ****
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! 821537afa4ba7f20fad799db2838be31  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
  e70ffb6559f8817db41ee1e69bc60287  maintainer-scripts/branch_changer.py
  f954f8d3f5f899a163a5e92282c95602  maintainer-scripts/crontab
! c000625815118b3a8b9893a9dc527f42  maintainer-scripts/gcc_release
  4b1217d62242596f1d1b439c25dce68f  maintainer-scripts/generate_libstdcxx_web_docs
  33d97164a8610c7abf67eff7d28f47ff  maintainer-scripts/maintainer-addresses
  8aa3b579aba0b56914756f540ff4406e  maintainer-scripts/update_version_svn
--- 81419,81429 ----
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! 780e1ae63b669f887f5987e338653918  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
  e70ffb6559f8817db41ee1e69bc60287  maintainer-scripts/branch_changer.py
  f954f8d3f5f899a163a5e92282c95602  maintainer-scripts/crontab
! e7d62fdf7e9b9c42001cbac1e18789a5  maintainer-scripts/gcc_release
  4b1217d62242596f1d1b439c25dce68f  maintainer-scripts/generate_libstdcxx_web_docs
  33d97164a8610c7abf67eff7d28f47ff  maintainer-scripts/maintainer-addresses
  8aa3b579aba0b56914756f540ff4406e  maintainer-scripts/update_version_svn
*************** fbe2467afef81c41c166173adeb0ee20  mkdep
*** 80895,80901 ****
  cf2baa0854f564a7785307e79f155efc  symlink-tree
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! 496bc0bbcf797324dc2b4c2c3de1d54a  zlib/ChangeLog
  2effeeacadeab8edd2c3c4ae856f019d  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
--- 81436,81442 ----
  cf2baa0854f564a7785307e79f155efc  symlink-tree
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! 9722ea3a13b0df32679a7cefea7abaff  zlib/ChangeLog
  2effeeacadeab8edd2c3c4ae856f019d  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
diff -Nrcpad gcc-8.3.0/NEWS gcc-8.4.0/NEWS
*** gcc-8.3.0/NEWS	Fri Feb 22 14:22:42 2019
--- gcc-8.4.0/NEWS	Wed Mar  4 08:32:41 2020
*************** see ONEWS.
*** 8,31 ****
  http://gcc.gnu.org/gcc-8/index.html
                                GCC 8 Release Series
  
!    Feb 22, 2019
  
     The [1]GNU project and the GCC developers are pleased to announce the
!    release of GCC 8.3.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 8.2 relative to previous releases of GCC.
  
  Release History
  
     GCC 8.3
!           Feb 22, 2019 ([2]changes, [3]documentation)
  
     GCC 8.2
!           Jul 14, 2018 ([4]changes, [5]documentation)
  
     GCC 8.1
!           May 2, 2018 ([6]changes, [7]documentation)
  
  References and Acknowledgements
  
--- 8,34 ----
  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
  
*************** References and Acknowledgements
*** 33,88 ****
     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 SVN server.
  
  
      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
!    2019-02-22[20].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-8/changes.html
!    3. http://gcc.gnu.org/onlinedocs/8.3.0/
     4. http://gcc.gnu.org/gcc-8/changes.html
!    5. http://gcc.gnu.org/onlinedocs/8.2.0/
     6. http://gcc.gnu.org/gcc-8/changes.html
!    7. http://gcc.gnu.org/onlinedocs/8.1.0/
!    8. http://gcc.gnu.org/gcc-8/buildstat.html
!    9. http://gcc.gnu.org/onlinedocs/gcc-8.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/svn.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-8/changes.html
                                GCC 8 Release Series
--- 36,94 ----
     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
*************** Caveats
*** 105,111 ****
         std::make_exception_ptr should be used instead.
       * Support for the powerpc*-*-*spe* target ports which have been
         recently unmaintained and untested in GCC has been declared
!        obsolete in GCC 8 as announced [3]here. Unless there is activity to
         revive them, the next release of GCC will have their sources
         permanently removed.
  
--- 111,117 ----
         std::make_exception_ptr should be used instead.
       * Support for the powerpc*-*-*spe* target ports which have been
         recently unmaintained and untested in GCC has been declared
!        obsolete in GCC 8 as [3]announced. Unless there is activity to
         revive them, the next release of GCC will have their sources
         permanently removed.
  
*************** ctor<double> >()' from 'map<map<int,vect
*** 745,750 ****
--- 751,759 ----
       * The main version of libfortran has been changed to 5.
       * Parameterized derived types, a major feature of Fortran 2003, have
         been implemented.
+      * Partial support is provided for Fortran 2018 teams, which are
+        hierarchical subsets of images that execute independently of other
+        image subsets.
       * The maximum rank for arrays has been increased to 15, conforming to
         the Fortran 2008 standard.
       * Transformational intrinsics are now fully supported in
*************** GCC 8.3
*** 1123,1142 ****
         resolve only those regressions, we decided to resolve all the cases
         of this defect in single change.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [37]GCC manuals. If that fails, the
!     [38]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 [39]gcc@gcc.gnu.org. All of [40]our lists have public
      archives.
  
!    Copyright (C) [41]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 [42]maintained by the GCC team. Last modified
!    2019-02-22[43].
  
  References
  
--- 1132,1158 ----
         resolve only those regressions, we decided to resolve all the cases
         of this defect in single change.
  
+ GCC 8.4
+ 
+    This is the [37]list of problem reports (PRs) from GCC's bug tracking
+    system that are known to be fixed in the 8.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 [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
!    2020-03-04[44].
  
  References
  
*************** References
*** 1176,1213 ****
    34. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84413
    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/onlinedocs/
!   38. mailto:gcc-help@gcc.gnu.org
!   39. mailto:gcc@gcc.gnu.org
!   40. https://gcc.gnu.org/lists.html
!   41. https://www.fsf.org/
!   42. https://gcc.gnu.org/about.html
!   43. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-7/index.html
                                GCC 7 Release Series
  
!    Dec 6, 2018
  
     The [1]GNU project and the GCC developers are pleased to announce the
!    release of GCC 7.4.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 7.3 relative to previous releases of GCC.
  
  Release History
  
     GCC 7.4
!           Dec 6, 2018 ([2]changes, [3]documentation)
  
     GCC 7.3
!           Jan 25, 2018 ([4]changes, [5]documentation)
  
     GCC 7.2
!           Aug 14, 2017 ([6]changes, [7]documentation)
  
     GCC 7.1
!           May 2, 2017 ([8]changes, [9]documentation)
  
  References and Acknowledgements
  
--- 1192,1233 ----
    34. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84413
    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
!    release of GCC 7.5.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 7.4 relative to previous releases of GCC.
  
  Release History
  
+    GCC 7.5
+           Nov 14, 2019 ([2]changes, [3]documentation)
+ 
     GCC 7.4
!           Dec 6, 2018 ([4]changes, [5]documentation)
  
     GCC 7.3
!           Jan 25, 2018 ([6]changes, [7]documentation)
  
     GCC 7.2
!           Aug 14, 2017 ([8]changes, [9]documentation)
  
     GCC 7.1
!           May 2, 2017 ([10]changes, [11]documentation)
  
  References and Acknowledgements
  
*************** References and Acknowledgements
*** 1215,1272 ****
     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 SVN server.
  
  
      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
!    2018-12-06[22].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-7/changes.html
!    3. http://gcc.gnu.org/onlinedocs/7.4.0/
     4. http://gcc.gnu.org/gcc-7/changes.html
!    5. http://gcc.gnu.org/onlinedocs/7.3.0/
     6. http://gcc.gnu.org/gcc-7/changes.html
!    7. http://gcc.gnu.org/onlinedocs/7.2.0/
     8. http://gcc.gnu.org/gcc-7/changes.html
!    9. http://gcc.gnu.org/onlinedocs/7.1.0/
!   10. http://gcc.gnu.org/gcc-7/buildstat.html
!   11. http://gcc.gnu.org/onlinedocs/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/svn.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-7/changes.html
                                GCC 7 Release Series
--- 1235,1295 ----
     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
!    2020-01-14[24].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-7/changes.html
!    3. http://gcc.gnu.org/onlinedocs/7.5.0/
     4. http://gcc.gnu.org/gcc-7/changes.html
!    5. http://gcc.gnu.org/onlinedocs/7.4.0/
     6. http://gcc.gnu.org/gcc-7/changes.html
!    7. http://gcc.gnu.org/onlinedocs/7.3.0/
     8. http://gcc.gnu.org/gcc-7/changes.html
!    9. http://gcc.gnu.org/onlinedocs/7.2.0/
!   10. http://gcc.gnu.org/gcc-7/changes.html
!   11. http://gcc.gnu.org/onlinedocs/7.1.0/
!   12. http://gcc.gnu.org/gcc-7/buildstat.html
!   13. http://gcc.gnu.org/onlinedocs/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-7/changes.html
                                GCC 7 Release Series
*************** GCC 7.4
*** 2316,2335 ****
     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
!    2018-12-06[34].
  
  References
  
--- 2339,2365 ----
     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
!    2019-11-28[35].
  
  References
  
*************** References
*** 2360,2376 ****
    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/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
  
     October 26, 2018
  
     The [1]GNU project and the GCC developers are pleased to announce the
--- 2390,2409 ----
    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.)
+ 
     October 26, 2018
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** References and Acknowledgements
*** 2413,2419 ****
     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 SVN server.
  
  
      For questions related to the use of GCC, please consult these web
--- 2446,2453 ----
     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
*************** References and Acknowledgements
*** 2428,2434 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-10-26[24].
  
  References
  
--- 2462,2468 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2020-01-14[24].
  
  References
  
*************** References
*** 2448,2454 ****
    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/svn.html
    18. https://gcc.gnu.org/onlinedocs/
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
--- 2482,2488 ----
    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
*************** Operating Systems
*** 3166,3172 ****
     provided this notice is preserved.
  
     These pages are [32]maintained by the GCC team. Last modified
!    2018-10-31[33].
  
  References
  
--- 3200,3206 ----
     provided this notice is preserved.
  
     These pages are [32]maintained by the GCC team. Last modified
!    2019-11-28[33].
  
  References
  
*************** References
*** 3207,3212 ****
--- 3241,3248 ----
  http://gcc.gnu.org/gcc-5/index.html
                                GCC 5 Release Series
  
+    (This release series is no longer supported.)
+ 
     October 10, 2017
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** References and Acknowledgements
*** 3249,3255 ****
     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 SVN server.
  
  
      For questions related to the use of GCC, please consult these web
--- 3285,3292 ----
     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
*************** References and Acknowledgements
*** 3264,3270 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-09-30[24].
  
  References
  
--- 3301,3307 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2020-01-14[24].
  
  References
  
*************** References
*** 3284,3290 ****
    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/svn.html
    18. https://gcc.gnu.org/onlinedocs/
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
--- 3321,3327 ----
    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
*************** Target Specific Changes
*** 4174,4180 ****
     provided this notice is preserved.
  
     These pages are [51]maintained by the GCC team. Last modified
!    2018-09-30[52].
  
  References
  
--- 4211,4217 ----
     provided this notice is preserved.
  
     These pages are [51]maintained by the GCC team. Last modified
!    2019-11-28[52].
  
  References
  
*************** References
*** 4234,4239 ****
--- 4271,4278 ----
  http://gcc.gnu.org/gcc-4.9/index.html
                               GCC 4.9 Release Series
  
+    (This release series is no longer supported.)
+ 
     Aug 3, 2016
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-4.9/index.html
*** 4242,4249 ****
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.9.3 relative to previous releases of GCC.
  
-    This release series is no longer maintained.
- 
  Release History
  
     GCC 4.9.4
--- 4281,4286 ----
*************** References and Acknowledgements
*** 4278,4284 ****
     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 SVN server.
  
  
      For questions related to the use of GCC, please consult these web
--- 4315,4322 ----
     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
*************** References and Acknowledgements
*** 4293,4299 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-09-30[24].
  
  References
  
--- 4331,4337 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2020-01-14[24].
  
  References
  
*************** References
*** 4313,4319 ****
    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/svn.html
    18. https://gcc.gnu.org/onlinedocs/
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
--- 4351,4357 ----
    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
*************** GCC 4.9.4
*** 4932,4938 ****
     provided this notice is preserved.
  
     These pages are [34]maintained by the GCC team. Last modified
!    2018-12-01[35].
  
  References
  
--- 4970,4976 ----
     provided this notice is preserved.
  
     These pages are [34]maintained by the GCC team. Last modified
!    2019-11-28[35].
  
  References
  
*************** References
*** 4975,4980 ****
--- 5013,5020 ----
  http://gcc.gnu.org/gcc-4.8/index.html
                               GCC 4.8 Release Series
  
+    (This release series is no longer supported.)
+ 
     June 23, 2015
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-4.8/index.html
*** 4983,4990 ****
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.8.4 relative to previous releases of GCC.
  
-    This release series is no longer maintained.
- 
  Release History
  
     GCC 4.8.5
--- 5023,5028 ----
*************** References and Acknowledgements
*** 5022,5028 ****
     For additional information about GCC please refer to the [16]GCC
     project web site or contact the [17]GCC development mailing list.
  
!    To obtain GCC please use [18]our mirror sites or [19]our SVN server.
  
  
      For questions related to the use of GCC, please consult these web
--- 5060,5067 ----
     For additional information about GCC please refer to the [16]GCC
     project web site or contact the [17]GCC development mailing list.
  
!    To obtain GCC please use [18]our mirror sites or [19]our version
!    control system.
  
  
      For questions related to the use of GCC, please consult these web
*************** References and Acknowledgements
*** 5037,5043 ****
     provided this notice is preserved.
  
     These pages are [25]maintained by the GCC team. Last modified
!    2018-09-30[26].
  
  References
  
--- 5076,5082 ----
     provided this notice is preserved.
  
     These pages are [25]maintained by the GCC team. Last modified
!    2020-01-14[26].
  
  References
  
*************** References
*** 5059,5065 ****
    16. http://gcc.gnu.org/index.html
    17. mailto:gcc@gcc.gnu.org
    18. http://gcc.gnu.org/mirrors.html
!   19. http://gcc.gnu.org/svn.html
    20. https://gcc.gnu.org/onlinedocs/
    21. mailto:gcc-help@gcc.gnu.org
    22. mailto:gcc@gcc.gnu.org
--- 5098,5104 ----
    16. http://gcc.gnu.org/index.html
    17. mailto:gcc@gcc.gnu.org
    18. http://gcc.gnu.org/mirrors.html
!   19. http://gcc.gnu.org/git.html
    20. https://gcc.gnu.org/onlinedocs/
    21. mailto:gcc-help@gcc.gnu.org
    22. mailto:gcc@gcc.gnu.org
*************** GCC 4.8.5
*** 5792,5798 ****
     provided this notice is preserved.
  
     These pages are [43]maintained by the GCC team. Last modified
!    2018-09-30[44].
  
  References
  
--- 5831,5837 ----
     provided this notice is preserved.
  
     These pages are [43]maintained by the GCC team. Last modified
!    2019-11-28[44].
  
  References
  
*************** References
*** 5844,5849 ****
--- 5883,5890 ----
  http://gcc.gnu.org/gcc-4.7/index.html
                               GCC 4.7 Release Series
  
+    (This release series is no longer supported.)
+ 
     June 12, 2014
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-4.7/index.html
*** 5852,5859 ****
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.7.3 relative to previous releases of GCC.
  
-    This release series is no longer maintained.
- 
  Release History
  
     GCC 4.7.4
--- 5893,5898 ----
*************** References and Acknowledgements
*** 5888,5894 ****
     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 SVN server.
  
  
      For questions related to the use of GCC, please consult these web
--- 5927,5934 ----
     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
*************** References and Acknowledgements
*** 5903,5909 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-09-30[24].
  
  References
  
--- 5943,5949 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2020-01-14[24].
  
  References
  
*************** References
*** 5923,5929 ****
    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/svn.html
    18. https://gcc.gnu.org/onlinedocs/
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
--- 5963,5969 ----
    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
*************** GCC 4.7.4
*** 6724,6730 ****
     provided this notice is preserved.
  
     These pages are [54]maintained by the GCC team. Last modified
!    2018-12-11[55].
  
  References
  
--- 6764,6770 ----
     provided this notice is preserved.
  
     These pages are [54]maintained by the GCC team. Last modified
!    2019-11-28[55].
  
  References
  
*************** References
*** 6752,6758 ****
    22. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
    23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
    24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
!   25. https://docs.microsoft.com/en-us/windows/desktop/wer/collecting-user-mode-dumps
    26. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
    27. https://gcc.gnu.org/wiki/Fortran2003Status
    28. https://gcc.gnu.org/wiki/OOP
--- 6792,6798 ----
    22. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
    23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
    24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
!   25. https://docs.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps
    26. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
    27. https://gcc.gnu.org/wiki/Fortran2003Status
    28. https://gcc.gnu.org/wiki/OOP
*************** References
*** 6787,6792 ****
--- 6827,6834 ----
  http://gcc.gnu.org/gcc-4.6/index.html
                               GCC 4.6 Release Series
  
+    (This release series is no longer supported.)
+ 
     April 12, 2013
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-4.6/index.html
*** 6795,6802 ****
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.6.3 relative to previous releases of GCC.
  
-    This release series is no longer maintained.
- 
  Release History
  
     GCC 4.6.4
--- 6837,6842 ----
*************** References and Acknowledgements
*** 6831,6837 ****
     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 SVN server.
  
  
      For questions related to the use of GCC, please consult these web
--- 6871,6878 ----
     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
*************** References and Acknowledgements
*** 6846,6852 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-09-30[24].
  
  References
  
--- 6887,6893 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2020-01-14[24].
  
  References
  
*************** References
*** 6866,6872 ****
    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/svn.html
    18. https://gcc.gnu.org/onlinedocs/
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
--- 6907,6913 ----
    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
*************** GCC 4.6.4
*** 7770,7776 ****
     provided this notice is preserved.
  
     These pages are [29]maintained by the GCC team. Last modified
!    2018-09-30[30].
  
  References
  
--- 7811,7817 ----
     provided this notice is preserved.
  
     These pages are [29]maintained by the GCC team. Last modified
!    2019-11-28[30].
  
  References
  
*************** References
*** 7808,7813 ****
--- 7849,7856 ----
  http://gcc.gnu.org/gcc-4.5/index.html
                               GCC 4.5 Release Series
  
+    (This release series is no longer supported.)
+ 
     Jul 2, 2012
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-4.5/index.html
*** 7816,7823 ****
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.5.3 relative to previous releases of GCC.
  
-    This release series is no longer maintained.
- 
  Release History
  
     GCC 4.5.4
--- 7859,7864 ----
*************** References and Acknowledgements
*** 7852,7858 ****
     For additional information about GCC please refer to the [9]GCC project
     web site or contact the [10]GCC development mailing list.
  
!    To obtain GCC please use [11]our mirror sites or [12]our SVN server.
  
  
      For questions related to the use of GCC, please consult these web
--- 7893,7900 ----
     For additional information about GCC please refer to the [9]GCC project
     web site or contact the [10]GCC development mailing list.
  
!    To obtain GCC please use [11]our mirror sites or [12]our version
!    control system.
  
  
      For questions related to the use of GCC, please consult these web
*************** References and Acknowledgements
*** 7867,7873 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2018-09-30[19].
  
  References
  
--- 7909,7915 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2020-01-14[19].
  
  References
  
*************** References
*** 7882,7888 ****
     9. http://gcc.gnu.org/index.html
    10. mailto:gcc@gcc.gnu.org
    11. http://gcc.gnu.org/mirrors.html
!   12. http://gcc.gnu.org/svn.html
    13. https://gcc.gnu.org/onlinedocs/
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
--- 7924,7930 ----
     9. http://gcc.gnu.org/index.html
    10. mailto:gcc@gcc.gnu.org
    11. http://gcc.gnu.org/mirrors.html
!   12. http://gcc.gnu.org/git.html
    13. https://gcc.gnu.org/onlinedocs/
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
*************** GCC 4.5.4
*** 8539,8545 ****
     provided this notice is preserved.
  
     These pages are [32]maintained by the GCC team. Last modified
!    2018-09-30[33].
  
  References
  
--- 8581,8587 ----
     provided this notice is preserved.
  
     These pages are [32]maintained by the GCC team. Last modified
!    2019-11-28[33].
  
  References
  
*************** References
*** 8580,8585 ****
--- 8622,8629 ----
  http://gcc.gnu.org/gcc-4.4/index.html
                               GCC 4.4 Release Series
  
+    This release series is no longer maintained.
+ 
     March 13, 2012
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-4.4/index.html
*** 8588,8595 ****
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.4.6 relative to previous releases of GCC.
  
-    This release series is no longer maintained.
- 
  Release History
  
     GCC 4.4.7
--- 8632,8637 ----
*************** References and Acknowledgements
*** 8633,8639 ****
     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 SVN server.
  
  
      For questions related to the use of GCC, please consult these web
--- 8675,8682 ----
     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
*************** References and Acknowledgements
*** 8648,8654 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2018-09-30[22].
  
  References
  
--- 8691,8697 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2020-01-14[22].
  
  References
  
*************** References
*** 8666,8672 ****
    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/svn.html
    16. https://gcc.gnu.org/onlinedocs/
    17. mailto:gcc-help@gcc.gnu.org
    18. mailto:gcc@gcc.gnu.org
--- 8709,8715 ----
    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
*************** GCC 4.4.7
*** 9278,9284 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-09-30[24].
  
  References
  
--- 9321,9327 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2019-11-28[24].
  
  References
  
*************** References
*** 9310,9315 ****
--- 9353,9360 ----
  http://gcc.gnu.org/gcc-4.3/index.html
                               GCC 4.3 Release Series
  
+    (This release series is no longer supported.)
+ 
     Jun 27, 2011
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-4.3/index.html
*** 9318,9325 ****
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.3.5 relative to previous releases of GCC.
  
-    This release series is no longer maintained.
- 
  Release History
  
     GCC 4.3.6
--- 9363,9368 ----
*************** References and Acknowledgements
*** 9360,9366 ****
     For additional information about GCC please refer to the [11]GCC
     project web site or contact the [12]GCC development mailing list.
  
!    To obtain GCC please use [13]our mirror sites or [14]our SVN server.
  
  
      For questions related to the use of GCC, please consult these web
--- 9403,9410 ----
     For additional information about GCC please refer to the [11]GCC
     project web site or contact the [12]GCC development mailing list.
  
!    To obtain GCC please use [13]our mirror sites or [14]our version
!    control system.
  
  
      For questions related to the use of GCC, please consult these web
*************** References and Acknowledgements
*** 9375,9381 ****
     provided this notice is preserved.
  
     These pages are [20]maintained by the GCC team. Last modified
!    2018-09-30[21].
  
  References
  
--- 9419,9425 ----
     provided this notice is preserved.
  
     These pages are [20]maintained by the GCC team. Last modified
!    2020-01-14[21].
  
  References
  
*************** References
*** 9392,9398 ****
    11. http://gcc.gnu.org/index.html
    12. mailto:gcc@gcc.gnu.org
    13. http://gcc.gnu.org/mirrors.html
!   14. http://gcc.gnu.org/svn.html
    15. https://gcc.gnu.org/onlinedocs/
    16. mailto:gcc-help@gcc.gnu.org
    17. mailto:gcc@gcc.gnu.org
--- 9436,9442 ----
    11. http://gcc.gnu.org/index.html
    12. mailto:gcc@gcc.gnu.org
    13. http://gcc.gnu.org/mirrors.html
!   14. http://gcc.gnu.org/git.html
    15. https://gcc.gnu.org/onlinedocs/
    16. mailto:gcc-help@gcc.gnu.org
    17. mailto:gcc@gcc.gnu.org
*************** GCC 4.3.6
*** 10180,10186 ****
     provided this notice is preserved.
  
     These pages are [30]maintained by the GCC team. Last modified
!    2018-09-30[31].
  
  References
  
--- 10224,10230 ----
     provided this notice is preserved.
  
     These pages are [30]maintained by the GCC team. Last modified
!    2019-11-28[31].
  
  References
  
*************** References
*** 10219,10224 ****
--- 10263,10270 ----
  http://gcc.gnu.org/gcc-4.2/index.html
                               GCC 4.2 Release Series
  
+    (This release series is no longer supported.)
+ 
     May 19, 2008
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-4.2/index.html
*** 10227,10234 ****
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.2.3 relative to previous releases of GCC.
  
-    This release series is no longer maintained.
- 
  Release History
  
     GCC 4.2.4
--- 10273,10278 ----
*************** References and Acknowledgements
*** 10263,10269 ****
     For additional information about GCC please refer to the [9]GCC project
     web site or contact the [10]GCC development mailing list.
  
!    To obtain GCC please use [11]our mirror sites or [12]our SVN server.
  
  
      For questions related to the use of GCC, please consult these web
--- 10307,10314 ----
     For additional information about GCC please refer to the [9]GCC project
     web site or contact the [10]GCC development mailing list.
  
!    To obtain GCC please use [11]our mirror sites or [12]our version
!    control system.
  
  
      For questions related to the use of GCC, please consult these web
*************** References and Acknowledgements
*** 10278,10284 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2018-09-30[19].
  
  References
  
--- 10323,10329 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2020-01-14[19].
  
  References
  
*************** References
*** 10293,10299 ****
     9. http://gcc.gnu.org/index.html
    10. mailto:gcc@gcc.gnu.org
    11. http://gcc.gnu.org/mirrors.html
!   12. http://gcc.gnu.org/svn.html
    13. https://gcc.gnu.org/onlinedocs/
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
--- 10338,10344 ----
     9. http://gcc.gnu.org/index.html
    10. mailto:gcc@gcc.gnu.org
    11. http://gcc.gnu.org/mirrors.html
!   12. http://gcc.gnu.org/git.html
    13. https://gcc.gnu.org/onlinedocs/
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
*************** Other significant improvements
*** 10606,10612 ****
     provided this notice is preserved.
  
     These pages are [11]maintained by the GCC team. Last modified
!    2018-09-30[12].
  
  References
  
--- 10651,10657 ----
     provided this notice is preserved.
  
     These pages are [11]maintained by the GCC team. Last modified
!    2019-11-28[12].
  
  References
  
*************** References
*** 10626,10631 ****
--- 10671,10678 ----
  http://gcc.gnu.org/gcc-4.1/index.html
                               GCC 4.1 Release Series
  
+    (This release series is no longer supported.)
+ 
     February 13, 2007
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-4.1/index.html
*** 10634,10641 ****
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.1.1 relative to previous releases of GCC.
  
-    This release series is no longer maintained.
- 
  Release History
  
     GCC 4.1.2
--- 10681,10686 ----
*************** References and Acknowledgements
*** 10664,10670 ****
     For additional information about GCC please refer to the [7]GCC project
     web site or contact the [8]GCC development mailing list.
  
!    To obtain GCC please use [9]our mirror sites or [10]our SVN server.
  
  
      For questions related to the use of GCC, please consult these web
--- 10709,10716 ----
     For additional information about GCC please refer to the [7]GCC project
     web site or contact the [8]GCC development mailing list.
  
!    To obtain GCC please use [9]our mirror sites or [10]our version control
!    system.
  
  
      For questions related to the use of GCC, please consult these web
*************** References and Acknowledgements
*** 10679,10685 ****
     provided this notice is preserved.
  
     These pages are [16]maintained by the GCC team. Last modified
!    2018-09-30[17].
  
  References
  
--- 10725,10731 ----
     provided this notice is preserved.
  
     These pages are [16]maintained by the GCC team. Last modified
!    2020-01-14[17].
  
  References
  
*************** References
*** 10692,10698 ****
     7. http://gcc.gnu.org/index.html
     8. mailto:gcc@gcc.gnu.org
     9. http://gcc.gnu.org/mirrors.html
!   10. http://gcc.gnu.org/svn.html
    11. https://gcc.gnu.org/onlinedocs/
    12. mailto:gcc-help@gcc.gnu.org
    13. mailto:gcc@gcc.gnu.org
--- 10738,10744 ----
     7. http://gcc.gnu.org/index.html
     8. mailto:gcc@gcc.gnu.org
     9. http://gcc.gnu.org/mirrors.html
!   10. http://gcc.gnu.org/git.html
    11. https://gcc.gnu.org/onlinedocs/
    12. mailto:gcc-help@gcc.gnu.org
    13. mailto:gcc@gcc.gnu.org
*************** GCC 4.1.2
*** 11242,11248 ****
     provided this notice is preserved.
  
     These pages are [12]maintained by the GCC team. Last modified
!    2018-09-30[13].
  
  References
  
--- 11288,11294 ----
     provided this notice is preserved.
  
     These pages are [12]maintained by the GCC team. Last modified
!    2019-11-28[13].
  
  References
  
*************** References
*** 11263,11268 ****
--- 11309,11316 ----
  http://gcc.gnu.org/gcc-4.0/index.html
                               GCC 4.0 Release Series
  
+    (This release series is no longer supported.)
+ 
     January 31, 2007
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-4.0/index.html
*** 11271,11278 ****
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.0.3 relative to previous releases of GCC.
  
-    This release series is no longer maintained.
- 
  Release History
  
     GCC 4.0.4
--- 11319,11324 ----
*************** References and Acknowledgements
*** 11307,11313 ****
     For additional information about GCC please refer to the [9]GCC project
     web site or contact the [10]GCC development mailing list.
  
!    To obtain GCC please use [11]our mirror sites, or [12]our SVN server.
  
  
      For questions related to the use of GCC, please consult these web
--- 11353,11360 ----
     For additional information about GCC please refer to the [9]GCC project
     web site or contact the [10]GCC development mailing list.
  
!    To obtain GCC please use [11]our mirror sites, or [12]our version
!    control system.
  
  
      For questions related to the use of GCC, please consult these web
*************** References and Acknowledgements
*** 11322,11328 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2018-09-30[19].
  
  References
  
--- 11369,11375 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2020-01-14[19].
  
  References
  
*************** References
*** 11337,11343 ****
     9. http://gcc.gnu.org/index.html
    10. mailto:gcc@gcc.gnu.org
    11. http://gcc.gnu.org/mirrors.html
!   12. http://gcc.gnu.org/svn.html
    13. https://gcc.gnu.org/onlinedocs/
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
--- 11384,11390 ----
     9. http://gcc.gnu.org/index.html
    10. mailto:gcc@gcc.gnu.org
    11. http://gcc.gnu.org/mirrors.html
!   12. http://gcc.gnu.org/git.html
    13. https://gcc.gnu.org/onlinedocs/
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
*************** GCC 4.0.4
*** 11848,11854 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2018-09-30[22].
  
  References
  
--- 11895,11901 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2019-11-28[22].
  
  References
  
*************** References
*** 11878,11883 ****
--- 11925,11932 ----
  http://gcc.gnu.org/gcc-3.4/index.html
                               GCC 3.4 Release Series
  
+    (This release series is no longer supported.)
+ 
     May 26, 2006
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-3.4/index.html
*** 11891,11898 ****
     improvements, bug fixes, and other changes, thanks to an [3]amazing
     group of volunteers.
  
-    This release series is no longer maintained.
- 
  Release History
  
     GCC 3.4.6
--- 11940,11945 ----
*************** References and Acknowledgements
*** 11933,11939 ****
     For additional information about GCC please refer to the [13]GCC
     project web site or contact the [14]GCC development mailing list.
  
!    To obtain GCC please use [15]our mirror sites, or [16]our SVN server.
  
  
      For questions related to the use of GCC, please consult these web
--- 11980,11987 ----
     For additional information about GCC please refer to the [13]GCC
     project web site or contact the [14]GCC development mailing list.
  
!    To obtain GCC please use [15]our mirror sites, or [16]our version
!    control system.
  
  
      For questions related to the use of GCC, please consult these web
*************** References and Acknowledgements
*** 11948,11954 ****
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2018-09-30[23].
  
  References
  
--- 11996,12002 ----
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2020-01-14[23].
  
  References
  
*************** References
*** 11967,11973 ****
    13. http://gcc.gnu.org/index.html
    14. mailto:gcc@gcc.gnu.org
    15. http://gcc.gnu.org/mirrors.html
!   16. http://gcc.gnu.org/svn.html
    17. https://gcc.gnu.org/onlinedocs/
    18. mailto:gcc-help@gcc.gnu.org
    19. mailto:gcc@gcc.gnu.org
--- 12015,12021 ----
    13. http://gcc.gnu.org/index.html
    14. mailto:gcc@gcc.gnu.org
    15. http://gcc.gnu.org/mirrors.html
!   16. http://gcc.gnu.org/git.html
    17. https://gcc.gnu.org/onlinedocs/
    18. mailto:gcc-help@gcc.gnu.org
    19. mailto:gcc@gcc.gnu.org
*************** GCC 3.4.6
*** 13736,13742 ****
     provided this notice is preserved.
  
     These pages are [416]maintained by the GCC team. Last modified
!    2018-09-30[417].
  
  References
  
--- 13784,13790 ----
     provided this notice is preserved.
  
     These pages are [416]maintained by the GCC team. Last modified
!    2019-11-28[417].
  
  References
  
*************** References
*** 14161,14166 ****
--- 14209,14216 ----
  http://gcc.gnu.org/gcc-3.3/index.html
                               GCC 3.3 Release Series
  
+    (This release series is no longer supported.)
+ 
     May 03, 2005
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-3.3/index.html
*** 14175,14182 ****
     improvements, bug fixes, and other changes, thanks to an [3]amazing
     group of volunteers.
  
-    This release series is no longer maintained.
- 
  Release History
  
     GCC 3.3.6
--- 14225,14230 ----
*************** References and Acknowledgements
*** 14232,14238 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2018-09-30[22].
  
  References
  
--- 14280,14286 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2019-11-28[22].
  
  References
  
*************** GCC 3.3.6
*** 15607,15613 ****
     provided this notice is preserved.
  
     These pages are [556]maintained by the GCC team. Last modified
!    2018-09-30[557].
  
  References
  
--- 15655,15661 ----
     provided this notice is preserved.
  
     These pages are [556]maintained by the GCC team. Last modified
!    2019-11-28[557].
  
  References
  
*************** References
*** 16172,16177 ****
--- 16220,16227 ----
  http://gcc.gnu.org/gcc-3.2/index.html
                               GCC 3.2 Release Series
  
+    (This release series is no longer supported.)
+ 
     April 25, 2003
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-3.2/index.html
*** 16189,16196 ****
     Please refer to our [2]detailed list of news, caveats, and bug-fixes
     for further information.
  
-    This release series is no longer maintained.
- 
  Release History
  
     GCC 3.2.3
--- 16239,16244 ----
*************** References and Acknowledgements
*** 16237,16243 ****
     provided this notice is preserved.
  
     These pages are [17]maintained by the GCC team. Last modified
!    2018-09-30[18].
  
  References
  
--- 16285,16291 ----
     provided this notice is preserved.
  
     These pages are [17]maintained by the GCC team. Last modified
!    2019-11-28[18].
  
  References
  
*************** GCC 3.2
*** 16860,16866 ****
     provided this notice is preserved.
  
     These pages are [251]maintained by the GCC team. Last modified
!    2018-09-30[252].
  
  References
  
--- 16908,16914 ----
     provided this notice is preserved.
  
     These pages are [251]maintained by the GCC team. Last modified
!    2019-11-28[252].
  
  References
  
*************** References
*** 17120,17125 ****
--- 17168,17175 ----
  http://gcc.gnu.org/gcc-3.1/index.html
                                      GCC 3.1
  
+    (This release series is no longer supported.)
+ 
     July 27, 2002
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-3.1/index.html
*** 17127,17134 ****
  
     The links below still apply to GCC 3.1.1.
  
-    This release series is no longer maintained.
- 
     May 15, 2002
  
     The [2]GNU project and the GCC developers are pleased to announce the
--- 17177,17182 ----
*************** http://gcc.gnu.org/gcc-3.1/index.html
*** 17165,17171 ****
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2018-09-30[15].
  
  References
  
--- 17213,17219 ----
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2019-11-28[15].
  
  References
  
*************** Documentation improvements
*** 17519,17525 ****
     provided this notice is preserved.
  
     These pages are [13]maintained by the GCC team. Last modified
!    2018-09-30[14].
  
  References
  
--- 17567,17573 ----
     provided this notice is preserved.
  
     These pages are [13]maintained by the GCC team. Last modified
!    2019-11-28[14].
  
  References
  
*************** References
*** 17541,17554 ****
  http://gcc.gnu.org/gcc-3.0/index.html
                                     GCC 3.0.4
  
     February 20, 2002
  
     The [1]GNU project and the GCC developers are pleased to announce the
     release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0
     series.
  
-    This release series is no longer maintained.
- 
     GCC used to stand for the GNU C Compiler, but since the compiler
     supports several other languages aside from C, it now stands for the
     GNU Compiler Collection.
--- 17589,17602 ----
  http://gcc.gnu.org/gcc-3.0/index.html
                                     GCC 3.0.4
  
+    (This release series is no longer supported.)
+ 
     February 20, 2002
  
     The [1]GNU project and the GCC developers are pleased to announce the
     release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0
     series.
  
     GCC used to stand for the GNU C Compiler, but since the compiler
     supports several other languages aside from C, it now stands for the
     GNU Compiler Collection.
*************** Previous 3.0.x Releases
*** 17593,17599 ****
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2018-09-30[15].
  
  References
  
--- 17641,17647 ----
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2019-11-28[15].
  
  References
  
*************** Other significant improvements
*** 17784,17790 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2018-09-30[19].
  
  References
  
--- 17832,17838 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2019-11-28[19].
  
  References
  
*************** http://gcc.gnu.org/gcc-3.0/caveats.html
*** 17855,17861 ****
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2018-09-30[8].
  
  References
  
--- 17903,17909 ----
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2019-11-28[8].
  
  References
  
*************** References
*** 17871,17881 ****
  http://gcc.gnu.org/gcc-2.95/index.html
                                      GCC 2.95
  
     March 16, 2001: The GNU project and the GCC developers are pleased to
     announce the release of GCC version 2.95.3.
  
-    This release is no longer maintained.
- 
  Release History
  
     GCC 2.95.3
--- 17919,17929 ----
  http://gcc.gnu.org/gcc-2.95/index.html
                                      GCC 2.95
  
+    (This release series is no longer supported.)
+ 
     March 16, 2001: The GNU project and the GCC developers are pleased to
     announce the release of GCC version 2.95.3.
  
  Release History
  
     GCC 2.95.3
*************** References and Acknowledgements
*** 17937,17943 ****
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2018-09-30[16].
  
  References
  
--- 17985,17991 ----
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2019-11-28[16].
  
  References
  
*************** Additional Changes in GCC 2.95.3
*** 18202,18208 ****
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2018-09-30[23].
  
  References
  
--- 18250,18256 ----
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2019-11-28[23].
  
  References
  
*************** http://gcc.gnu.org/gcc-2.95/caveats.html
*** 18285,18291 ****
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2018-09-30[8].
  
  References
  
--- 18333,18339 ----
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2019-11-28[8].
  
  References
  
*************** http://gcc.gnu.org/egcs-1.1/index.html
*** 18506,18512 ****
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2018-09-30[16].
  
  References
  
--- 18554,18560 ----
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2019-11-28[16].
  
  References
  
*************** http://gcc.gnu.org/egcs-1.1/features.htm
*** 18605,18611 ****
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2018-09-30[11].
  
  References
  
--- 18653,18659 ----
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2019-11-28[11].
  
  References
  
*************** http://gcc.gnu.org/egcs-1.1/caveats.html
*** 18659,18665 ****
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2018-09-30[7].
  
  References
  
--- 18707,18713 ----
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2019-11-28[7].
  
  References
  
*************** http://gcc.gnu.org/egcs-1.0/index.html
*** 18855,18861 ****
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2018-09-30[11].
  
  References
  
--- 18903,18909 ----
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2019-11-28[11].
  
  References
  
*************** http://gcc.gnu.org/egcs-1.0/features.htm
*** 18921,18927 ****
     provided this notice is preserved.
  
     These pages are [8]maintained by the GCC team. Last modified
!    2018-09-30[9].
  
  References
  
--- 18969,18975 ----
     provided this notice is preserved.
  
     These pages are [8]maintained by the GCC team. Last modified
!    2019-11-28[9].
  
  References
  
*************** http://gcc.gnu.org/egcs-1.0/caveats.html
*** 18974,18980 ****
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2018-09-30[7].
  
  References
  
--- 19022,19028 ----
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2019-11-28[7].
  
  References
  
diff -Nrcpad gcc-8.3.0/config/ChangeLog gcc-8.4.0/config/ChangeLog
*** gcc-8.3.0/config/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/config/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/contrib/ChangeLog gcc-8.4.0/contrib/ChangeLog
*** gcc-8.3.0/contrib/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/contrib/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,18 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2020-01-15  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backport:
+ 	2018-05-01  Jim Wilson  <jimw@sifive.com>
+ 
+ 	* gcc_update: Check for .git as a file.
+ 
+ 2019-08-16  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* test_summary: Do not escape "=".
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/contrib/gcc_update gcc-8.4.0/contrib/gcc_update
*** gcc-8.3.0/contrib/gcc_update	Tue Nov 28 10:35:37 2017
--- gcc-8.4.0/contrib/gcc_update	Wed Mar  4 08:29:59 2020
*************** p
*** 286,292 ****
  esac
  
  # Check for known version control systems.
! if [ -d .git ]; then
      GCC_GIT=${GCC_GIT-${GIT-git}}
      vcs_type="git"
  elif [ -d .hg ]; then
--- 286,292 ----
  esac
  
  # Check for known version control systems.
! if [ -d .git ] || [ -f .git ]; then
      GCC_GIT=${GCC_GIT-${GIT-git}}
      vcs_type="git"
  elif [ -d .hg ]; then
diff -Nrcpad gcc-8.3.0/contrib/header-tools/ChangeLog gcc-8.4.0/contrib/header-tools/ChangeLog
*** gcc-8.3.0/contrib/header-tools/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/contrib/header-tools/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/contrib/reghunt/ChangeLog gcc-8.4.0/contrib/reghunt/ChangeLog
*** gcc-8.3.0/contrib/reghunt/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/contrib/reghunt/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/contrib/regression/ChangeLog gcc-8.4.0/contrib/regression/ChangeLog
*** gcc-8.3.0/contrib/regression/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/contrib/regression/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/contrib/test_summary gcc-8.4.0/contrib/test_summary
*** gcc-8.3.0/contrib/test_summary	Wed Mar 21 08:47:12 2018
--- gcc-8.4.0/contrib/test_summary	Wed Mar  4 08:29:59 2020
*************** NR == 1 {
*** 127,133 ****
    if (lang == "") lang = " "$2" "; else lang = " ";
  }
  $2 == "version" { save = $0; $1 = ""; $2 = ""; version = $0; gsub(/^ */, "", version); gsub(/\r$/, "", version); $0 = save; }
! /\===.*Summary/ { print ""; print; blanks=1; }
  /tests ===/ || /^(Target|Host|Native)/ || $2 == "version" { print; blanks=1; }
  /^(XPASS|FAIL|UNRESOLVED|WARNING|ERROR|# of )/ { sub ("\r", ""); print; }
  /^using:/ { print ""; print; print ""; }
--- 127,133 ----
    if (lang == "") lang = " "$2" "; else lang = " ";
  }
  $2 == "version" { save = $0; $1 = ""; $2 = ""; version = $0; gsub(/^ */, "", version); gsub(/\r$/, "", version); $0 = save; }
! /===.*Summary/ { print ""; print; blanks=1; }
  /tests ===/ || /^(Target|Host|Native)/ || $2 == "version" { print; blanks=1; }
  /^(XPASS|FAIL|UNRESOLVED|WARNING|ERROR|# of )/ { sub ("\r", ""); print; }
  /^using:/ { print ""; print; print ""; }
diff -Nrcpad gcc-8.3.0/fixincludes/ChangeLog gcc-8.4.0/fixincludes/ChangeLog
*** gcc-8.3.0/fixincludes/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/fixincludes/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,75 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2020-01-01  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2019-12-30  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR libgomp/93066
+ 	* inclhack.def (hpux_c99_inttypes3): Fix defines for INTPTR_MAX
+ 	and UINTPTR_MAX, and missing define for SIZE_MAX.
+ 	* fixincl.x: Regenerate.
+ 	* tests/base/inttypes.h: Update for above fix.
+ 
+ 2019-08-25  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-08-18  C.G. Dogan  <gcc+cgdogan.00@gmail.com>
+ 		    Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/83531
+ 	* inclhack.def (darwin_api_availability): New; strip leading
+ 	underscores from API_XXXX defines.
+ 	* fixincl.x: Regenerate.
+ 	* tests/base/os/availability.h: New file.
+ 
+ 2019-08-24  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* inclhack.def: Replace the complex test using __STRICT_ANSI__ and
+ 	__STDC_VERSION__ with a test using __DARWIN_NO_LONG_LONG.
+ 	Ensure that the top level math.h uses <> to wrap included headers
+ 	rather than "".
+ 	* fixincl.x: Regenerated.
+ 	* tests/base/architecture/ppc/math.h: Update test to include the
+ 	__DARWIN_NO_LONG_LONG case.
+ 
+ 2019-08-24  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* inclhack.def: Guard __has_attribute and __has_extension in
+ 	os/base.h.
+ 	Guard Apple blocks syntax in dispatch/object.h.
+ 	* fixincl.x: Regenerate.
+ 	* tests/base/dispatch/object.h: New file.
+ 	* tests/base/os/base.h: New file.
+ 
+ 2019-06-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-11  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR bootstrap/89864
+ 	* inclhack.def (darwin_ucred__Atomic): Do not supply test_text
+ 	for wrap fixes.
+ 	* fixincl.x: Regenerated.
+ 
+ 	Backport from mainline.
+ 	2019-04-18  Erik Schnetter  <schnetter@gmail.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 		    Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR bootstrap/89864
+ 	* inclhack.def (darwin_ucred__Atomic): New, work around _Atomic keyword
+ 	use in headers included by C++.
+ 	* fixincl.x: Regenerated.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/fixincludes/fixincl.x gcc-8.4.0/fixincludes/fixincl.x
*** gcc-8.3.0/fixincludes/fixincl.x	Thu Feb 22 16:12:26 2018
--- gcc-8.4.0/fixincludes/fixincl.x	Wed Mar  4 08:29:59 2020
***************
*** 2,12 ****
   *
   * DO NOT EDIT THIS FILE   (fixincl.x)
   *
!  * It has been AutoGen-ed  February 22, 2018 at 03:46:51 PM by AutoGen 5.18
   * From the definitions    inclhack.def
   * and the template file   fixincl
   */
! /* DO NOT SVN-MERGE THIS FILE, EITHER Thu Feb 22 15:46:51 UTC 2018
   *
   * You must regenerate it.  Use the ./genfixes script.
   *
--- 2,12 ----
   *
   * DO NOT EDIT THIS FILE   (fixincl.x)
   *
!  * It has been AutoGen-ed  January  1, 2020 at 12:04:04 PM by AutoGen 5.18.16
   * From the definitions    inclhack.def
   * and the template file   fixincl
   */
! /* DO NOT SVN-MERGE THIS FILE, EITHER Wed Jan  1 12:04:05 EST 2020
   *
   * You must regenerate it.  Use the ./genfixes script.
   *
***************
*** 15,21 ****
   * certain ANSI-incompatible system header files which are fixed to work
   * correctly with ANSI C and placed in a directory that GNU C will search.
   *
!  * This file contains 249 fixup descriptions.
   *
   * See README for more information.
   *
--- 15,21 ----
   * certain ANSI-incompatible system header files which are fixed to work
   * correctly with ANSI C and placed in a directory that GNU C will search.
   *
!  * This file contains 255 fixup descriptions.
   *
   * See README for more information.
   *
*************** static const char* apzAab_Darwin7_9_Long
*** 269,274 ****
--- 269,324 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Darwin_Api_Availability fix
+  */
+ tSCC zDarwin_Api_AvailabilityName[] =
+      "darwin_api_availability";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zDarwin_Api_AvailabilityList[] =
+   "os/availability.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzDarwin_Api_AvailabilityMachs[] = {
+         "*-*-darwin*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zDarwin_Api_AvailabilitySelect0[] =
+        " *#define __API_AVAILABLE.*\n\
+  *#define __API_DEPRECATED.*\n\
+  *#define __API_DEPRECATED_WITH_REPLACEMENT.*\n\
+  *#define __API_UNAVAILABLE.*\n";
+ 
+ /*
+  *  content bypass pattern - skip fix if pattern found
+  */
+ tSCC zDarwin_Api_AvailabilityBypass0[] =
+        "__IPHONE_OS_VERSION_MIN_REQUIRED";
+ 
+ #define    DARWIN_API_AVAILABILITY_TEST_CT  2
+ static tTestDesc aDarwin_Api_AvailabilityTests[] = {
+   { TT_NEGREP,   zDarwin_Api_AvailabilityBypass0, (regex_t*)NULL },
+   { TT_EGREP,    zDarwin_Api_AvailabilitySelect0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Darwin_Api_Availability
+  */
+ static const char* apzDarwin_Api_AvailabilityPatch[] = {
+     "format",
+     "    #define API_AVAILABLE(...)\n\
+     #define API_DEPRECATED(...)\n\
+     #define API_DEPRECATED_WITH_REPLACEMENT(...)\n\
+     #define API_UNAVAILABLE(...)\n",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Aab_Fd_Zero_Asm_Posix_Types_H fix
   */
  tSCC zAab_Fd_Zero_Asm_Posix_Types_HName[] =
*************** tSCC zDarwin_9_Long_Double_Funcs_2List[]
*** 2598,2604 ****
   *  Machine/OS name selection pattern
   */
  tSCC* apzDarwin_9_Long_Double_Funcs_2Machs[] = {
!         "*-*-darwin7.9*",
          (const char*)NULL };
  
  /*
--- 2648,2654 ----
   *  Machine/OS name selection pattern
   */
  tSCC* apzDarwin_9_Long_Double_Funcs_2Machs[] = {
!         "*-*-darwin*",
          (const char*)NULL };
  
  /*
*************** static const char* apzDarwin_Gcc4_Breaka
*** 2704,2709 ****
--- 2754,2795 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Darwin_Ll_Funcs_Avail fix
+  */
+ tSCC zDarwin_Ll_Funcs_AvailName[] =
+      "darwin_ll_funcs_avail";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zDarwin_Ll_Funcs_AvailList[] =
+   "architecture/ppc/math.h\0architecture/i386/math.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzDarwin_Ll_Funcs_AvailMachs[] = {
+         "*-*-darwin*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zDarwin_Ll_Funcs_AvailSelect0[] =
+        "#if[^_]*__STDC_VERSION__[^_]*__STDC_VERSION__[^1]*199901L[^_]*__STRICT_ANSI__[^_]*__GNUC__[^)]*";
+ 
+ #define    DARWIN_LL_FUNCS_AVAIL_TEST_CT  1
+ static tTestDesc aDarwin_Ll_Funcs_AvailTests[] = {
+   { TT_EGREP,    zDarwin_Ll_Funcs_AvailSelect0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Darwin_Ll_Funcs_Avail
+  */
+ static const char* apzDarwin_Ll_Funcs_AvailPatch[] = { sed_cmd_z,
+     "-e", "s/#if[^_]*__STDC_VERSION__[^_]*__STDC_VERSION__[^_]*199901L[^_]*__STRICT_ANSI__[^_]*__GNUC__[^\\)]*)/#if !(__DARWIN_NO_LONG_LONG)/",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Darwin_Longjmp_Noreturn fix
   */
  tSCC zDarwin_Longjmp_NoreturnName[] =
*************** static const char* apzDarwin_Os_Trace_3P
*** 2866,2871 ****
--- 2952,3037 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Darwin_Os_Base_1 fix
+  */
+ tSCC zDarwin_Os_Base_1Name[] =
+      "darwin_os_base_1";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zDarwin_Os_Base_1List[] =
+   "os/base.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzDarwin_Os_Base_1Machs[] = {
+         "*-*-darwin*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zDarwin_Os_Base_1Select0[] =
+        "#define __has_attribute.*\n\
+ #endif";
+ 
+ #define    DARWIN_OS_BASE_1_TEST_CT  1
+ static tTestDesc aDarwin_Os_Base_1Tests[] = {
+   { TT_EGREP,    zDarwin_Os_Base_1Select0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Darwin_Os_Base_1
+  */
+ static const char* apzDarwin_Os_Base_1Patch[] = {
+     "format",
+     "%0\n\
+ #ifndef __has_extension\n\
+ #define __has_extension(x) 0\n\
+ #endif",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
+  *  Description of Darwin_Dispatch_Object_1 fix
+  */
+ tSCC zDarwin_Dispatch_Object_1Name[] =
+      "darwin_dispatch_object_1";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zDarwin_Dispatch_Object_1List[] =
+   "dispatch/object.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzDarwin_Dispatch_Object_1Machs[] = {
+         "*-*-darwin*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zDarwin_Dispatch_Object_1Select0[] =
+        "typedef void.*\\^dispatch_block_t.*";
+ 
+ #define    DARWIN_DISPATCH_OBJECT_1_TEST_CT  1
+ static tTestDesc aDarwin_Dispatch_Object_1Tests[] = {
+   { TT_EGREP,    zDarwin_Dispatch_Object_1Select0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Darwin_Dispatch_Object_1
+  */
+ static const char* apzDarwin_Dispatch_Object_1Patch[] = {
+     "format",
+     "#if __BLOCKS__\n\
+ %0\n\
+ #endif",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Darwin_Private_Extern fix
   */
  tSCC zDarwin_Private_ExternName[] =
*************** static const char* apzDarwin_Stdint_7Pat
*** 3222,3227 ****
--- 3388,3435 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Darwin_Ucred__Atomic fix
+  */
+ tSCC zDarwin_Ucred__AtomicName[] =
+      "darwin_ucred__Atomic";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zDarwin_Ucred__AtomicList[] =
+   "sys/ucred.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzDarwin_Ucred__AtomicMachs[] = {
+         "*-*-darwin*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zDarwin_Ucred__AtomicSelect0[] =
+        "_Atomic";
+ 
+ #define    DARWIN_UCRED__ATOMIC_TEST_CT  1
+ static tTestDesc aDarwin_Ucred__AtomicTests[] = {
+   { TT_EGREP,    zDarwin_Ucred__AtomicSelect0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Darwin_Ucred__Atomic
+  */
+ static const char* apzDarwin_Ucred__AtomicPatch[] = {
+     "wrap",
+     "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n\
+ # define _Atomic volatile\n\
+ #endif\n",
+     "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n\
+ # undef _Atomic\n\
+ #endif\n",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Dec_Intern_Asm fix
   */
  tSCC zDec_Intern_AsmName[] =
*************** static const char* apzHpux_C99_Inttypes2
*** 4889,4894 ****
--- 5097,5151 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Hpux_C99_Inttypes3 fix
+  */
+ tSCC zHpux_C99_Inttypes3Name[] =
+      "hpux_c99_inttypes3";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zHpux_C99_Inttypes3List[] =
+   "inttypes.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzHpux_C99_Inttypes3Machs[] = {
+         "hppa*-hp-hpux11*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zHpux_C99_Inttypes3Select0[] =
+        "#define[ \t]INTPTR_MAX[ \t]*\n\
+ #define[ \t]UINTPTR_MAX[ \t]*\n";
+ 
+ #define    HPUX_C99_INTTYPES3_TEST_CT  1
+ static tTestDesc aHpux_C99_Inttypes3Tests[] = {
+   { TT_EGREP,    zHpux_C99_Inttypes3Select0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Hpux_C99_Inttypes3
+  */
+ static const char* apzHpux_C99_Inttypes3Patch[] = {
+     "format",
+     "#undef SIZE_MAX\n\
+ #define SIZE_MAX __SIZE_MAX__\n\
+ #ifdef __INTPTR_MAX__\n\
+ # undef INTPTR_MAX\n\
+ # define INTPTR_MAX __INTPTR_MAX__\n\
+ # undef INTPTR_MIN\n\
+ # define INTPTR_MIN (-INTPTR_MAX - 1)\n\
+ #endif\n\
+ #ifdef __UINTPTR_MAX__\n\
+ # undef UINTPTR_MAX\n\
+ # define UINTPTR_MAX __UINTPTR_MAX__\n\
+ #endif\n",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Hpux_Ctype_Macros fix
   */
  tSCC zHpux_Ctype_MacrosName[] =
*************** static const char* apzX11_SprintfPatch[]
*** 10099,10107 ****
   *
   *  List of all fixes
   */
! #define REGEX_COUNT          287
  #define MACH_LIST_SIZE_LIMIT 187
! #define FIX_COUNT            249
  
  /*
   *  Enumerate the fixes
--- 10356,10364 ----
   *
   *  List of all fixes
   */
! #define REGEX_COUNT          294
  #define MACH_LIST_SIZE_LIMIT 187
! #define FIX_COUNT            255
  
  /*
   *  Enumerate the fixes
*************** typedef enum {
*** 10110,10115 ****
--- 10367,10373 ----
      AAB_AIX_STDIO_FIXIDX,
      AAB_AIX_FCNTL_FIXIDX,
      AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_FIXIDX,
+     DARWIN_API_AVAILABILITY_FIXIDX,
      AAB_FD_ZERO_ASM_POSIX_TYPES_H_FIXIDX,
      AAB_FD_ZERO_GNU_TYPES_H_FIXIDX,
      AAB_FD_ZERO_SELECTBITS_H_FIXIDX,
*************** typedef enum {
*** 10171,10180 ****
--- 10429,10441 ----
      DARWIN_9_LONG_DOUBLE_FUNCS_2_FIXIDX,
      DARWIN_EXTERNC_FIXIDX,
      DARWIN_GCC4_BREAKAGE_FIXIDX,
+     DARWIN_LL_FUNCS_AVAIL_FIXIDX,
      DARWIN_LONGJMP_NORETURN_FIXIDX,
      DARWIN_OS_TRACE_1_FIXIDX,
      DARWIN_OS_TRACE_2_FIXIDX,
      DARWIN_OS_TRACE_3_FIXIDX,
+     DARWIN_OS_BASE_1_FIXIDX,
+     DARWIN_DISPATCH_OBJECT_1_FIXIDX,
      DARWIN_PRIVATE_EXTERN_FIXIDX,
      DARWIN_STDINT_1_FIXIDX,
      DARWIN_STDINT_2_FIXIDX,
*************** typedef enum {
*** 10183,10188 ****
--- 10444,10450 ----
      DARWIN_STDINT_5_FIXIDX,
      DARWIN_STDINT_6_FIXIDX,
      DARWIN_STDINT_7_FIXIDX,
+     DARWIN_UCRED__ATOMIC_FIXIDX,
      DEC_INTERN_ASM_FIXIDX,
      DJGPP_WCHAR_H_FIXIDX,
      ECD_CURSOR_FIXIDX,
*************** typedef enum {
*** 10224,10229 ****
--- 10486,10492 ----
      HPUX_C99_INTPTR_FIXIDX,
      HPUX_C99_INTTYPES_FIXIDX,
      HPUX_C99_INTTYPES2_FIXIDX,
+     HPUX_C99_INTTYPES3_FIXIDX,
      HPUX_CTYPE_MACROS_FIXIDX,
      HPUX_EXTERN_ERRNO_FIXIDX,
      HPUX_HTONL_FIXIDX,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 10374,10379 ****
--- 10637,10647 ----
       AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT,
       aAab_Darwin7_9_Long_Double_FuncsTests,   apzAab_Darwin7_9_Long_Double_FuncsPatch, 0 },
  
+   {  zDarwin_Api_AvailabilityName,    zDarwin_Api_AvailabilityList,
+      apzDarwin_Api_AvailabilityMachs,
+      DARWIN_API_AVAILABILITY_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aDarwin_Api_AvailabilityTests,   apzDarwin_Api_AvailabilityPatch, 0 },
+ 
    {  zAab_Fd_Zero_Asm_Posix_Types_HName,    zAab_Fd_Zero_Asm_Posix_Types_HList,
       apzAab_Fd_Zero_Asm_Posix_Types_HMachs,
       AAB_FD_ZERO_ASM_POSIX_TYPES_H_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 10679,10684 ****
--- 10947,10957 ----
       DARWIN_GCC4_BREAKAGE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
       aDarwin_Gcc4_BreakageTests,   apzDarwin_Gcc4_BreakagePatch, 0 },
  
+   {  zDarwin_Ll_Funcs_AvailName,    zDarwin_Ll_Funcs_AvailList,
+      apzDarwin_Ll_Funcs_AvailMachs,
+      DARWIN_LL_FUNCS_AVAIL_TEST_CT, FD_MACH_ONLY,
+      aDarwin_Ll_Funcs_AvailTests,   apzDarwin_Ll_Funcs_AvailPatch, 0 },
+ 
    {  zDarwin_Longjmp_NoreturnName,    zDarwin_Longjmp_NoreturnList,
       apzDarwin_Longjmp_NoreturnMachs,
       DARWIN_LONGJMP_NORETURN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 10699,10704 ****
--- 10972,10987 ----
       DARWIN_OS_TRACE_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
       aDarwin_Os_Trace_3Tests,   apzDarwin_Os_Trace_3Patch, 0 },
  
+   {  zDarwin_Os_Base_1Name,    zDarwin_Os_Base_1List,
+      apzDarwin_Os_Base_1Machs,
+      DARWIN_OS_BASE_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aDarwin_Os_Base_1Tests,   apzDarwin_Os_Base_1Patch, 0 },
+ 
+   {  zDarwin_Dispatch_Object_1Name,    zDarwin_Dispatch_Object_1List,
+      apzDarwin_Dispatch_Object_1Machs,
+      DARWIN_DISPATCH_OBJECT_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aDarwin_Dispatch_Object_1Tests,   apzDarwin_Dispatch_Object_1Patch, 0 },
+ 
    {  zDarwin_Private_ExternName,    zDarwin_Private_ExternList,
       apzDarwin_Private_ExternMachs,
       DARWIN_PRIVATE_EXTERN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 10739,10744 ****
--- 11022,11032 ----
       DARWIN_STDINT_7_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
       aDarwin_Stdint_7Tests,   apzDarwin_Stdint_7Patch, 0 },
  
+   {  zDarwin_Ucred__AtomicName,    zDarwin_Ucred__AtomicList,
+      apzDarwin_Ucred__AtomicMachs,
+      DARWIN_UCRED__ATOMIC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aDarwin_Ucred__AtomicTests,   apzDarwin_Ucred__AtomicPatch, 0 },
+ 
    {  zDec_Intern_AsmName,    zDec_Intern_AsmList,
       apzDec_Intern_AsmMachs,
       DEC_INTERN_ASM_TEST_CT, FD_MACH_ONLY,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 10944,10949 ****
--- 11232,11242 ----
       HPUX_C99_INTTYPES2_TEST_CT, FD_MACH_ONLY,
       aHpux_C99_Inttypes2Tests,   apzHpux_C99_Inttypes2Patch, 0 },
  
+   {  zHpux_C99_Inttypes3Name,    zHpux_C99_Inttypes3List,
+      apzHpux_C99_Inttypes3Machs,
+      HPUX_C99_INTTYPES3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aHpux_C99_Inttypes3Tests,   apzHpux_C99_Inttypes3Patch, 0 },
+ 
    {  zHpux_Ctype_MacrosName,    zHpux_Ctype_MacrosList,
       apzHpux_Ctype_MacrosMachs,
       HPUX_CTYPE_MACROS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
diff -Nrcpad gcc-8.3.0/fixincludes/inclhack.def gcc-8.4.0/fixincludes/inclhack.def
*** gcc-8.3.0/fixincludes/inclhack.def	Thu Feb 22 16:12:26 2018
--- gcc-8.4.0/fixincludes/inclhack.def	Wed Mar  4 08:29:59 2020
*************** fix = {
*** 195,200 ****
--- 195,227 ----
  };
  
  /*
+  *  SDKs for 10.13 and 10.14 omit the definitions for API_AVAILABLE where
+  *  __attribute__((availability)) is not supported.
+  */
+ fix = {
+     hackname  = darwin_api_availability;
+     mach      = "*-*-darwin*";
+     files     = os/availability.h;
+     bypass    = "__IPHONE_OS_VERSION_MIN_REQUIRED";
+     select    =
+     " *#define __API_AVAILABLE.*\n"
+     " *#define __API_DEPRECATED.*\n"
+     " *#define __API_DEPRECATED_WITH_REPLACEMENT.*\n"
+     " *#define __API_UNAVAILABLE.*\n";
+     c_fix     = format;
+     c_fix_arg =
+     "    #define API_AVAILABLE(...)\n"
+     "    #define API_DEPRECATED(...)\n"
+     "    #define API_DEPRECATED_WITH_REPLACEMENT(...)\n"
+     "    #define API_UNAVAILABLE(...)\n";
+     test_text =
+     "#define __API_AVAILABLE(...)\n"
+     "#define __API_DEPRECATED(...)\n"
+     "#define __API_DEPRECATED_WITH_REPLACEMENT(...)\n"
+     "#define __API_UNAVAILABLE(...)\n";
+ };
+ 
+ /*
   *  This fixes __FD_ZERO bug for linux 2.x.y (x <= 2 && y <= some n)
   */
  fix = {
*************** fix = {
*** 1268,1279 ****
  };
  
  /*
!  *  For the AAB_darwin7_9_long_double_funcs fix to be useful,
!  *  you have to not use "" includes.
   */
  fix = {
      hackname  = darwin_9_long_double_funcs_2;
!     mach      = "*-*-darwin7.9*";
      files     = math.h;
      select    = '#include[ \t]+\"';
      c_fix     = format;
--- 1295,1306 ----
  };
  
  /*
!  *  For the AAB_darwin7_9_long_double_funcs fix (and later fixes for long long)
!  *  to be useful, the main math.h must use <> and not "" includes.
   */
  fix = {
      hackname  = darwin_9_long_double_funcs_2;
!     mach      = "*-*-darwin*";
      files     = math.h;
      select    = '#include[ \t]+\"';
      c_fix     = format;
*************** fix = {
*** 1281,1287 ****
    
      c_fix_arg = '([ \t]*#[ \t]*include[ \t]+)"([a-z0-9/]+)\.h"';
    
!     test_text = '#include "architecture/ppc/math.h"';
  };
  
  /*
--- 1308,1314 ----
    
      c_fix_arg = '([ \t]*#[ \t]*include[ \t]+)"([a-z0-9/]+)\.h"';
    
!     test_text = '#include <architecture/ppc/math.h>';
  };
  
  /*
*************** fix = {
*** 1325,1330 ****
--- 1352,1373 ----
  };
  
  /*
+  * math.h hides the long long functions that are available on the system for
+  * 10.5 and 10.6 SDKs, we expect to use them in G++ without specifying a value
+  * for __STDC_VERSION__, or switching __STRICT_ANSI__ off.
+  */
+ fix = {
+   hackname  = darwin_ll_funcs_avail;
+   mach      = "*-*-darwin*";
+   files     = architecture/ppc/math.h, architecture/i386/math.h;
+   select    = "#if[^_]*__STDC_VERSION__[^_]*__STDC_VERSION__[^1]*199901L[^_]*"
+ 	      "__STRICT_ANSI__[^_]*__GNUC__[^\)]*";
+   sed       = "s/#if[^_]*__STDC_VERSION__[^_]*__STDC_VERSION__[^_]*199901L[^_]*"
+ 	      "__STRICT_ANSI__[^_]*__GNUC__[^\\)]*\)/#if\ !\(__DARWIN_NO_LONG_LONG\)/";
+   test_text = "#if\ !(__DARWIN_NO_LONG_LONG)";
+ };
+ 
+ /*
   *  Before Mac OS X 10.8 <i386/setjmp.h> doesn't mark longjump noreturn.
   */
  fix = {
*************** fix = {
*** 1396,1401 ****
--- 1439,1487 ----
  };
  
  /*
+  *  In macOS 10.10 <os/base.h>, doesn't have __has_extension guarded.
+  */
+ fix = {
+   hackname  = darwin_os_base_1;
+   mach      = "*-*-darwin*";
+   files     = os/base.h;
+   select    = <<- OS_BASE_1_SEL
+ #define __has_attribute.*
+ #endif
+ OS_BASE_1_SEL;
+   c_fix     = format;
+   c_fix_arg = <<- OS_BASE_1_FIX
+ %0
+ #ifndef __has_extension
+ #define __has_extension(x) 0
+ #endif
+ OS_BASE_1_FIX;
+   test_text = <<- OS_BASE_1_TEST
+ #define __has_attribute(x) 0
+ #endif
+ 
+ #if __GNUC__
+ OS_BASE_1_TEST;
+ };
+ 
+ /*
+  *  In macOS 10.10 <dispatch/object.h>, has unguarded block syntax.
+  */
+ fix = {
+   hackname  = darwin_dispatch_object_1;
+   mach      = "*-*-darwin*";
+   files     = dispatch/object.h;
+   select    = "typedef void.*\\^dispatch_block_t.*";
+   c_fix     = format;
+   c_fix_arg = "#if __BLOCKS__\n%0\n#endif";
+   test_text = <<- DISPATCH_OBJECT_1_TEST
+ typedef void (^dispatch_block_t)(void);
+ 
+ __BEGIN_DECLS
+ DISPATCH_OBJECT_1_TEST;
+ };
+ 
+ /*
   *  __private_extern__ doesn't exist in FSF GCC.  Even if it did,
   *  why would you ever put it in a system header file?
   */
*************** fix = {
*** 1592,1597 ****
--- 1678,1702 ----
  		"#define UINTMAX_C(v) (v ## ULL)";
  };
  
+ /*  The SDK included with XCode 10.2 has the file <sys/ucred.h> that uses the
+     C11 _Atomic keyword (exposing it to C++ code).  The work-around here follows
+     the header in declaring the entity volatile when _Atomic is not available.
+ */
+ fix = {
+     hackname  = darwin_ucred__Atomic;
+     mach      = "*-*-darwin*";
+     files     = sys/ucred.h;
+     select    = "_Atomic";
+     c_fix     = wrap;
+     c_fix_arg = "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n"
+ 		"# define _Atomic volatile\n"
+ 		"#endif\n";
+     c_fix_arg = "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n"
+ 		"# undef _Atomic\n"
+ 		"#endif\n";
+     test_text = ""; /* Don't provide this for wrap fixes.  */
+ };
+ 
  /*
   *  Fix <c_asm.h> on Digital UNIX V4.0:
   *  It contains a prototype for a DEC C internal asm() function,
*************** fix = {
*** 2453,2458 ****
--- 2558,2589 ----
  };
  
  /*
+  * Fix broken and missing defines in inttypes.h
+  */
+ fix = {
+     hackname  = hpux_c99_inttypes3;
+     mach      = "hppa*-hp-hpux11*";
+     files     = inttypes.h;
+     select    = "#define[ \t]INTPTR_MAX[ \t]*\n"
+ 		"#define[ \t]UINTPTR_MAX[ \t]*\n";
+     c_fix     = format;
+     c_fix_arg = "#undef SIZE_MAX\n"
+ 		"#define SIZE_MAX __SIZE_MAX__\n"
+ 		"#ifdef __INTPTR_MAX__\n"
+ 		"# undef INTPTR_MAX\n"
+ 		"# define INTPTR_MAX __INTPTR_MAX__\n"
+ 		"# undef INTPTR_MIN\n"
+ 		"# define INTPTR_MIN (-INTPTR_MAX - 1)\n"
+ 		"#endif\n"
+ 		"#ifdef __UINTPTR_MAX__\n"
+ 		"# undef UINTPTR_MAX\n"
+ 		"# define UINTPTR_MAX __UINTPTR_MAX__\n"
+ 		"#endif\n";
+     test_text = "#define INTPTR_MAX\n"
+ 		"#define UINTPTR_MAX\n";
+ };
+ 
+ /*
   *  Fix hpux broken ctype macros
   */
  fix = {
diff -Nrcpad gcc-8.3.0/fixincludes/tests/base/architecture/ppc/math.h gcc-8.4.0/fixincludes/tests/base/architecture/ppc/math.h
*** gcc-8.3.0/fixincludes/tests/base/architecture/ppc/math.h	Mon Oct 29 16:44:34 2012
--- gcc-8.4.0/fixincludes/tests/base/architecture/ppc/math.h	Wed Mar  4 08:29:59 2020
***************
*** 12,14 ****
--- 12,19 ----
  #if defined( BROKEN_NAN_CHECK )
  #if 1
  #endif  /* BROKEN_NAN_CHECK */
+ 
+ 
+ #if defined( DARWIN_LL_FUNCS_AVAIL_CHECK )
+ #if !(__DARWIN_NO_LONG_LONG)
+ #endif  /* DARWIN_LL_FUNCS_AVAIL_CHECK */
diff -Nrcpad gcc-8.3.0/fixincludes/tests/base/dispatch/object.h gcc-8.4.0/fixincludes/tests/base/dispatch/object.h
*** gcc-8.3.0/fixincludes/tests/base/dispatch/object.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/fixincludes/tests/base/dispatch/object.h	Wed Mar  4 08:29:59 2020
***************
*** 0 ****
--- 1,18 ----
+ /*  DO NOT EDIT THIS FILE.
+ 
+     It has been auto-edited by fixincludes from:
+ 
+ 	"fixinc/tests/inc/dispatch/object.h"
+ 
+     This had to be done to correct non-standard usages in the
+     original, manufacturer supplied header file.  */
+ 
+ 
+ 
+ #if defined( DARWIN_DISPATCH_OBJECT_1_CHECK )
+ #if __BLOCKS__
+ typedef void (^dispatch_block_t)(void);
+ #endif
+ 
+ __BEGIN_DECLS
+ #endif  /* DARWIN_DISPATCH_OBJECT_1_CHECK */
diff -Nrcpad gcc-8.3.0/fixincludes/tests/base/inttypes.h gcc-8.4.0/fixincludes/tests/base/inttypes.h
*** gcc-8.3.0/fixincludes/tests/base/inttypes.h	Tue Apr 28 15:17:49 2009
--- gcc-8.4.0/fixincludes/tests/base/inttypes.h	Wed Mar  4 08:29:59 2020
***************
*** 16,18 ****
--- 16,35 ----
  #define UINT32_C(__c) __CONCAT__(__c,u)
  
  #endif  /* HPUX_C99_INTTYPES_CHECK */
+ 
+ 
+ #if defined( HPUX_C99_INTTYPES3_CHECK )
+ #undef SIZE_MAX
+ #define SIZE_MAX __SIZE_MAX__
+ #ifdef __INTPTR_MAX__
+ # undef INTPTR_MAX
+ # define INTPTR_MAX __INTPTR_MAX__
+ # undef INTPTR_MIN
+ # define INTPTR_MIN (-INTPTR_MAX - 1)
+ #endif
+ #ifdef __UINTPTR_MAX__
+ # undef UINTPTR_MAX
+ # define UINTPTR_MAX __UINTPTR_MAX__
+ #endif
+ 
+ #endif  /* HPUX_C99_INTTYPES3_CHECK */
diff -Nrcpad gcc-8.3.0/fixincludes/tests/base/os/availability.h gcc-8.4.0/fixincludes/tests/base/os/availability.h
*** gcc-8.3.0/fixincludes/tests/base/os/availability.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/fixincludes/tests/base/os/availability.h	Wed Mar  4 08:29:59 2020
***************
*** 0 ****
--- 1,18 ----
+ /*  DO NOT EDIT THIS FILE.
+ 
+     It has been auto-edited by fixincludes from:
+ 
+ 	"fixinc/tests/inc/os/availability.h"
+ 
+     This had to be done to correct non-standard usages in the
+     original, manufacturer supplied header file.  */
+ 
+ 
+ 
+ #if defined( DARWIN_API_AVAILABILITY_CHECK )
+     #define API_AVAILABLE(...)
+     #define API_DEPRECATED(...)
+     #define API_DEPRECATED_WITH_REPLACEMENT(...)
+     #define API_UNAVAILABLE(...)
+ 
+ #endif  /* DARWIN_API_AVAILABILITY_CHECK */
diff -Nrcpad gcc-8.3.0/fixincludes/tests/base/os/base.h gcc-8.4.0/fixincludes/tests/base/os/base.h
*** gcc-8.3.0/fixincludes/tests/base/os/base.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/fixincludes/tests/base/os/base.h	Wed Mar  4 08:29:59 2020
***************
*** 0 ****
--- 1,20 ----
+ /*  DO NOT EDIT THIS FILE.
+ 
+     It has been auto-edited by fixincludes from:
+ 
+ 	"fixinc/tests/inc/os/base.h"
+ 
+     This had to be done to correct non-standard usages in the
+     original, manufacturer supplied header file.  */
+ 
+ 
+ 
+ #if defined( DARWIN_OS_BASE_1_CHECK )
+ #define __has_attribute(x) 0
+ #endif
+ #ifndef __has_extension
+ #define __has_extension(x) 0
+ #endif
+ 
+ #if __GNUC__
+ #endif  /* DARWIN_OS_BASE_1_CHECK */
diff -Nrcpad gcc-8.3.0/gcc/BASE-VER gcc-8.4.0/gcc/BASE-VER
*** gcc-8.3.0/gcc/BASE-VER	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/BASE-VER	Wed Mar  4 08:30:30 2020
***************
*** 1 ****
! 8.3.0
--- 1 ----
! 8.4.0
diff -Nrcpad gcc-8.3.0/gcc/ChangeLog gcc-8.4.0/gcc/ChangeLog
*** gcc-8.3.0/gcc/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,3126 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2020-03-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2020-02-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/93965
+ 	* configure.ac: Improve detection of ld_date by requiring
+ 	either two dashes or none.
+ 	* configure: Regenerate.
+ 
+ 2020-02-29  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Revert
+ 	2020-02-20  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/93658
+ 	* config/rs6000/rs6000.c (rs6000_legitimate_address_p): Handle VSX
+ 	vector modes.
+ 
+ 	2020-02-03  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (get_vector_offset): New helper function
+ 	to calculate the offset in memory from the start of a vector of a
+ 	particular element.  Add code to keep the element number in
+ 	bounds if the element number is variable.
+ 	(rs6000_adjust_vec_address): Move calculation of offset of the
+ 	vector element to get_vector_offset.
+ 	(rs6000_split_vec_extract_var): Do not do the initial AND of
+ 	element here, move the code to get_vector_offset.
+ 
+ 	2020-02-05  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/93568
+ 	* config/rs6000/rs6000.c (get_vector_offset): Fix Q constraint assert
+ 	to use MEM.
+ 
+ 	2020-01-06  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator):
+ 	Use 'Q' for doing vector extract from memory.
+ 	(vsx_extract_v4sf_var): Use 'Q' for doing vector extract from
+ 	memory.
+ 	(vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Use 'Q' for
+ 	doing vector extract from memory.
+ 	(vsx_extract_<mode>_<VS_scalar>mode_var): Use 'Q' for doing vector
+ 	extract from memory.
+ 
+ 2020-02-26  Carl Love  <cel@us.ibm.com>
+ 
+ 	PR target/91276
+ 	* doc/extend.texi (PowerPC AltiVec Built-in Functions): The
+ 	builtin-function name __builtin_crypto_vpmsumb is only for the
+ 	vector unsigned short arguments.  It is also listed as the name of
+ 	the built-in for arguments vector unsigned short,
+ 	vector unsigned int and vector unsigned long long built-ins.  The
+ 	name of the builtins for these arguments should be:
+ 	__builtin_crypto_vpmsumh, __builtin_crypto_vpmsumw and
+ 	__builtin_crypto_vpmsumd respectively.
+ 
+ 2020-02-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/93820
+ 	* gimple-ssa-store-merging.c (check_no_overlap): Change RHS_CODE
+ 	argument to ALL_INTEGER_CST_P boolean.
+ 	(imm_store_chain_info::try_coalesce_bswap): Adjust caller.
+ 	(imm_store_chain_info::coalesce_immediate_stores): Likewise.  Handle
+ 	adjacent INTEGER_CST store into merged_store->only_constants like
+ 	overlapping one.
+ 
+ 2020-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/93908
+ 	* combine.c (find_split_point): For store into ZERO_EXTRACT, and src
+ 	with mask.
+ 
+ 2019-02-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* dwarf2out.c (dwarf2out_size_function): Run in early-DWARF mode.
+ 
+ 2020-02-25  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	Backport from master
+ 	2020-02-24  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	* doc/install.texi (--enable-checking): Properly document current
+ 	behavior.
+ 	(--enable-stage1-checking): Minor clarification about bootstrap.
+ 
+ 2020-02-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backport from mainline
+ 	2020-02-19  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/93767
+ 	* tree-vect-data-refs.c (vect_compile_time_alias): Remove the
+ 	access-size bias from the offset calculations for negative strides.
+ 
+ 2020-02-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backport from mainline
+ 	2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/93434
+ 	* tree-predcom.c (split_data_refs_to_components): Record which
+ 	components have had aliasing loads removed.  Prevent store-store
+ 	commoning for all such components.
+ 
+ 2020-02-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-12-05  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/92768
+ 	* tree-core.h (OEP_BITWISE): New flag.
+ 	* fold-const.c (operand_compare::operand_equal_p): Handle it.
+ 	* tree-vector-builder.h (tree_vector_builder::equal_p): Pass it.
+ 
+ 2020-02-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-11-11  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/92420
+ 	* tree-vect-stmts.c (get_negative_load_store_type): Move further
+ 	up file.
+ 	(get_group_load_store_type): Use it for reversed SLP accesses.
+ 
+ 2020-02-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-08-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/90313
+ 	* tree-tailcall.c (find_tail_calls): Reject calls that might
+ 	read from an escaped RESULT_DECL.
+ 
+ 2020-02-24  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/92003
+ 	* symtab.c (symtab_node::nonzero_address): A DECL_COMDAT decl has
+ 	non-zero address even if weak and not yet defined.
+ 
+ 2020-02-23  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backport from master
+ 	2020-02-20  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/93658
+ 	* config/rs6000/rs6000.c (rs6000_legitimate_address_p): Handle VSX
+ 	vector modes.
+ 
+ 2020-02-23  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backport from master
+ 	2020-02-03  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (get_vector_offset): New helper function
+ 	to calculate the offset in memory from the start of a vector of a
+ 	particular element.  Add code to keep the element number in
+ 	bounds if the element number is variable.
+ 	(rs6000_adjust_vec_address): Move calculation of offset of the
+ 	vector element to get_vector_offset.
+ 	(rs6000_split_vec_extract_var): Do not do the initial AND of
+ 	element here, move the code to get_vector_offset.
+ 
+ 	Backport from master
+ 	2020-02-05  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/93568
+ 	* config/rs6000/rs6000.c (get_vector_offset): Fix Q constraint assert
+ 	to use MEM.
+ 
+ 2020-02-23  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backport from master
+ 	2020-01-06  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator):
+ 	Use 'Q' for doing vector extract from memory.
+ 	(vsx_extract_v4sf_var): Use 'Q' for doing vector extract from
+ 	memory.
+ 	(vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Use 'Q' for
+ 	doing vector extract from memory.
+ 	(vsx_extract_<mode>_<VS_scalar>mode_var): Use 'Q' for doing vector
+ 	extract from memory.
+ 
+ 2020-02-21  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* gcc/config/pa/pa.c (pa_function_value): Fix check for word and
+ 	double-word size when handling aggregate return values.
+ 	* gcc/config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Fix to indicate
+ 	that homogeneous SFmode and DFmode aggregates are passed and returned
+ 	in general registers.
+ 
+ 2020-02-20  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/93828
+ 	* config/i386/mmx.md (*vec_extractv2sf_1): Match source operand
+ 	to destination operand for shufps alternative.
+ 	(*vec_extractv2si_1): Ditto.
+ 
+ 2020-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* collect2.c (tool_cleanup): Avoid calling not signal-safe
+ 	functions.
+ 	(maybe_run_lto_and_relink): Avoid possible signal handler
+ 	access to unintialzed memory (lto_o_files).
+ 
+ 2020-02-20  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from master
+ 	2020-02-13  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/93656
+ 	* config/i386/i386.c (ix86_trampoline_init): Skip ENDBR32 at
+ 	the target function entry.
+ 
+ 2020-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2020-01-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93381
+ 	* tree-ssa-structalias.c (find_func_aliases): Assume offsetting
+ 	throughout, handle all conversions the same.
+ 
+ 2020-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2020-01-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93439
+ 	* tree-parloops.c (create_loop_fn): Move clique bookkeeping...
+ 	* tree-cfg.c (move_sese_region_to_fn): ... here.
+ 	(verify_types_in_gimple_reference): Verify used cliques are
+ 	tracked.
+ 
+ 2020-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2020-01-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/93054
+ 	* gimplify.c (gimplify_expr): Deal with NOP definitions.
+ 
+ 2020-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2020-01-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/92763
+ 	* dwarf2out.c (prune_unused_types): Unconditionally mark
+ 	called function DIEs.
+ 
+ 2020-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-11-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/92704
+ 	* tree-if-conv.c (combine_blocks): Deal with virtual PHIs
+ 	in loops performing only loads.
+ 
+ 2020-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-11-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/92674
+ 	* tree-inline.c (expand_call_inline): Delay purging EH/abnormal
+ 	edges and instead record blocks in bitmap.
+ 	(gimple_expand_calls_inline): Adjust.
+ 	(fold_marked_statements): Delay EH cleanup until all folding is
+ 	done.
+ 	(optimize_inline_calls): Do EH/abnormal cleanup for calls after
+ 	inlining finished.
+ 
+ 2020-02-14 Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	PR target/93724
+ 	* config/i386/avx512vbmi2intrin.h
+ 	(_mm512_shrdi_epi16, _mm512_mask_shrdi_epi16,
+ 	_mm512_maskz_shrdi_epi16, _mm512_shrdi_epi32,
+ 	_mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32,
+ 	_m512_shrdi_epi64, _m512_mask_shrdi_epi64,
+ 	_m512_maskz_shrdi_epi64, _mm512_shldi_epi16,
+ 	_mm512_mask_shldi_epi16, _mm512_maskz_shldi_epi16,
+ 	_mm512_shldi_epi32, _mm512_mask_shldi_epi32,
+ 	_mm512_maskz_shldi_epi32, _mm512_shldi_epi64,
+ 	_mm512_mask_shldi_epi64, _mm512_maskz_shldi_epi64): Fix typo
+ 	of lacking a closing parenthesis.
+ 	* config/i386/avx512vbmi2vlintrin.h
+ 	(_mm256_shrdi_epi16, _mm256_mask_shrdi_epi16,
+ 	_mm256_maskz_shrdi_epi16, _mm256_shrdi_epi32,
+ 	_mm256_mask_shrdi_epi32, _mm256_maskz_shrdi_epi32,
+ 	_m256_shrdi_epi64, _m256_mask_shrdi_epi64,
+ 	_m256_maskz_shrdi_epi64, _mm256_shldi_epi16,
+ 	_mm256_mask_shldi_epi16, _mm256_maskz_shldi_epi16,
+ 	_mm256_shldi_epi32, _mm256_mask_shldi_epi32,
+ 	_mm256_maskz_shldi_epi32, _mm256_shldi_epi64,
+ 	_mm256_mask_shldi_epi64, _mm256_maskz_shldi_epi64,
+ 	_mm_shrdi_epi16, _mm_mask_shrdi_epi16,
+ 	_mm_maskz_shrdi_epi16, _mm_shrdi_epi32,
+ 	_mm_mask_shrdi_epi32, _mm_maskz_shrdi_epi32,
+ 	_mm_shrdi_epi64, _mm_mask_shrdi_epi64,
+ 	_m_maskz_shrdi_epi64, _mm_shldi_epi16,
+ 	_mm_mask_shldi_epi16, _mm_maskz_shldi_epi16,
+ 	_mm_shldi_epi32, _mm_mask_shldi_epi32,
+ 	_mm_maskz_shldi_epi32, _mm_shldi_epi64,
+ 	_mm_mask_shldi_epi64, _mm_maskz_shldi_epi64): Ditto.
+ 
+ 2020-02-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/93744
+ 	* match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0): For
+ 	GENERIC, make sure @2 in the first and @1 in the other patterns has no
+ 	side-effects.
+ 
+ 2020-02-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/93704
+ 	* config/sparc/sparc.c (eligible_for_call_delay): Test HAVE_GNU_LD in
+ 	conjunction with TARGET_GNU_TLS in early return.
+ 
+ 2020-02-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2020-02-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93696
+ 	* config/i386/avx512bitalgintrin.h (_mm512_mask_popcnt_epi8,
+ 	_mm512_mask_popcnt_epi16, _mm256_mask_popcnt_epi8,
+ 	_mm256_mask_popcnt_epi16, _mm_mask_popcnt_epi8,
+ 	_mm_mask_popcnt_epi16): Rename __B argument to __A and __A to __W,
+ 	pass __A to the builtin followed by __W instead of __A followed by
+ 	__B.
+ 	* config/i386/avx512vpopcntdqintrin.h (_mm512_mask_popcnt_epi32,
+ 	_mm512_mask_popcnt_epi64): Likewise.
+ 	* config/i386/avx512vpopcntdqvlintrin.h (_mm_mask_popcnt_epi32,
+ 	_mm256_mask_popcnt_epi32, _mm_mask_popcnt_epi64,
+ 	_mm256_mask_popcnt_epi64): Likewise.
+ 
+ 	PR target/93673
+ 	* config/i386/sse.md (k<code><mode>): Drop mode from last operand and
+ 	use const_0_to_255_operand predicate instead of immediate_operand.
+ 	(avx512dq_fpclass<mode><mask_scalar_merge_name>,
+ 	avx512dq_vmfpclass<mode><mask_scalar_merge_name>,
+ 	vgf2p8affineinvqb_<mode><mask_name>,
+ 	vgf2p8affineqb_<mode><mask_name>): Drop mode from
+ 	const_0_to_255_operand predicated operands.
+ 
+ 	2020-02-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93670
+ 	* config/i386/sse.md (VI48F_256_DQ): New mode iterator.
+ 	(avx512vl_vextractf128<mode>): Use it instead of VI48F_256.  Remove
+ 	TARGET_AVX512DQ from condition.
+ 	(vec_extract_lo_<mode><mask_name>): Use <mask_avx512dq_condition>
+ 	instead of <mask_mode512bit_condition> in condition.  If
+ 	TARGET_AVX512DQ is false, emit vextract*64x4 instead of
+ 	vextract*32x8.
+ 	(vec_extract_lo_<mode><mask_name>): Drop <mask_avx512dq_condition>
+ 	from condition.
+ 
+ 	2020-02-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93637
+ 	* config/i386/sse.md (VI_256_AVX2): New mode iterator.
+ 	(vcond_mask_<mode><sseintvecmodelower>): Use it instead of VI_256.
+ 	Change condition from TARGET_AVX2 to TARGET_AVX.
+ 
+ 	2020-02-08  Uroš Bizjak  <ubizjak@gmail.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/65782
+ 	* config/i386/i386.h (CALL_USED_REGISTERS): Make
+ 	xmm16-xmm31 call-used even in 64-bit ms-abi.
+ 
+ 	2020-02-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libgomp/93515
+ 	* omp-low.c (use_pointer_for_field): For nested constructs, also
+ 	look for map clauses on target construct.
+ 	(scan_omp_1_stmt) <case GIMPLE_OMP_TARGET>: Bump temporarily
+ 	taskreg_nesting_level.
+ 
+ 	2020-02-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/93555
+ 	* omp-simd-clone.c (expand_simd_clones): If simd_clone_mangle or
+ 	simd_clone_create failed when i == 0, adjust clone->nargs by
+ 	clone->inbranch.
+ 
+ 	2020-01-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/93505
+ 	* combine.c (simplify_comparison) <case ROTATE>: Punt on out of range
+ 	rotate counts.
+ 
+ 	2020-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/93402
+ 	* postreload.c (reload_combine_recognize_pattern): Don't try to adjust
+ 	USE insns.
+ 
+ 	2020-01-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/91298
+ 	* output.h (assemble_name_resolve): Declare.
+ 	* varasm.c (assemble_name_resolve): New function.
+ 	(assemble_name): Use it.
+ 	* config/i386/i386.h (ASM_OUTPUT_SYMBOL_REF): Define.
+ 
+ 	2020-01-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93333
+ 	* config/riscv/riscv.c (riscv_rtx_costs) <case ZERO_EXTRACT>: Verify
+ 	the last two operands are CONST_INT_P before using them as such.
+ 
+ 	PR target/93073
+ 	* config/rs6000/rs6000.c (rs6000_emit_cmove): If using fsel, punt for
+ 	compare_mode other than SFmode or DFmode.
+ 
+ 	2020-01-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/93202
+ 	* config/riscv/riscv.c (riscv_print_operand_reloc): Use
+ 	output_operand_lossage instead of gcc_unreachable.
+ 	* doc/md.texi (riscv f constraint): Fix typo.
+ 
+ 	2020-01-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/93088
+ 	* loop-iv.c (find_single_def_src): Punt after looking through
+ 	128 reg copies for regs with single definitions.  Move definitions
+ 	to first uses.
+ 
+ 	2020-01-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/93087
+ 	* predict.c (compute_function_frequency): Don't call
+ 	warn_function_cold on functions that already have cold attribute.
+ 
+ 	2019-12-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/92357
+ 	* ipa-fnsummary.c (ipa_fn_summary_write): Use
+ 	lto_symtab_encoder_iterator with lsei_start_function_in_partition and
+ 	lsei_next_function_in_partition instead of walking all cgraph nodes
+ 	in encoder.
+ 
+ 	PR tree-optimization/92930
+ 	* ipa-pure-const.c (special_builtin_state): Don't handle
+ 	BUILT_IN_APPLY.
+ 
+ 	2019-12-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/92904
+ 	* config/i386/i386.c (ix86_gimplify_va_arg): If need_intregs and
+ 	not need_temp, decrease alignment of the read because the GPR save
+ 	area only guarantees 8-byte alignment.
+ 
+ 	2019-12-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/92723
+ 	* tree-vect-patterns.c (vect_recog_rotate_pattern): If dt is not
+ 	vect_internal_def, use oprnd1 as is, without trying to cast it.
+ 	Formatting fix.
+ 
+ 	2019-11-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/92664
+ 	* dwarf2out.c (lookup_filename): Use "<stdin>" instead of "".
+ 
+ 	2019-11-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/92615
+ 	* config/i386/i386.c (ix86_md_asm_adjust): If dest_mode is
+ 	GET_MODE (dest), is not QImode, using ZERO_EXTEND and dest is not
+ 	register_operand, force x into register before storing it into dest.
+ 	Formatting fix.
+ 
+ 2020-02-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	PR middle-end/93246
+ 	* alias.c (record_component_aliases): Take superset to record
+ 	into, recurse for alias-set zero fields.
+ 	(record_component_aliases): New oveerload wrapping around the above.
+ 
+ 2020-02-11  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backport from mainline
+ 	2020-01-31  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR rtl-optimization/91838
+ 	* simplify-rtx.c (simplify_binary_operation_1): Update LSHIFTRT case
+ 	to truncate if allowed or reject combination.
+ 
+ 2020-01-27  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR target/92692
+ 	* config/aarch64/aarch64.c (aarch64_split_compare_and_swap)
+ 	Add assert to ensure prolog has been emitted.
+ 	(aarch64_split_atomic_op): Likewise.
+ 	* config/aarch64/atomics.md (aarch64_compare_and_swap<mode>)
+ 	Use epilogue_completed rather than reload_completed.
+ 	(aarch64_atomic_exchange<mode>): Likewise.
+ 	(aarch64_atomic_<atomic_optab><mode>): Likewise.
+ 	(atomic_nand<mode>): Likewise.
+ 	(aarch64_atomic_fetch_<atomic_optab><mode>): Likewise.
+ 	(atomic_fetch_nand<mode>): Likewise.
+ 	(aarch64_atomic_<atomic_optab>_fetch<mode>): Likewise.
+ 	(atomic_nand_fetch<mode>): Likewise.
+ 
+ 2020-01-19  Eric S. Raymond <esr@thyrsus.com>
+ 	    Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	Backport from mainline:
+ 
+ 	2020-01-19  Eric S. Raymond <esr@thyrsus.com>
+ 
+ 	* doc/contribute.texi: Update for SVN -> Git transition.
+ 	* doc/install.texi: Likewise.
+ 
+ 2020-01-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-04-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/89358
+ 	* ipa-devirt.c (skip_in_fields_list_p): New.
+ 	(odr_types_equivalent_p): Use it.
+ 
+ 2020-01-10  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-12-17  Martin Jambor  <mjambor@suse.cz>
+ 
+         PR ipa/92971
+         * ipa-cp.c (cgraph_edge_brings_all_agg_vals_for_node): Fix
+           definition of values, release memory on exit.
+ 
+ 2020-01-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-12-12  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-prop.c (read_ipcp_transformation_info): Fix undefined ordering
+ 	of execution of function call parameters.
+ 
+ 2020-01-08  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backport from 2020-01-08 trunk r279995.
+ 
+ 	Add -nodevicespecs option for avr.
+ 
+ 	PR target/93182
+ 	* config/avr/avr.opt (-nodevicespecs): New driver option.
+ 	* config/avr/driver-avr.c (avr_devicespecs_file): Only issue
+ 	"-specs=device-specs/..." if that option is not set.
+ 	* doc/invoke.texi (AVR Options) <-nodevicespecs>: Document.
+ 
+ 2020-01-06  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.md: Revert change to use ordered_comparison_operator
+ 	instead of cmpib_comparison_operator in cmpib patterns.
+ 	* config/pa/predicates.md (cmpib_comparison_operator): Revert removal
+ 	of cmpib_comparison_operator.  Revise comment.
+ 
+ 2020-01-01  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR target/93111
+ 	* config/pa/pa.md (scc): Use ordered_comparison_operator instead of
+ 	comparison_operator in B and S integer comparisons.  Likewise, use
+ 	ordered_comparison_operator instead of cmpib_comparison_operator in
+ 	cmpib patterns.
+ 	* config/pa/predicates.md (cmpib_comparison_operator): Remove.
+ 
+ 2019-12-28  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-12-14 Iain Sandoe <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.h (DARWIN_EXTRA_SPECS): Add new
+ 	bundle spec. (DARWIN_BUNDLE1_SPEC): New.
+ 	(STARTFILE_SPEC): Use darwin bundle spec.
+ 	* config/rs6000/darwin.h (DARWIN_BUNDLE1_SPEC): New.
+ 	(DARWIN_DYLIB1_SPEC): Delete duplicate.
+ 
+ 2019-12-20  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	Backport from mainline
+ 	2019-12-13  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	PR rtl-optimization/92591
+ 	* modulo-sched.c (ps_add_node_check_conflicts): Improve checking
+ 	for history > 0 case.
+ 	* params.def (sms-dfa-history): Limit to 16.
+ 
+ 2019-12-19  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backport support for some AVR devices from avrxmega3 family
+ 	from SVN trunk r279309, r278387, r278389, r278478.
+ 
+ 	PR target/92545
+ 	* config/avr/avr-arch.h (avr_mcu_t) <flash_pm_offset>: New field.
+ 	* config/avr/avr-devices.c (avr_mcu_types): Adjust initializers.
+ 	* config/avr/avr-mcus.def (AVR_MCU): Add respective field.
+ 	* config/avr/gen-avr-mmcu-specs.c (print_mcu)
+ 	<*cpp, *cpp_mcu, *cpp_avrlibc, *link_pm_base_address>: Emit code
+ 	for spec definitions.
+ 	* config/avr/gen-avr-mmcu-texi.c: Rewrite.
+ 	* doc/avr-mmcu.texi: Regenerate.
+ 
+ 2019-12-17  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-12-16  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR target/92950
+ 	* config/s390/vector.md ("mov<mode>" for V_8): Replace lh, lhy,
+ 	and lhrl with llc.
+ 
+ 2019-12-02  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (ares): Define.
+ 	(cortex-a76): Likewise.
+ 	(neoverse-n1): Likewise.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/invoke.texi (AArch64 Options): Document ares, cortex-a75 and
+ 	neoverse-n1.
+ 
+ 2019-11-29  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR driver/89014
+ 	* config/aarch64/driver-aarch64.c (host_detect_local_cpu): Fix
+ 	use-after-free of the result of
+ 	aarch64_get_extension_string_for_isa_flags.
+ 
+ 2019-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/91355
+ 	* tree-ssa-sink.c (select_best_block): Use >= rather than >
+ 	for early_bb scaled count with best_bb count comparison.
+ 
+ 	Backported from mainline
+ 	2019-11-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/90840
+ 	* expmed.c (store_bit_field_1): Handle the case where op0 is not a MEM
+ 	and has a mode that doesn't have corresponding integral type.
+ 
+ 	PR target/90867
+ 	* config/i386/i386.c (ix86_valid_target_attribute_tree): Don't
+ 	clear opts->x_ix86_isa_flags{,2} here...
+ 	(ix86_valid_target_attribute_inner_p): ... but here when seeing
+ 	arch=.  Also clear opts->x_ix86_isa_flags{,2}_explicit.
+ 
+ 	PR c/90898
+ 	* tree-ssa-ccp.c (insert_clobber_before_stack_restore): Remove
+ 	assertion.
+ 	(insert_clobbers_for_var): Fix a typo in function comment.
+ 
+ 	2019-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/91450
+ 	* internal-fn.c (expand_mul_overflow): For s1 * s2 -> ur, if one
+ 	operand is negative and one non-negative, compare the non-negative
+ 	one against 0 rather than comparing s1 & s2 against 0.  Otherwise,
+ 	don't compare (s1 & s2) == 0, but compare separately both s1 == 0
+ 	and s2 == 0, unless one of them is known to be negative.  Remove
+ 	tem2 variable, use tem where tem2 has been used before.
+ 
+ 	2019-11-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/92384
+ 	* function.c (assign_parm_setup_block, assign_parm_setup_stack): Don't
+ 	copy TYPE_EMPTY_P arguments from data->entry_parm to data->stack_parm
+ 	slot.
+ 	(assign_parms): For TREE_ADDRESSABLE parms with TYPE_EMPTY_P type
+ 	force creation of a unique data.stack_parm slot.
+ 
+ 	2019-10-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/92056
+ 	* tree-object-size.c (cond_expr_object_size): Return early if then_
+ 	processing resulted in unknown size.
+ 
+ 	2019-09-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/91665
+ 	* tree-vect-loop.c (vectorizable_reduction): Punt if base has type
+ 	incompatible with the type of PHI result.
+ 
+ 	2019-09-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* function.c (assign_parm_find_data_types): Use RECORD_OR_UNION_TYPE_P
+ 	before testing TYPE_TRANSPARENT_AGGR.
+ 	* calls.c (initialize_argument_information, load_register_parameters):
+ 	Likewise.
+ 
+ 	2019-09-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/91001
+ 	PR middle-end/91105
+ 	PR middle-end/91106
+ 	* calls.c (load_register_parameters): For TYPE_TRANSPARENT_AGGR
+ 	types, use type of their first field instead of type of
+ 	args[i].tree_value.
+ 
+ 	2019-09-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/91623
+ 	* optabs.c (expand_vec_cond_expr): If op0 is a VECTOR_CST and only
+ 	EQ_EXPR/NE_EXPR is supported, verify that op0 only contains
+ 	zeros or negative elements and use NE_EXPR instead of LT_EXPR against
+ 	zero vector.
+ 
+ 2019-11-20  Peter Bergner <bergner@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-11-07  Peter Bergner <bergner@linux.ibm.com>
+ 
+ 	PR other/92090
+ 	* config/rs6000/predicates.md (input_operand): Allow MODE_PARTIAL_INT
+ 	modes for integer constants.
+ 
+ 2019-11-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/invoke.texi (-gno-internal-reset-location-views): Fix typo.
+ 
+ 2019-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/92389
+ 	* config/i386/i386.h: Add PTA_AVX512VPOPCNTDQ to
+ 	PTA_ICELAKE_CLIENT which is later interited by
+ 	PTA_ICELAKE_SERVER and PTA_TIGERLAKE.
+ 
+ 2019-11-13  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+ 
+ 	Backport from mainline
+ 	* config/mips/mips.md (rotr<mode>3): Sanitize the constant argument
+ 	instead of asserting its value.
+ 
+ 2019-11-11  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backport from trunk:
+ 	PR target/87833
+ 	* config/i386/intelmic-mkoffload.c (prepare_target_image): Put
+ 	-fPIC and -shared the last to create offload image.
+ 
+ 2019-11-11  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	Backport from trunk:
+ 	* gimplify.c (gimplify_scan_omp_clauses): Assert 'offset2' instead
+ 	of 'offset'.
+ 
+ 	Backport from trunk:
+ 	* Makefile.in (LANG_CONFIGUREFRAGS): Define.
+ 	(config.status): Use/depend on it.
+ 	* configure.ac (all_lang_configurefrags): Track, 'AC_SUBST'.
+ 	* configure: Regenerate.
+ 
+ 2019-11-09  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2019-11-07  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.md (memory_barrier): Revise to use ldcw barriers.
+ 	Enhance comment.
+ 	(memory_barrier_coherent, memory_barrier_64, memory_barrier_32): New
+ 	insn patterns using ldcw instruction.
+ 	(memory_barrier): Remove insn pattern using sync instruction.
+ 	* config/pa/pa.opt (coherent-ldcw): New option.
+ 	(ordered): New option.
+ 
+ 2019-11-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/92095
+ 	* config/sparc/sparc-protos.h (output_load_pcrel_sym): Declare.
+ 	* config/sparc/sparc.c (sparc_cannot_force_const_mem): Revert latest
+  	change.
+ 	(got_helper_needed): New static variable.
+ 	(output_load_pcrel_sym): New function.
+ 	(get_pc_thunk_name): Remove after inlining...
+ 	(load_got_register): ...here.  Rework the initialization of the GOT
+ 	register and of the GOT helper.
+ 	(save_local_or_in_reg_p): Test the REGNO of the GOT register.
+ 	(sparc_file_end): Test got_helper_needed to decide whether the GOT
+ 	helper must be emitted.  Use output_asm_insn instead of fprintf.
+ 	(sparc_init_pic_reg): In PIC mode, always initialize the PIC register
+ 	if optimization is enabled.
+ 	* config/sparc/sparc.md (load_pcrel_sym<P:mode>): Emit the assembly
+ 	by calling output_load_pcrel_sym.
+ 
+ 2019-11-06  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2018-09-19  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR rtl-optimization/85458
+ 	* config/pa/pa.c (pa_adjust_priority): Delete.
+ 	(TARGET_SCHED_ADJUST_PRIORITY): Delete define.
+ 
+ 2019-11-05  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from trunk
+ 	2019-10-24  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/altivec.md (altivec_vavgu<VI_char>): Rename to...
+ 	(uavg<mode>3_ceil): ... This.
+ 	(altivec_vavgs<VI_char>): Rename to...
+ 	(avg<mode>3_ceil): ... This.
+ 	* config/rs6000/rs6000-builtin.def (VAVGUB, VAVGSB, VAVGUH, VAVGSH,
+ 	VAVGUW, VAVGSW): Adjust.
+ 
+ 2019-11-05  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from trunk
+ 	2019-10-26  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/91289
+ 	* config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Don't add an
+ 	immediate to r0; use r11 instead.  Save and restore r11 to r0 around
+ 	this.
+ 
+ 2019-11-04  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2019-10-03  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.h (MAX_PCREL17F_OFFSET): Adjust.
+ 
+ 2019-11-04  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2019-10-03  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.c (pa_output_call): Remove 64-bit sibcall sequence.
+ 	(pa_attr_length_call): Adjust length for 64-bit plabel sequence.
+ 
+ 2019-11-04 John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2019-10-12  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.c (pa_output_call): Load descriptor address to register
+ 	%r22.  Load function address before global pointer.
+ 	(pa_attr_length_indirect_call): Adjust length of inline versions of
+ 	$$dyncall.
+ 	(pa_output_indirect_call): Remove fast inline version of $$dyncall
+ 	before normal cases.  Update inline $$dyncall sequences to preserve
+ 	function descriptor address in register %r22.
+ 	(TRAMPOLINE_CODE_SIZE): Adjust.
+ 	(pa_asm_trampoline_template): Revise 32-bit trampoline.  Don't assume
+ 	register %r22 contains trampoline address.
+ 	(pa_trampoline_init): Adjust offsets.
+ 	(pa_trampoline_adjust_address): Likewise.
+ 	* config/pa/pa.h (TRAMPOLINE_SIZE): Adjust 32-bit size.
+ 
+ 	2019-10-17  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.c (pa_output_indirect_call): Fix typos in last change.
+ 
+ 2019-11-1  Delia Burduv  <Delia.Burduv@arm.com>
+ 
+          Backport from trunk
+          2019-02-20  Andre Vieira <andre.simoesdiasvieira@arm.com>
+ 
+          PR target/86487
+          * lra-constraints.c(uses_hard_regs_p): Fix handling of
+          paradoxical SUBREGS.
+ 
+ 2019-10-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-10-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (machopic_indirection_name): Rework the
+ 	function to emit linker-visible symbols only for indirections
+ 	in the data section.  Clean up the code and update comments.
+ 
+ 2019-10-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-10-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (darwin_override_options): Make the check for
+ 	Objective-C ABI version more specific for 64bit code.
+ 
+ 	Backport from mainline
+ 	2019-10-06  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (darwin_override_options): Adjust objective-c
+ 	ABI version error messages to avoid punctuation and contracted
+ 	negations.
+ 
+ 2019-10-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-07-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.h (REAL_LIBGCC_SPEC): Adjust for earlier Darwin.
+ 	(STARTFILE_SPEC): Split crt3 into a separate spec.
+ 	(DARWIN_EXTRA_SPECS): Add crt2 and crt3 spec.
+ 	(DARWIN_CRT2_SPEC): New.
+ 	(DARWIN_CRT3_SPEC): New.
+ 	(MIN_LD64_OMIT_STUBS): Revise to 62.1.
+ 	* config/rs6000/darwin.h (DARWIN_CRT2_SPEC): Revise conditions.
+ 	(DARWIN_CRT3_SPEC): New.
+ 
+ 2019-10-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-06-27  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/rs6000/darwin.h (ENDFILE_SPEC): Correct whitespace in the
+ 	spec.
+ 
+ 	Backport from mainline
+ 	2019-06-25  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/rs6000/darwin.h (ENDFILE_SPEC): New.
+ 
+ 2019-10-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-06-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (darwin_emit_unwind_label): New default to false.
+ 	(darwin_override_options): Set darwin_emit_unwind_label as needed.
+ 
+ 2019-10-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-08-13 Iain Sandoe <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (machopic_indirect_call_target): Rename symbol stub
+ 	flag.
+ 	(darwin_override_options): Likewise.
+ 	* config/darwin.h: Likewise.
+ 	* config/darwin.opt: Likewise.
+ 	* config/i386/i386.c (output_pic_addr_const): Likewise.
+ 	* config/rs6000/darwin.h: Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_call_darwin_1): Likewise.
+ 	* config/i386/darwin.h (TARGET_MACHO_PICSYM_STUBS): Rename to ...
+ 	... this TARGET_MACHO_SYMBOL_STUBS.
+ 	(FUNCTION_PROFILER):Likewise.
+ 	* config/i386/i386.h: Likewise.
+ 
+ 	Backport from mainline
+ 	2019-06-16  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (machopic_indirect_call_target): Use renamed
+ 	darwin_picsymbol_stubs to decide on output.
+ 	(darwin_override_options): Handle darwin_picsymbol_stubs.
+ 	* config/darwin.h (MIN_LD64_OMIT_STUBS): New.
+ 	(LD64_VERSION): Revise default.
+ 	* config/darwin.opt: (mpic-symbol-stubs): New option.
+ 	(darwin_picsymbol_stubs): New variable.
+ 	* config/i386/darwin.h (TARGET_MACHO_BRANCH_ISLANDS):
+ 	rename to TARGET_MACHO_PICSYM_STUBS.
+ 	* config/i386/i386.c (output_pic_addr_const): Likewise.
+ 	* config/i386/i386.h Likewise.
+ 	* config/rs6000/darwin.h: Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_call_darwin_1): Use renamed
+ 	darwin_picsymbol_stubs.
+ 
+ 2019-10-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-06-27  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/rs6000/rs6000.c (darwin_rs6000_override_options): Honour
+ 	user-specified float mode choice for kernel mode code.
+ 
+ 2019-10-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-06-23  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/rs6000/darwin.h: Handle GCC target pragma.
+ 
+ 2019-10-30  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+ 
+ 	Backport from mainline
+ 	2019-07-09  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+ 
+ 	* cfgcleanup.c (old_insns_match_p): Check if used hard regs set is equal
+ 	for both call instructions.
+ 
+ 2019-10-28  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-10-17  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/65342
+ 	* config/rs6000/darwin.md (movdi_low, movsi_low_st): Delete.
+ 	(movdi_low_st): Delete.
+ 	* config/rs6000/rs6000.c
+ 	(darwin_rs6000_legitimate_lo_sum_const_p): New.
+ 	(mem_operand_gpr): Validate Mach-O LO_SUM cases separately.
+ 	* config/rs6000/rs6000.md (movsi_low): Delete.
+ 
+ 2019-10-28  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-10-12  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/67183
+ 	* config/darwin.c (machopic_indirection): New field to flag
+ 	non-lazy-symbol-pointers in the data section.
+ 	(machopic_indirection_name): Compute if an indirection should
+ 	appear in the data section.
+ 	(machopic_output_data_section_indirection): New callback split
+ 	from machopic_output_indirection.
+ 	(machopic_output_stub_indirection): Likewise.
+ 	(machopic_output_indirection): Retain the code for non-lazy
+ 	symbol pointers in their regular section.
+ 	(machopic_finish): Use the new callbacks to order the indirection
+ 	output.
+ 
+ 2019-10-28  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-10-12  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin-protos.h (machopic_finish): Delete.
+ 	* config/darwin.c (machopic_finish): Make static.
+ 
+ 	Backport from mainline
+ 	2019-10-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (machopic_indirect_data_reference): Set flag to
+ 	indicate that the new symbol is an indirection.
+ 	(machopic_indirect_call_target): Likewise.
+ 	* config/darwin.h (MACHO_SYMBOL_FLAG_INDIRECTION): New.
+ 	(MACHO_SYMBOL_INDIRECTION_P): New.
+ 	(MACHO_SYMBOL_FLAG_STATIC): Adjust bit number.
+ 
+ 	Backport from mainline
+ 	2019-10-08  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (machopic_indirect_data_reference): Check for
+ 	required indirections before making direct access to defined
+ 	values.
+ 	(machopic_output_indirection): Place the indirected pointes for
+ 	required indirections into the non-lazy symbol pointers section.
+ 	(darwin_encode_section_info):
+ 	* config/darwin.h (MACHO_SYMBOL_FLAG_MUST_INDIRECT): New.
+ 	(MACHO_SYMBOL_MUST_INDIRECT_P): New.
+ 
+ 	Backport from mainline
+ 	2019-10-07  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (machopic_output_indirection): Don't put
+ 	hidden symbol indirections into the .data section, use the
+ 	non-lazy symbol pointers section as normal.
+ 	(darwin_encode_section_info): Record if a symbol is hidden.
+ 	* config/darwin.h (MACHO_SYMBOL_FLAG_HIDDEN_VIS): New.
+ 	(MACHO_SYMBOL_HIDDEN_VIS_P): New.
+ 
+ 	Backport from mainline
+ 	2019-10-07  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (machopic_symbol_defined_p): Use symbol flag
+ 	predicates instead of accessing bits directly.
+ 	(machopic_indirect_call_target): Likewise.
+ 	(machopic_output_indirection): Likewise.
+ 	(darwin_encode_section_info): Improve description.  Use renamed
+ 	symbol flags.  Use predicate macros for variables and functions.
+ 	* config/darwin.h:
+ 	Rename MACHO_SYMBOL_VARIABLE to MACHO_SYMBOL_FLAG_VARIABLE.
+ 	Rename MACHO_SYMBOL_DEFINED to MACHO_SYMBOL_FLAG_DEFINED.
+ 	Rename MACHO_SYMBOL_STATIC to MACHO_SYMBOL_FLAG_STATIC.
+ 	(MACHO_SYMBOL_VARIABLE_P): New.
+ 	(MACHO_SYMBOL_DEFINED_P):New.
+ 	(MACHO_SYMBOL_STATIC_P): New.
+ 	* config/i386/darwin.h (MACHO_SYMBOL_FLAG_VARIABLE): Delete.
+ 	(SYMBOL_FLAG_SUBT_DEP): New.
+ 	* config/rs6000/darwin.h (SYMBOL_FLAG_SUBT_DEP): New.
+ 
+ 2019-10-28  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-10-05  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/59888
+ 	* config/darwin.c (darwin_rodata_section): Add relocation flag,
+ 	choose const_data section for constants with relocations.
+ 	(machopic_select_section): Pass relocation flag to
+ 	darwin_rodata_section ().
+ 
+ 2019-10-28  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-09-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (machopic_legitimize_pic_address): Check
+ 	for lra, rather than reload.
+ 
+ 2019-10-28  Peter Bergner <bergner@linux.ibm.com>
+ 	    Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	PR target/70010
+ 	* config/rs6000/rs6000.c (rs6000_can_inline_p): Prohibit inlining if
+ 	the callee explicitly disables some isa_flags the caller is using.
+ 
+ 2019-10-25  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN):Guard
+ 	against out of range max skip or log values.
+ 
+ 2019-10-25  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-05-08  Mihail Ionescu  <mihail.ionescu@arm.com>
+ 	    Richard Earnshaw  <rearnsha@arm.com>
+ 	PR target/88167
+ 	* config/arm/arm.c (thumb1_prologue_unused_call_clobbered_lo_regs): New
+ 	function.
+ 	(thumb1_epilogue_unused_call_clobbered_lo_regs): New function.
+ 	(thumb1_compute_save_core_reg_mask): Don't force a spare work
+ 	register if both the epilogue and prologue can use call-clobbered
+ 	regs.
+ 	(thumb1_unexpanded_epilogue): Use
+ 	thumb1_epilogue_unused_call_clobbered_lo_regs.  Reverse the logic for
+ 	picking temporaries for restoring high regs to match that of the
+ 	prologue where possible.
+ 	(thumb1_expand_prologue): Add any usable call-clobbered low registers to
+ 	the list of work registers.  Detect if the return address is still live
+ 	at the end of the prologue and avoid using it for a work register if so.
+ 	If the return address is not live, add LR to the list of pushable regs
+ 	after the first pass.
+ 
+ 2019-10-23  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-10-08  Tulio Magno Quites Machado Filho  <tuliom@linux.ibm.com>
+ 
+ 	* config.gcc: Move -L usage from LINK_OS_EXTRA_SPEC32 and
+ 	LINK_OS_EXTRA_SPEC64 to MD_STARTFILE_PREFIX and
+ 	MD_STARTFILE_PREFIX_1 when using --with-advance-toolchain.
+ 
+ 2019-10-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-10-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/91887
+ 	* dwarf2out.c (gen_formal_parameter_die): Also try to match
+ 	context_die against a DW_TAG_GNU_formal_parameter_pack parent.
+ 
+ 	2019-09-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/91812
+ 	* tree-ssa-phiprop.c (propagate_with_phi): Do not replace
+ 	volatile loads.
+ 
+ 	2019-09-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/91772
+ 	* dwarf2out.c (dwarf2out_late_global_decl): If early dwarf
+ 	was missing generate locations only once.
+ 
+ 2019-10-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR tree-optimization/92131
+ 	* tree-vrp.c (extract_range_from_plus_minus_expr): If the resulting
+ 	range would be symbolic, drop to varying for any explicit overflow
+ 	in the constant part or if neither range is a singleton.
+ 
+ 2019-10-20  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-10-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/87243
+ 	* config/darwin-driver.c (maybe_get_sysroot_from_sdkroot): New.
+ 	(darwin_driver_init): Use the sysroot provided by SDKROOT when that
+ 	is available and the user has not set one on the command line.
+ 
+ 2019-10-20  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-07-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.h (DRIVER_SELF_SPECS): Remove the linker cases.
+ 	(RDYNAMIC): Rename to, DARWIN_RDYNAMIC.
+ 	(DARWIN_PIE_SPEC, DARWIN_NOPIE_SPEC): Adjust to remove the Xlinker
+ 	clauses.
+ 	(LINK_COMMAND_SPEC_A): Add DARWIN_RDYNAMIC, DARWIN_PIE_SPEC and
+ 	DARWIN_NOPIE_SPEC.
+ 
+ 	Backport from mainline
+ 	2019-06-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.h (DRIVER_SELF_SPECS): Add RDYNAMIC, DARWIN_PIE_SPEC
+ 	and DARWIN_NOPIE_SPEC.
+ 	(RDYNAMIC): New, modified from DARWIN_EXPORT_DYNAMIC.
+ 	(DARWIN_PIE_SPEC): Collate from darwin.h and darwin9.h.
+ 	(DARWIN_NOPIE_SPEC): Collate from darwin10.h.
+ 	(DARWIN_NOCOMPACT_UNWIND): New from darwin10.h
+ 	(DARWIN_EXPORT_DYNAMIC): Delete.
+ 	* config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Move no_compact_unwind
+ 	and pie options processing to  darwin.h.
+ 	* config/darwin9.h (DARWIN_PIE_SPEC): Move pie processing to darwin.h
+ 
+ 2019-10-18  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backport from 2019-10-18 trunk r277143.
+ 
+ 	PR target/86040
+ 	* config/avr/avr.c (avr_out_lpm): Do not shortcut-return.
+ 
+ 2019-10-17  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from trunk
+ 	2019-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/89721
+ 	* lra-constraints (invariant_p): Return false if side_effects_p holds.
+ 
+ 2019-10-17  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-05-03  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/89400
+ 	* config/arm/arm.md (unaligned_loadsi): Add variant for thumb1.
+ 	Restrict 'all' variant to 32-bit configurations.
+ 	(unaligned_loadhiu): Likewise.
+ 	(unaligned_storehi): Likewise.
+ 	(unaligned_storesi): Likewise.
+ 	(unaligned_loadhis): Disable when compiling for thumb1.
+ 
+ 2019-10-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	Backport from trunk
+ 	2019-09-26  Will Schmidt <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtin.def: (LVSL, LVSR, LVEBX, LVEHX,
+ 	LVEWX, LVXL, LVXL_V2DF, LVXL_V2DI, LVXL_V4SF, LVXL_V4SI, LVXL_V8HI,
+ 	LVXL_V16QI, LVX, LVX_V1TI, LVX_V2DF, LVX_V2DI, LVX_V4SF, LVX_V4SI,
+ 	LVX_V8HI, LVX_V16QI, LVLX, LVLXL, LVRX, LVRXL, LXSDX, LXVD2X_V1TI,
+ 	LXVD2X_V2DF, LXVD2X_V2DI, LXVDSX, LXVW4X_V4SF, LXVW4X_V4SI,
+ 	LXVW4X_V8HI, LXVW4X_V16QI, LD_ELEMREV_V1TI, LD_ELEMREV_V2DF,
+ 	LD_ELEMREV_V2DI, LD_ELEMREV_V4SF, LD_ELEMREV_V4SI, LD_ELEMREV_V8HI,
+ 	LD_ELEMREV_V16QI): Use the PURE attribute.
+ 
+ 2019-10-10  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/92022
+ 	* config/alpha/alpha.c (alpha_handle_trap_shadows): Skip DEBUG_INSN.
+ 
+ 2019-10-10  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2019-10-10  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	PR target/88630
+ 	* config/sh/sh.h (TARGET_FPU_SH4_300): New macro.
+ 	* config/sh/sh.c (sh_option_override): Enable fsca and fsrra insns
+ 	also for TARGET_FPU_SH4_300.
+ 	(sh_emit_mode_set): Check for TARGET_FPU_SH4_300 instead of
+ 	TARGET_SH4_300.
+ 	* config/sh/sh.md (toggle_pr): Add TARGET_FPU_SH4_300 condition.
+ 	(negsf2): Expand to either negsf2_fpscr or negsf2_no_fpscr.
+ 	(*negsf2_i): Split into ...
+ 	(negsf2_fpscr, negsf2_no_fpscr): ... these new patterns.
+ 	(abssf2): Expand to either abssf2_fpsc or abssf2_no_fpsc.
+ 	(**abssf2_i): Split into ...
+ 	(abssf2_fpscr, abssf2_no_fpscr): ... these new patterns.
+ 	(negdf2): Expand to either negdf2_fpscr or negdf2_no_fpscr.
+ 	(*negdf2_i): Split into ...
+ 	(negdf2_fpscr, negdf2_no_fpscr): ... these new patterns.
+ 	(absdf2): Expand to either absdf2_fpscr or absdf2_no_fpsc.
+ 	(**abssf2_i): Split into ...
+ 	(absdf2_fpscr, absdf2_no_fpscr): ... these new patterns.
+ 
+ 2019-10-07  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-10-01  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR target/91275
+ 	* config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Don't swap
+ 	vpmsumd.
+ 
+ 2019-10-01  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 
+ 	2019-10-01  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	PR target/88562
+ 	* config/sh/sh.c (sh_extending_set_of_reg::use_as_extended_reg): Use
+ 	sh_check_add_incdec_notes to preserve REG_INC notes when replacing
+ 	a memory access insn.
+ 
+ 2019-10-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-09-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (mov<mode>): Don't call
+ 	aarch64_split_dimode_const_store on volatile MEM.
+ 
+ 2019-10-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/91854
+ 	Backport from mainline
+ 	2019-09-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/91269
+ 	* config/sparc/sparc.h (HARD_REGNO_CALLER_SAVE_MODE): Define.
+ 
+ 2019-09-28  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2019-09-28  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	PR target/80672
+ 	* config/sh/sh.c (parse_validate_atomic_model_option): Use
+ 	std::string::compare instead of std::string::find.
+ 
+ 2019-09-28  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2018-07-15  Jeff Law  <law@redhat.com>
+ 
+ 	PR target/85993
+ 	* config/sh/sh.c (output_mi_thunk): Remove dead conditional
+ 	block.
+ 
+ 2019-09-26  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-06-16  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.opt (prebind, noprebind, seglinkedit,
+ 	noseglinkedit): Add RejectNegative.
+ 
+ 	Backport from mainline
+ 	2019-06-14  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.opt: Add RejectNegative where needed, reorder
+ 	and add minimal functional descriptions.
+ 
+ 2019-09-25  Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-08-22  Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+ 
+ 	* config/arm/arm_acle.h: Use arch=armv8-a+crc+simd pragma for CRC32
+ 	intrinsics if __ARM_FP.
+ 	Use __ARM_FEATURE_CRC32 ifdef guard.
+ 
+ 2019-09-23  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	Backport from mainline
+ 	2019-06-18  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.c (xtensa_expand_prologue): Add stack
+ 	pointer adjustment for the case of no callee-saved registers and
+ 	stack frame bigger than 128 bytes.
+ 
+ 2019-09-20  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.c (pa_trampoline_init): Remove spurious extended
+ 	character.
+ 
+ 2019-09-20  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-06-06  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR rtl-optimization/88751
+ 	* ira.c (ira): Use the number of the actually referenced registers
+ 	when calculating the threshold.
+ 
+ 2019-09-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/89795
+ 	* rtlanal.c (nonzero_bits1) <SUBREG>: Do not propagate results from
+ 	inner REGs to paradoxical SUBREGs if WORD_REGISTER_OPERATIONS is set.
+ 
+ 2019-09-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/87853
+ 	* config/i386/emmintrin.h (_mm_cmpeq_epi8): Use casts to __v16qi
+ 	instead of __v16qs.
+ 
+ 	PR target/91704
+ 	* config/i386/avxintrin.h (__v32qs): New typedef.
+ 	* config/i386/avx2intrin.h (_mm256_cmpgt_epi8): Use casts to __v32qs
+ 	instead of __v32qi.
+ 
+ 2019-09-04  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-08-13  Wilco Dijkstra  <wdijkstr@arm.com>
+ 	 
+ 	PR target/81800
+ 	* gcc/config/aarch64/aarch64.md (lrint): Disable lrint pattern if GPF
+ 	operand is larger than a long int.
+ 
+ 2019-09-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-08-23  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR pch/61250
+ 	* ggc-page.c (ggc_pch_read): Read the ggc_pch_ondisk structure
+ 	and issue any diagnostics needed before collecting the pre-PCH
+ 	state.
+ 
+ 2019-09-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/91472
+ 	* config/sparc/sparc.c (sparc_cannot_force_const_mem): Return true
+ 	during LRA/reload in PIC mode if the PIC register hasn't been used yet.
+ 	(sparc_pic_register_p): Test reload_in_progress for consistency's sake.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-06-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90930
+ 	* tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Set visited
+ 	flag on new stmts to avoid re-processing them.
+ 
+ 	2019-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90637
+ 	* tree-ssa-sink.c (statement_sink_location): Honor the
+ 	computed sink location for single-uses.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-07-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/91108
+ 	* tree-ssa-sccvn.c: Include builtins.h.
+ 	(vn_reference_lookup_3): Use only alignment constraints to
+ 	verify same-valued store disambiguation.
+ 
+ 2019-08-30  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from trunk
+ 	2019-08-22  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/91481
+ 	* config/rs6000/rs6000.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32,
+ 	and UNSPEC_DARN_RAW.
+ 	(unspecv): New enumerator values UNSPECV_DARN, UNSPECV_DARN_32, and
+ 	UNSPECV_DARN_RAW.
+ 	(darn_32): Use an unspec_volatile, and UNSPECV_DARN_32.
+ 	(darn_raw): Use an unspec_volatile, and UNSPECV_DARN_RAW.
+ 	(darn): Use an unspec_volatile, and UNSPECV_DARN.
+ 
+ 2019-08-30  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from trunk
+ 	2019-08-22  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/altivec.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32,
+ 	UNSPEC_DARN_RAW, UNSPEC_CMPRB, UNSPEC_CMPRB2, UNSPEC_CMPEQB; move to...
+ 	* config/rs6000/rs6000.md (unspec): ... here.
+ 	* config/rs6000/altivec.md (darn_32, darn_raw, darn, cmprb,
+ 	*cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal,
+ 	cmpeqb, *cmpeqb_internal): Delete, move to...
+ 	* config/rs6000/rs6000.md (darn_32, darn_raw, darn, cmprb,
+ 	*cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal,
+ 	cmpeqb, *cmpeqb_internal): ... here.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-01-07  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/88567
+ 	* tree-vect-loop.c (get_initial_defs_for_reduction): Pass the
+ 	output vector directly to duplicate_and_interleave instead of
+ 	going through a temporary.  Postpone insertion of ctor_seq to
+ 	the end of the loop.
+ 
+ 	2018-12-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/88315
+ 	* tree-vect-loop.c (get_initial_defs_for_reduction): Simplify
+ 	and fix initialization vector for SAD and DOT_PROD SLP reductions.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-06-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/90900
+ 	* cfgexpand.c (expand_debug_expr): Treat NOTE_P DECL_RTL
+ 	as if optimized away.
+ 
+ 	2019-04-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90278
+ 	* tree-ssa-forwprop.c (pass_forwprop::execute): Transfer/clean
+ 	EH on comparison simplification.
+ 
+ 	2019-04-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/90194
+ 	* match.pd: Add pattern to simplify view-conversion of an
+ 	empty constructor.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-08-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/91375
+ 	* tree.c (free_lang_data_in_type): Do not free TYPE_BINFO dependent on
+ 	flag_devirtualize.
+ 
+ 	2019-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/91293
+ 	* tree-vect-slp.c (vect_build_slp_tree_2): Do not swap operands
+ 	of reduction stmts.
+ 
+ 	2019-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/91280
+ 	* tree-ssa-structalias.c (get_constraint_for_component_ref):
+ 	Decompose MEM_REF manually for offset handling.
+ 
+ 	2019-07-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/91200
+ 	* tree-ssa-phiopt.c (cond_store_replacement): Check we have
+ 	no PHI nodes in middle-bb.
+ 
+ 	2019-07-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/91162
+ 	* tree-cfg.c (move_block_to_fn): When releasing a virtual PHI
+ 	node make sure to replace all uses with something valid.
+ 
+ 	2019-07-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/91131
+ 	* gimplify.c (gimplify_compound_literal_expr): Force a temporary
+ 	when the object is volatile and we have not cleared it even though
+ 	there are no nonzero elements.
+ 
+ 	2019-07-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/91126
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Adjust
+ 	native encoding offset for BYTES_BIG_ENDIAN.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* lto-streamer.h (LTO_minor_version): Bump.
+ 
+ 	Backport from mainline
+ 	2019-05-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90328
+ 	* tree-data-ref.h (dr_may_alias_p): Pass in the actual loop nest.
+ 	* tree-data-ref.c (dr_may_alias_p): Check whether the clique
+ 	is valid in the loop nest before using it.
+ 	(initialize_data_dependence_relation): Adjust.
+ 	* graphite-scop-detection.c (build_alias_set): Pass the SCOP enclosing
+ 	loop as loop-nest to dr_may_alias_p.
+ 
+ 	2019-03-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/89578
+ 	* cfgloop.h (struct loop): Add owned_clique field.
+ 	* cfgloopmanip.c (copy_loop_info): Copy it.
+ 	* tree-cfg.c (gimple_duplicate_bb): Do not remap owned_clique
+ 	cliques.
+ 	* tree-inline.c (copy_loops): Remap owned_clique.
+ 	* lto-streamer-in.c (input_cfg): Stream owned_clique.
+ 	* lto-streamer-out.c (output_cfg): Likewise.
+ 
+ 	2019-02-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/87609
+ 	* tree-cfg.c (gimple_duplicate_bb): Only remap inlined cliques.
+ 
+ 	2019-02-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/87609
+ 	* cfghooks.h (dependence_hash): New typedef.
+ 	(struct copy_bb_data): New type.
+ 	(cfg_hooks::duplicate_block): Adjust to take a copy_bb_data argument.
+ 	(duplicate_block): Likewise.
+ 	* cfghooks.c (duplicate_block): Pass down copy_bb_data.
+ 	(copy_bbs): Create and pass down copy_bb_data.
+ 	* cfgrtl.c (cfg_layout_duplicate_bb): Adjust.
+ 	(rtl_duplicate_bb): Likewise.
+ 	* tree-cfg.c (gimple_duplicate_bb): If the copy_bb_data arg is not NULL
+ 	remap dependence info.
+ 
+ 	2019-02-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/87609
+ 	* tree-core.h (tree_base): Document special clique values.
+ 	* tree-inline.c (remap_dependence_clique): Do not use the
+ 	special clique value of one.
+ 	(maybe_set_dependence_info): Use clique one.
+ 	(clear_dependence_clique): New callback.
+ 	(compute_dependence_clique): Clear clique one from all refs
+ 	before assigning it (again).
+ 
+ 2019-08-30  Bin Cheng  <bin.linux@linux.alibaba.com>
+ 
+ 	Backport from mainline
+ 	2019-07-18  Bin Cheng  <bin.linux@linux.alibaba.com>
+ 
+ 	PR tree-optimization/91137
+ 	* tree-ssa-loop-ivopts.c (struct ivopts_data): New field.
+ 	(tree_ssa_iv_optimize_init, alloc_iv, tree_ssa_iv_optimize_finalize):
+ 	Init, use and fini the above new field.
+ 	(determine_base_object_1): New function.
+ 	(determine_base_object): Reimplement using walk_tree.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-04-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-data-refs.c (vect_get_smallest_scalar_type): Always
+ 	use gimple_expr_type for load and store calls.  Skip over the
+ 	condition argument in a conditional internal function.
+ 	Protect use of TREE_INT_CST_LOW.
+ 
+ 	2019-04-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90006
+ 	* tree-vect-data-refs.c (vect_get_smallest_scalar_type): Handle
+ 	calls like lrint.
+ 
+ 	2019-04-01  Bin Cheng  <bin.cheng@linux.alibaba.com>
+ 
+ 	PR tree-optimization/89725
+ 	* tree-chrec.c (chrec_contains_symbols): New parameter.  Handle outer
+ 	loop's chrec as invariant symbol.
+ 	* tree-chrec.h (chrec_contains_symbols): New parameter.
+ 	* tree-data-ref.c (analyze_miv_subscript): Pass new argument.
+ 	(build_classic_dist_vector_1, add_other_self_distances): Bypass access
+ 	function of loops not in DDR's loop_nest.
+ 
+ 	2019-03-26  Bin Cheng  <bin.cheng@linux.alibaba.com>
+ 
+ 	PR tree-optimization/81740
+ 	* tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
+ 	In case of outer loop vectorization, check for backward dependence
+ 	at the inner loop if outer loop dependence is reversed.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-04-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/90213
+ 	* gimple-fold.c (fold_const_aggregate_ref_1): Do multiplication
+ 	by size and BITS_PER_UNIT on poly-wide-ints.
+ 
+ 	2019-04-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90020
+ 	* tree-ssa-sccvn.c (vn_reference_may_trap): New function.
+ 	* tree-ssa-sccvn.h (vn_reference_may_trap): Declare.
+ 	* tree-ssa-pre.c (compute_avail): Use it to not put
+ 	possibly trapping references after a call that might not
+ 	return into EXP_GEN.
+ 	* gcse.c (compute_hash_table_work): Do not elide
+ 	marking a block containing a call if the call might not
+ 	return.
+ 
+ 2019-08-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-07-24  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR bootstrap/87030
+ 	* config/i386/darwin.h (REAL_LIBGCC_SPEC): Revert change from r273749.
+ 
+ 	PR bootstrap/87030
+ 	* config/i386/darwin.h (REAL_LIBGCC_SPEC): Move from here...
+ 	* config/i386/darwin32-biarch.h .. to here.
+ 	* config/i386/darwin64-biarch.h: Adjust comments.
+ 	* config/rs6000/darwin32-biarch.h: Likewise.
+ 	* config/rs6000/darwin64-biarch.h: Likewise.
+ 	* config.gcc: Missed commit from r273746
+ 	(*-*-darwin*): Don't include CPU t-darwin here.
+ 	(i[34567]86-*-darwin*): Adjust to use biarch files. Produce
+ 	an error message if i686-darwin configuration is attempted for
+ 	Darwin >= 18.
+ 
+ 	Backport from mainline
+ 	2019-07-23  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR bootstrap/87030
+ 	* config.gcc (*-*-darwin*): Don't include CPU t-darwin here.
+ 	(i[34567]86-*-darwin*): Adjust to use biarch files. Produce
+ 	an error message if i686-darwin configuration is attempted for
+ 	Darwin >= 18.
+ 	(x86_64-*-darwin*): Switch to single multilib for Darwin >= 18.
+ 	(powerpc-*-darwin*): Use biarch files where needed.
+ 	(powerpc64-*-darwin*): Likewise.
+ 	* config/i386/darwin.h (REAL_LIBGCC_SPEC): Move to new biarch file.
+ 	(DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single
+ 	arch case.
+ 	* config/i386/darwin32-biarch.h: New.
+ 	* config/i386/darwin64.h: Rename.
+ 	* gcc/config/i386/darwin64-biarch.h: To this.
+ 	* config/i386/t-darwin: Rename.
+ 	* gcc/config/i386/t-darwin32-biarch: To this.
+ 	* config/i386/t-darwin64: Rename.
+ 	* gcc/config/i386/t-darwin64-biarch: To this.
+ 	* config/rs6000/darwin32-biarch.h: New.
+ 	* config/rs6000/darwin64.h: Rename.
+ 	* config/rs6000/darwin64-biarch.h: To this.
+ 	(DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single
+ 	arch case.
+ 	* config/rs6000/t-darwin8: Rename.
+ 	* config/rs6000/t-darwin32-biarch: To this.
+ 	* config/rs6000/t-darwin64 Rename.
+ 	* config/rs6000/t-darwin64-biarch: To this.
+ 
+ 2019-08-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/91150
+ 	* config/i386/i386.c (expand_vec_perm_blend): Change mask type
+ 	from unsigned to unsigned HOST_WIDE_INT.  For E_V64QImode cast
+ 	comparison to unsigned HOST_WIDE_INT before shifting it left.
+ 
+ 	2019-07-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/78884
+ 	* gimplify.c (struct gimplify_omp_ctx): Add add_safelen1 member.
+ 	(gimplify_bind_expr): If seeing TREE_ADDRESSABLE VLA inside of simd
+ 	loop body, set ctx->add_safelen1 instead of making it GOVD_PRIVATE.
+ 	(gimplify_adjust_omp_clauses): Add safelen (1) clause if
+ 	ctx->add_safelen1 is set.
+ 
+ 	PR rtl-optimization/90756
+ 	* explow.c (promote_ssa_mode): Always use TYPE_MODE, don't bypass it
+ 	for VECTOR_TYPE_P.
+ 
+ 	2019-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/90760
+ 	* symtab.c (symtab_node::set_section): Allow being called on aliases
+ 	as long as they aren't analyzed yet.
+ 
+ 	2019-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/90733
+ 	* var-tracking.c (vt_expand_loc_callback): Don't create raw subregs
+ 	with VOIDmode inner operands.
+ 
+ 	2019-04-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/90139
+ 	* tree-outof-ssa.c (get_temp_reg): If reg_mode is BLKmode, return
+ 	assign_temp instead of gen_reg_rtx.
+ 
+ 2019-08-27  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-07-07  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (darwin_override_options): Make a final check on PIC
+ 	options.
+ 
+ 2019-08-27  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-07-07  Iain Sandoe  <iain@sandoe.co.uk>
+ 	* config/darwin.c (darwin_override_options): Don't jam symbol stubs
+ 	on for kernel code.
+ 
+ 2019-08-27  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-06-27  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/rs6000/rs6000.c (darwin_rs6000_override_options): Do not
+ 	use longcall for 64b code.
+ 
+ 2019-08-27  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-08-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Add asserts
+ 	for cpu and machine.  Factor 64/32b builtins.
+ 
+ 	Backport from mainline
+ 	2019-06-23  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/rs6000/darwin.h: (__PPC__, __PPC64__): New.
+ 
+ 2019-08-25  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-06-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin-driver.c (darwin_driver_init): Fix off-by-one errors
+ 	in computing the number of options to be moved.
+ 
+ 	Backport from mainline
+ 	2019-06-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin-driver.c (validate_macosx_version_min): New.
+ 	(darwin_default_min_version): Cleanup and validate supplied version.
+ 	(darwin_driver_init): Likewise and push cleaned version into opts.
+ 
+ 2019-08-25  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/91533
+ 	Backport from mainline
+ 	2019-06-30  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/sse.md (ssse3_abs<mode>2): Rename from abs<mode>2.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_pabsb):
+ 	Use CODE_FOR_ssse3_absv8qi2.
+ 	(__builtin_ia32_pabsw): Use CODE_FOR_ssse3_absv4hi2.
+ 	(__builtin_ia32_pabsd): Use CODE_FOR_ssse3_absv2si2.
+ 
+ 2019-08-23  Mihailo Stojanovic  <mistojanovic@wavecomp.com>
+ 
+ 	Backport from mainline
+ 	2019-08-23  Mihailo Stojanovic  <mistojanovic@wavecomp.com>
+ 
+ 	* config/mips/mips.md (mips_get_fcsr, *mips_get_fcsr): Use SI
+ 	machine mode for unspec_volatile operand.
+ 
+ 2019-08-22  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2018-12-23  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/i386/darwin.h (TARGET_ASM_OUTPUT_IDENT): New.
+ 
+ 2019-08-22  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-05-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/i386/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New.
+ 
+ 2019-08-22  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-05-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin-c.c (darwin_register_objc_includes): Do not
+ 	prepend the sysroot when building gnu-runtime header search
+ 	paths.
+ 
+ 2019-08-22  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-05-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (darwin_file_end): Use switch_to_section ()
+ 	instead of direct output of the asm.
+ 
+ 2019-08-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/91347
+ 	* dse.c (scan_insn): Call add_wild_read for non-const/memset tail calls
+ 	before reload if HARD_FRAME_POINTER_IS_ARG_POINTER.
+ 
+ 2019-08-16  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-04-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/rs6000/rs6000.md (group_end_nop): Emit insn register
+ 	names using operand format, rather than hard-wired.
+ 	(speculation_barrier): Likewise.
+ 
+ 2019-08-14  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.h (LINK_COMMAND_SPEC_A): Update lto options
+ 	to match gcc/gcc.c.
+ 
+ 2019-08-05  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	Backport from mainline
+ 	2019-08-05  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv.c (riscv_promote_function_mode): New.
+ 	(TARGET_PROMOTE_FUNCTION_MODE): Use riscv_promote_function_mode.
+ 
+ 2019-08-04  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from trunk
+ 	2019-05-02  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_dbx_register_number): Return the
+ 	correct numbers for TFHAR, TFIAR, TEXASR.
+ 
+ 2019-07-23  Matthew Beliveau  <mbelivea@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-07-16  Jeff Law  <law@redhat.com>
+ 
+ 	PR rtl-optimization/91173
+ 	* tree-ssa-address.c (addr_for_mem_ref): If the base is an
+ 	SSA_NAME with a constant value, fold its value into the offset
+ 	and clear the base before calling gen_addr_rtx.
+ 	* g++.dg/pr91173.C: New test.
+ 
+ 2019-07-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/91231
+ 	* lto-streamer-in.c (input_function): Drop inline-entry markers
+ 	that ended up with an unknown location block.
+ 
+ 2019-07-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-07-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR driver/91172
+ 	* opts-common.c (decode_cmdline_option): Decode
+ 	argument of -Werror and check it for a wrong language.
+ 	* opts-global.c (complain_wrong_lang): Remove such case.
+ 
+ 2019-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-07-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* fold-const.c (fold_relational_const): Fix folding of
+ 	vector-to-scalar NE_EXPRs.
+ 	(test_vector_folding): Add more tests.
+ 
+ 2019-07-19  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/82081 - tail call optimization breaks noexcept
+ 	* tree-tailcall.c (find_tail_calls): Don't turn a call from a
+ 	nothrow function to a might-throw function into a tail call.
+ 
+ 2019-07-16  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	Backport from mainline
+ 	PR target/89222
+ 	* config/arm/arm.md (movsi): Use targetm.cannot_force_const_mem
+ 	to decide when to split off a non-zero offset from a symbol.
+ 	* config/arm/arm.c (arm_cannot_force_const_mem): Disallow offsets
+ 	in function symbols.
+ 
+ 2019-07-16  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-02-13  Wilco Dijkstra  <wdijkstr@arm.com>
+ 	PR target/89190
+ 	* config/arm/arm.c (ldm_stm_operation_p) Set
+ 	addr_reg_in_reglist correctly for first register.
+ 	(load_multiple_sequence): Remove dead base check.
+ 	(gen_ldm_seq): Correctly set write_back for Thumb-1.
+ 
+ 2019-07-15  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-07-01  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/vector.md: Fix shift count operand printing.
+ 
+ 2019-07-15  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-01-23  Bin Cheng  <bin.cheng@arm.com>
+ 		    Steve Ellcey  <sellcey@marvell.com>
+ 
+ 	PR target/85711
+ 	* recog.c (address_operand): Return false on wrong mode for address.
+ 	(constrain_operands): Check for mode with 'p' constraint.
+ 
+ 2019-07-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/91136
+ 	* df-core.c (ACCESSING REFS): Fix typos in comment.
+ 	* resource.c (mark_target_live_reg): Add artificial defs that occur at
+ 	the beginning of the block to the initial set of live registers.
+ 
+ 2019-07-04  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-07-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/90899
+ 	* multiple_target.c (create_dispatcher_calls): Add to comdat
+ 	group only if set for ifunc.
+ 
+ 2019-06-28  Jeff Law  <law@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-06-21  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/90949
+ 	* tree-ssa-copy.c (fini_copy_prop): Use reset_flow_sensitive_info.
+ 	* tree-ssanames.c (reset_flow_sensitive_info): Reset non-null state.
+ 
+ 2019-06-26  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-06-25  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/90939
+ 	* ipa-cp.c (ipcp_bits_lattice::meet_with): Remove assert.
+ 
+ 2019-06-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	Backport from mainline
+ 	2019-06-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* configure.ac (ld_vers) <*-*-solaris2*>: Remove support for
+ 	alternative Solaris 11.4 format.
+ 	* configure: Regenerate.
+ 
+ 2019-06-16  Jeff Law  <law@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-06-16  Prachi Godbole  <prachi.godbole@imgtec.com>
+ 		    Robert Suchanek  <robert.suchanek@mips.com>
+ 	* config/mips/mips.c (mips_expand_builtin_insn): Swap the 1st
+ 	and 3rd operands of the fmadd/fmsub/maddv builtin.
+ 
+ 2019-06-16  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR middle-end/64242
+ 	* config/pa/pa.md (nonlocal_goto): Restore frame pointer last.  Add
+ 	frame clobbers and schedule block.
+ 	(builtin_longjmp): Likewise.
+ 
+ 2019-06-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/90811
+ 	* config/nvptx/nvptx.c (nvptx_output_softstack_switch): Use and.b%d
+ 	instead of and.u%d.
+ 
+ 2019-06-07  John David Anglin  <danglin@gcc.gnu.orig>
+ 
+ 	PR target/90751
+ 	* config/pa/pa-linux.h (ASM_DECLARE_FUNCTION_NAME): Update comment.
+ 	Call pa_output_function_label.
+ 	(TARGET_ASM_FUNCTION_PROLOGUE): define.
+ 	* config/pa/pa-protos.h (pa_output_function_label): Declare.
+ 	* config/pa/pa.c (pa_output_function_prologue): Add ATTRIBUTE_UNUSED
+ 	to declaration.
+ 	(pa_linux_output_function_prologue): Declare.
+ 	(TARGET_ASM_FUNCTION_PROLOGUE): Delete define.
+ 	(pa_output_function_label): New.
+ 	(pa_output_function_prologue): Revise to use pa_output_function_label.
+ 	(pa_linux_output_function_prologue): New.
+ 	* config/pa/pa.h (TARGET_ASM_FUNCTION_PROLOGUE): Define.
+ 
+ 2019-06-07  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-12  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/82920
+ 	* config/i386/darwin.h (CC1_SPEC): Report -mx32 as an error for
+ 	Darwin.
+ 
+ 2019-06-07  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-12  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/82920
+ 	* config/i386/i386.c (ix86_output_jmp_thunk_or_indirect): New.
+ 	(ix86_output_indirect_branch_via_reg): Use output mechanism
+ 	accounting for __USER_LABEL_PREFIX__.
+ 	(ix86_output_indirect_branch_via_push): Likewise.
+ 	(ix86_output_function_return): Likewise.
+ 	(ix86_output_indirect_function_return): Likewise.
+ 
+ 2019-05-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-predcom.c (is_inv_store_elimination_chain): Fix a typo - lenght
+ 	to length.
+ 
+ 2019-05-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/90329
+ 	* lto-streamer.h (LTO_minor_version): Bump to 2.
+ 
+ 	Backported from mainline
+ 	2019-05-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/90329
+ 	* tree-core.h (struct tree_decl_common): Document
+ 	decl_nonshareable_flag for PARM_DECLs.
+ 	* tree.h (DECL_HIDDEN_STRING_LENGTH): Define.
+ 	* calls.c (expand_call): Don't try tail call if caller
+ 	has any DECL_HIDDEN_STRING_LENGTH PARM_DECLs that are or might be
+ 	passed on the stack and callee needs to pass any arguments on the
+ 	stack.
+ 	* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Use
+ 	else if instead of series of mutually exclusive ifs.  Handle
+ 	DECL_HIDDEN_STRING_LENGTH for PARM_DECLs.
+ 	* tree-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
+ 
+ 2019-05-28  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.c (hppa_profile_hook): Remove offset adjustment.
+ 
+ 2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* dwarf2out.c (resolve_args_picking_1): Deal with DW_OP_GNU_addr_index
+ 	and DW_OP_GNU_const_index opcodes.
+ 
+ 2019-05-24  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR target/90530
+ 	* config/pa/pa.c (pa_can_change_mode_class): Accept mode changes from
+ 	DImode to SImode in floating-point registers on 64-bit target.
+ 	* config/pa/pa.md (umulsidi3): Change nonimmediate_operand to
+ 	register_operand in xmpyu patterns.
+ 
+ 2019-05-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-05-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/90570
+ 	* gimplify.c (gimplify_target_expr): Skip TREE_STATIC target
+ 	expression similarly to gimplify_decl_expr.
+ 
+ 2019-05-23  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2019-05-21  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/cpuid.h (__cpuid): For 32bit targets, zero
+ 	%ebx and %ecx bafore calling cpuid with leaf 1 or
+ 	non-constant leaf argument.
+ 
+ 	2019-05-21  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/90547
+ 	* config/i386/i386.md (anddi_1 to andsi_1_zext splitter):
+ 	Avoid calling gen_lowpart with CONST operand.
+ 
+ 2019-05-21  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	Backported from mainline
+ 	2019-05-16  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config/arm/t-rtems: Replace ARMv7-M multilibs with Cortex-M
+ 	multilibs.
+ 
+ 2019-05-20  Jeff Law  <law@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-05-17  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+ 
+ 	* config/mips/mips.c (mips_dwarf_frame_reg_mode): Replace
+ 	TARGET_FLOAT64 with !TARGET_FLOAT32, thus handling both fp64
+ 	and fpxx modes.
+ 
+ 2019-05-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	Backport from mainline.
+ 	2019-05-07  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR target/89765
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
+ 	In handling of ALTIVEC_BUILTIN_VEC_INSERT, use modular arithmetic
+ 	to compute vector element selector for both constant and variable
+ 	operands.
+ 
+ 2019-05-15  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	Backport from mainline
+ 	2019-04-11  David Edelsohn  <dje.gcc@gmail.com>
+ 	* xcoffout.h (xcoff_private_rodata_section_name): Declare.
+ 	* xcoffout.c (xcoff_private_rodata_section_name): Define.
+ 	* config/rs6000/rs6000.c (rs6000_xcoff_asm_init_sections): Create
+ 	read_only_private_data_section using coff_private_rodata_section_name.
+ 	(rs6000_xcoff_file_start): Generate coff_private_rodata_section_name.
+ 
+ 	2018-12-04  David Edelsohn  <dje.gcc@gmail.com>
+ 	2018-12-13  David Edelsohn  <dje.gcc@gmail.com>
+ 	PR target/61976
+ 	* config/rs6000/rs6000.c (rs6000_function_arg): Don't pass aggregates
+ 	in FPRs on AIX. Ensure type is non-NULL.
+ 	(rs6000_arg_partial_bytes): Same.
+ 
+ 2019-05-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-05-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/90380
+ 	* gcov.c (handle_cycle): Do not support zero cycle count,
+ 	it should not be possible.
+ 	(path_contains_zero_cycle_arc): New function.
+ 	(circuit): Ignore zero cycle arc counts.
+ 
+ 2019-05-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-05-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/90380
+ 	* gcov.c (enum loop_type): Remove the enum and
+ 	the operator.
+ 	(handle_cycle): Assert that we should not reach
+ 	a negative count.
+ 	(circuit): Use loop_found instead of a tri-state loop_type.
+ 	(get_cycles_count): Do not handle NEGATIVE_LOOP as it can't
+ 	happen.
+ 
+ 2019-05-11  Andreas Tobler <andreast@gcc.gnu.org>
+ 
+ 	Backport from mainline.
+ 	2019-04-25  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	* config/i386/freebsd64.h: Add bits for 32-bit multilib support.
+ 	* config/i386/t-freebsd64: New file.
+ 	* config.gcc: Add the t-freebsd64 for multilib support.
+ 
+ 2019-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	Backport from mainline.
+ 	2019-05-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR target/89424
+ 	* config/rs6000/rs6000.c (rs6000_expand_vector_extract): Add
+ 	handling of V1TImode.
+ 
+ 2019-05-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR bootstrap/90359
+ 	Backport from mainline
+ 	2019-03-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/89655
+ 	PR bootstrap/89656
+ 	* vr-values.c (vr_values::update_value_range): If
+ 	old_vr->varying_p (), don't update it, make new_vr also VARYING
+ 	and return false.
+ 
+ 2019-05-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-03-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/89698
+ 	* fold-const.c (operand_equal_p): For INDIRECT_REF check
+ 	that the access types are similar.
+ 
+ 	2019-03-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/89595
+ 	* tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Take
+ 	stmt iterator as reference, take boolean output parameter to
+ 	indicate whether the stmt was removed and thus the iterator
+ 	already advanced.
+ 	(dom_opt_dom_walker::before_dom_children): Re-iterate over
+ 	stmts created by folding.
+ 
+ 	2019-03-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/89710
+ 	* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Use
+ 	safe_dyn_cast.
+ 
+ 	2019-04-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90071
+ 	* tree-ssa-reassoc.c (init_range_entry): Do not pick up
+ 	abnormal operands from def stmts.
+ 
+ 	2018-08-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	PR target/86984
+ 	* expr.c (expand_assignment): Assert that bitpos is positive.
+ 	(store_field): Likewise
+ 	(expand_expr_real_1): Make sure that bitpos is positive.
+ 	* config/alpha/alpha.h (CONSTANT_ADDRESS_P): Avoid signed
+ 	integer overflow.
+ 
+ 	2019-03-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/89711
+ 	* config/i386/i386.c (make_resolver_func): Properly set
+ 	DECL_CONTEXT on the RESULT_DECL.
+ 	* config/rs6000/rs6000.c (make_resolver_func): Likewise.
+ 
+ 2019-04-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-04-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/90193
+ 	* rtl.c (classify_insn): Return JUMP_INSN for asm goto.
+ 	* emit-rtl.c (try_split): Copy over REG_LABEL_TARGET.
+ 
+ 	PR target/90187
+ 	* config/i386/i386.c (ix86_expand_sse_fp_minmax): Force if_true into
+ 	a register if both if_true and if_false are MEMs.
+ 
+ 	PR tree-optimization/90208
+ 	* tree-cfg.c (remove_bb): Move forced labels from removed bbs
+ 	after labels of new_bb, not before them.
+ 
+ 	2019-04-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/90082
+ 	* dce.c (can_delete_call): New function.
+ 	(deletable_insn_p, mark_insn): Use it.
+ 
+ 	PR tree-optimization/90090
+ 	* tree-ssa-math-opts.c (is_division_by): Ignore divisions that can
+ 	throw internally.
+ 	(is_division_by_square): Likewise.  Formatting fix.
+ 
+ 	2019-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/89965
+ 	* dce.c: Include rtl-iter.h.
+ 	(struct check_argument_load_data): New type.
+ 	(check_argument_load): New function.
+ 	(find_call_stack_args): Check for loads from stack slots still tracked
+ 	in sp_bytes and punt if any is found.
+ 
+ 	PR c/89946
+ 	* varasm.c (assemble_start_function): Don't use tree_fits_uhwi_p
+ 	and gcc_unreachable if it fails, just call tree_to_uhwi which
+ 	verifies that too.  Test TREE_CHAIN instead of list_length > 1.
+ 	Start warning message with a lower-case letter.  Formatting fixes.
+ 
+ 	PR rtl-optimization/90026
+ 	* cfgcleanup.c (try_optimize_cfg): When removing empty bb with no
+ 	successors, look for BARRIERs inside of the whole BB_FOOTER chain
+ 	rather than just at the start of it.  If e->src BB_FOOTER is not NULL
+ 	in cfglayout mode, use emit_barrier_after_bb.
+ 
+ 	2019-04-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/89965
+ 	* dce.c (sp_based_mem_offset): New function.
+ 	(find_call_stack_args): Use sp_based_mem_offset.
+ 
+ 	2019-04-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/90010
+ 	* gimple-ssa-sprintf.c (target_to_host): Fix handling of targstr
+ 	with strlen in between hostsz-3 and hostsz-1 inclusive when no
+ 	translation is needed, and when translation is needed, only append
+ 	... if the string length is hostsz or more bytes long.  Avoid using
+ 	strncpy or strcat.
+ 
+ 	2019-04-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/89998
+ 	* gimple-ssa-sprintf.c (try_substitute_return_value): Use lhs type
+ 	instead of integer_type_node if possible, don't add ranges if return
+ 	type is not compatible with int.
+ 	* gimple-fold.c (gimple_fold_builtin_sprintf,
+ 	gimple_fold_builtin_snprintf): Use lhs type instead of hardcoded
+ 	integer_type_node.
+ 
+ 	2019-03-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/89872
+ 	* gimplify.c (gimplify_compound_literal_expr): Don't optimize a
+ 	non-addressable complit into its initializer if it is volatile.
+ 
+ 	2019-03-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/89621
+ 	* tree-inline.h (struct copy_body_data): Add
+ 	dont_remap_vla_if_no_change flag.
+ 	* tree-inline.c (remap_type_3, remap_type_2): New functions.
+ 	(remap_type): Don't remap vla types if id->dont_remap_vla_if_no_change
+ 	and remap_type_2 returns false.
+ 	* omp-low.c (new_omp_context): Set ctx->cb.dont_remap_vla_if_no_change.
+ 
+ 	2019-03-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/89752
+ 	* lra-constraints.c (process_alt_operands) <reg>: For BLKmode, don't
+ 	update this_alternative nor this_alternative_set.
+ 
+ 	2019-03-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/89768
+ 	* loop-unroll.c (unroll_loop_constant_iterations): Use gen_int_mode
+ 	instead of GEN_INT.
+ 	(unroll_loop_runtime_iterations): Likewise.
+ 
+ 	PR target/89752
+ 	* gimplify.c (gimplify_asm_expr): For output argument with
+ 	TREE_ADDRESSABLE type, clear allows_reg if it allows memory, otherwise
+ 	diagnose error.
+ 
+ 	PR target/89726
+ 	* config/i386/i386.c (ix86_expand_floorceildf_32): In ceil
+ 	compensation use x2 += 1 instead of x2 -= -1 and when honoring
+ 	signed zeros, do another copysign after the compensation.
+ 
+ 	2019-03-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/89704
+ 	* dwarf2out.c (add_const_value_attribute): Return false for MINUS,
+ 	SIGN_EXTEND and ZERO_EXTEND.
+ 
+ 	2019-03-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/89684
+ 	* multiple_target.c (create_dispatcher_calls): Change
+ 	references_to_redirect from vector of ipa_ref * to vector of ipa_ref.
+ 	In the node->iterate_referring loop, push *ref rather than ref, call
+ 	ref->remove_reference () and always pass 0 to iterate_referring.
+ 
+ 	PR rtl-optimization/89679
+ 	* expmed.c (expand_mult_const): Don't add a REG_EQUAL note if it
+ 	would contain a paradoxical SUBREG.
+ 
+ 	PR tree-optimization/89703
+ 	* tree-ssa-strlen.c (valid_builtin_call): Punt if stmt call types
+ 	aren't compatible also with builtin_decl_explicit.  Check pure
+ 	or non-pure status of BUILT_IN_STR{{,N}CMP,N{LEN,{CAT,CPY}{,_CHK}}}
+ 	and BUILT_IN_STPNCPY{,_CHK}.
+ 
+ 	2019-03-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/89498
+ 	* dwarf2out.c (size_of_die): For dw_val_class_view_list always use
+ 	DWARF_OFFSET_SIZE.
+ 	(value_format): For dw_val_class_view_list never use DW_FORM_loclistx.
+ 
+ 	PR middle-end/88588
+ 	* omp-simd-clone.c (ipa_simd_modify_stmt_ops): Handle PHI args.
+ 	(ipa_simd_modify_function_body): Handle PHIs.
+ 
+ 	2019-03-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/89663
+ 	* builtins.c (expand_builtin_int_roundingfn,
+ 	expand_builtin_int_roundingfn_2): Return NULL_RTX instead of
+ 	gcc_unreachable if validate_arglist fails.
+ 
+ 	2019-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/88568
+ 	* attribs.c (handle_dll_attribute): Don't clear TREE_STATIC for
+ 	dllimport on VAR_DECLs with RECORD_TYPE or UNION_TYPE DECL_CONTEXT.
+ 
+ 	2019-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/89587
+ 	* config/rs6000/t-linux (MULTIARCH_DIRNAME): Set to non-empty only
+ 	if_multiarch.
+ 
+ 	PR middle-end/89590
+ 	* builtins.c (maybe_emit_free_warning): Punt if free doesn't have
+ 	exactly one argument.
+ 
+ 	2019-02-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/89520
+ 	* convert.c (convert_to_real_1, convert_to_integer_1): Punt for
+ 	builtins if they don't have a single scalar floating point argument.
+ 	Formatting fixes.
+ 
+ 	2019-02-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/89412
+ 	* expr.c (expand_assignment): If result is a MEM, use change_address
+ 	instead of simplify_gen_subreg.
+ 
+ 	2019-02-20  Jakub Jelinek  <jakub@redhat.com>
+ 		    David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR middle-end/89091
+ 	* fold-const.c (decode_field_reference): Return NULL_TREE if
+ 	lang_hooks.types.type_for_size returns NULL.  Check it before
+ 	overwriting *exp_.  Use return NULL_TREE instead of return 0.
+ 
+ 	2019-02-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/88074
+ 	PR middle-end/89415
+ 	* toplev.c (do_compile): Double the emin/emax exponents to workaround
+ 	buggy mpc_norm.
+ 
+ 	2019-02-19  Richard Biener  <rguenther@suse.de>
+ 
+         PR middle-end/88074
+ 	* toplev.c (do_compile): Initialize mpfr's exponent range
+ 	based on available float modes.
+ 
+ 2019-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+ 
+ 	Backport from mainline.
+ 	2019-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+ 	PR target/86538
+ 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
+ 	Define __ARM_FEATURE_ATOMICS.
+ 
+ 2019-04-30  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-12-11  Richard Earnshaw  <Richard.Earnshaw@arm.com>
+ 
+ 	PR target/37369
+ 	* config/aarch64/iterators.md (sizem1): Add sizes for
+ 	SFmode and DFmode.
+ 	(Vbtype): Add SFmode mapping.
+ 	* config/aarch64/aarch64.md (copysigndf3, copysignsf3): Delete.
+ 	(copysign<GPF:mode>3): New expand pattern.
+ 	(copysign<GPF:mode>3_insn): New insn pattern.
+ 
+ 2019-04-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backport from mainline:
+ 	2019-01-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/89037
+ 	* varasm.c (output_constructor_bitfield): Use wi::extract_uhwi
+ 	instead of accessing TREE_INT_CST_ELT directly.
+ 
+ 2019-04-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backport from mainline:
+ 	2018-08-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/85910
+ 	* config/aarch64/aarch64.c (aarch64_expand_vec_perm_const_1): Fix
+ 	aarch64_evpc_tbl guard.
+ 
+ 2019-04-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backport from mainline:
+ 	2019-03-08  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR debug/89631
+ 	* dwarf2cfi.c (dwarf2out_frame_debug_expr): Use CONST_POLY_INT
+ 	instead of POLY_INT_CST.
+ 
+ 2019-04-26  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	Backport from mainline
+ 	2019-04-23  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	PR rtl-optimization/87979
+ 	* modulo-sched.c (sms_schedule): Start ii value "mii" should
+ 	not equal zero.
+ 
+ 	PR rtl-optimization/84032
+ 	* modulo-sched.c (ps_insn_find_column): Change condition so that
+ 	branch will always be the last insn in a row inside partial
+ 	schedule.
+ 
+ 2019-04-19  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	Backport from mainline:
+ 	2019-04-16  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	PR target/84369
+ 	* config/rs6000/power9.md: Add store forwarding bypass.
+ 
+ 2019-04-17  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-03-10  Martin Jambor  <mjambor@suse.cz>
+ 
+         PR tree-optimization/85762
+         PR tree-optimization/87008
+         PR tree-optimization/85459
+         * tree-sra.c (contains_vce_or_bfcref_p): New parameter, set the bool
+         it points to if there is a type changing MEM_REF.  Adjust all callers.
+         (build_accesses_from_assign): Disable total scalarization if
+         contains_vce_or_bfcref_p returns true through the new parameter, for
+         both rhs and lhs.
+ 
+ 2019-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2019-03-15  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR target/87532
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
+ 	When handling vec_extract, use modular arithmetic to allow
+ 	constant selectors greater than vector length.
+ 	* config/rs6000/rs6000.c (rs6000_expand_vector_extract): Allow
+ 	V1TImode vectors to have constant selector values greater than 0.
+ 	Use modular arithmetic to compute vector index.
+ 	(rs6000_split_vec_extract_var): Use modular arithmetic to compute
+ 	index for in-memory vectors.  Correct code generation for
+ 	in-register vectors.  Use inner mode of vector rather than mode of
+ 	destination for move instruction.
+ 	(altivec_expand_vec_ext_builtin): Use modular arithmetic to
+ 	compute index.
+ 
+ 	2019-04-12  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR target/87532
+ 	* config/rs6000/vsx.md (*vsx_extract_<mode>_<VS_scalar>mode_var):
+ 	Use QI inner mode with V16QI vector mode.
+ 
+ 2019-04-15  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-04-15  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/89693
+ 	* cgraph.c (clone_of_p): Loop over clone chain for each step in
+ 	the thunk chain.
+ 
+ 2019-04-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-01-18  Martin Liska  <mliska@suse.cz>
+ 		    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/88587
+ 	* cgraph.h (create_version_clone_with_body): Add new argument
+ 	with attributes.
+ 	* cgraphclones.c (cgraph_node::create_version_clone): Add
+ 	DECL_ATTRIBUTES to a newly created decl.  And call
+ 	valid_attribute_p so that proper cl_target_optimization_node
+ 	is set for the newly created declaration.
+ 	* multiple_target.c (create_target_clone): Set DECL_ATTRIBUTES
+ 	for declaration.
+ 	(expand_target_clones): Do not call valid_attribute_p, it must
+ 	be already done.
+ 	* tree-inline.c (copy_decl_for_dup_finish): Reset mode for
+ 	vector types.
+ 
+ 2019-04-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90018
+ 	* tree-vect-data-refs.c (vect_preserves_scalar_order_p):
+ 	Test both SLP and interleaving variants.
+ 
+ 2019-04-10  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	PR target/90024
+ 	* config/arm/arm.c (neon_valid_immediate): Disallow VOIDmode parameter.
+ 	* config/arm/constraints.md (Dm, DN, Dn): Split previous Dn constraint
+ 	into three.
+ 	* config/arm/neon.md (*neon_mov<mode>): Account for TImode and DImode
+ 	differences directly.
+ 	(*smax<mode>3_neon, vashl<mode>3, vashr<mode>3_imm): Use Dm constraint.
+ 
+ 2019-04-07  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/89945
+ 	* config/i386/i386.md (anddi_1 to andsi_1_zext splitter):
+ 	Avoid calling gen_lowpart with SYMBOL_REF and LABEL_REF operand.
+ 
+ 2019-04-04  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/89934
+ 	* gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Bail
+ 	out if the number of arguments is less than expected.
+ 
+ 2019-04-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/89896
+ 	* lto-wrapper.c (run_gcc): Avoid implicit rules making
+ 	the all target phony.
+ 
+ 2019-04-02  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/89902
+ 	PR target/89903
+ 	* config/i386/i386.c (dimode_scalar_to_vector_candidate_p):
+ 	Return false for variable DImode shifts.
+ 	(dimode_scalar_chain::compute_convert_gain): Do not handle
+ 	register count operand in variable DImode shifts.
+ 	(dimode_scalar_chain::make_vector_copies): Remove support to copy
+ 	count argument of a variable shift instruction to a vector register.
+ 	(dimode_scalar_chain::convert_reg): Remove support to convert
+ 	count argument of a variable shift instruction.
+ 
+ 2019-03-29  Kugan Vivekanandarajah  <kuganv@linaro.org>
+ 
+ 	Backport from mainline
+ 	2019-03-29  Kugan Vivekanandarajah  <kuganv@linaro.org>
+ 		    Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/89862
+ 	* rtl.h (word_register_operation_p): Exclude CONST_INT from operations
+ 	that operates on the full registers for WORD_REGISTER_OPERATIONS
+ 	architectures.
+ 
+ 2019-03-28  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/89848
+ 	* config/i386/i386.c (dimode_scalar_chain::make_vector_copies):
+ 	Also process XEXP (src, 0) of a shift insn.
+ 
+ 2019-03-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-11-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR web/87829
+ 	* doc/invoke.texi: Remove options that are
+ 	not disabled with -Os.
+ 
+ 2019-03-26  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/89827
+ 	* config/i386/i386.c (dimode_scalar_chain::convert_reg):
+ 	Also process XEXP (src, 0) of a shift insn.
+ 
+ 2019-03-25  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-03-20  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR target/89775
+ 	* config/s390/s390.c (global_not_special_regno_p): Move to make it
+ 	available to ...
+ 	(s390_optimize_register_info): Use global_not_special_regno_p to
+ 	check for global regs.
+ 
+ 2019-03-22  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-03-22  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/mmintrin.h (_mm_sub_pi32): Fix typo.
+ 
+ 2019-03-21  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+         Backport from mainline
+         2019-03-08  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+         * config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Rebuild
+         ud- and du-chains between phases.
+ 
+ 2019-03-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/88389
+ 	* opts.c (finish_options): Disable -gsplit-dwarf when doing LTO.
+ 
+ 2019-03-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/89753
+ 	* loop-unroll.c (decide_unroll_constant_iterations): Make guard for
+ 	explicit unrolling factor even more robust.
+ 
+ 2019-03-18  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/88273
+ 	* gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range):
+ 	Handle anti-ranges the same as no range at all.
+ 
+ 2019-03-18  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-03-18  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/89546
+ 	* tree-sra.c (propagate_subaccesses_across_link): Requeue new_acc if
+ 	any propagation to its children took place.
+ 
+ 2019-03-17  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2019-03-14  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/89523
+ 	* config/i386/i386.c (ix86_print_operand): Handle 'M' to add
+ 	addr32 prefix to VSIB address for X32.
+ 	* config/i386/sse.md (*avx512pf_gatherpf<mode>sf_mask): Prepend
+ 	"%M2" to opcode.
+ 	(*avx512pf_gatherpf<mode>df_mask): Likewise.
+ 	(*avx512pf_scatterpf<mode>sf_mask): Likewise.
+ 	(*avx512pf_scatterpf<mode>df_mask): Likewise.
+ 	(*avx2_gathersi<mode>): Prepend "%M3" to opcode.
+ 	(*avx2_gathersi<mode>_2): Prepend "%M2" to opcode.
+ 	(*avx2_gatherdi<mode>): Prepend "%M3" to opcode.
+ 	(*avx2_gatherdi<mode>_2): Prepend "%M2" to opcode.
+ 	(*avx2_gatherdi<mode>_3): Prepend "%M3" to opcode.
+ 	(*avx2_gatherdi<mode>_4): Prepend "%M2" to opcode.`
+ 	(*avx512f_gathersi<mode>): Prepend "%M4" to opcode.
+ 	(*avx512f_gathersi<mode>_2): Prepend "%M3" to opcode.
+ 	(*avx512f_gatherdi<mode>): Prepend "%M4" to opcode.
+ 	(*avx512f_gatherdi<mode>_2): Prepend "%M3" to opcode.
+ 	(*avx512f_scattersi<mode>): Prepend "%M0" to opcode.
+ 	(*avx512f_scatterdi<mode>): Likewise.
+ 
+ 2019-03-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-11-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR testsuite/85368
+ 	* params.def (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT): New param.
+ 	* tree-ssa-ifcombine.c (ifcombine_ifandif): If
+ 	--param logical-op-non-short-circuit is present, override
+ 	LOGICAL_OP_NON_SHORT_CIRCUIT value from the param.
+ 	* fold-const.c (fold_range_test, fold_truth_andor): Likewise.
+ 
+ 2019-03-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/89712
+ 	* doc/invoke.texi: Remove -fdump-class-hierarchy option.
+ 
+ 2019-03-14  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-03-07  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR lto/87525
+ 	* ipa-cp.c (perform_estimation_of_a_value): Account zero time benefit
+ 	for extern inline functions.
+ 
+ 2019-03-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/89572
+ 	* tree-scalar-evolution.c (get_loop_exit_condition): Use
+ 	safe_dyn_cast.
+ 	* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables):
+ 	Use gimple_location_safe.
+ 
+ 2019-03-13  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/85860
+ 	* lra-constraints.c (inherit_in_ebb): Update
+ 	potential_reload_hard_regs along with live_hard_regs.
+ 
+ 2019-03-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-03-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/89677
+ 	* tree-scalar-evolution.c (simplify_peeled_chrec): Do not
+ 	throw FP expressions at tree-affine.
+ 
+ 	2019-03-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/89497
+ 	* tree-cfgcleanup.h (cleanup_tree_cfg): Add SSA update flags
+ 	argument, defaulted to zero.
+ 	* passes.c (execute_function_todo): Pass down SSA update flags
+ 	to cleanup_tree_cfg.
+ 	* tree-cfgcleanup.c: Include tree-into-ssa.h and tree-cfgcleanup.h.
+ 	(cleanup_tree_cfg_1): After cleanup_control_flow_pre update SSA
+ 	form if requested.
+ 	(cleanup_tree_cfg_noloop): Pass down SSA update flags.
+ 	(cleanup_tree_cfg): Get and pass down SSA update flags.
+ 
+ 	2019-02-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/89296
+ 	* tree-ssa-loop-ch.c (ch_base::copy_headers): Restrict setting
+ 	of no-warning flag to cases that might emit the bogus warning.
+ 
+ 2019-03-13  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-03-11  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_expand_builtin): Do the copy_to_reg not
+ 	only on the else branch.
+ 
+ 2019-03-13  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-02-07  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390-builtin-types.def: Add new types.
+ 	* config/s390/s390-builtins.def: (s390_vec_xl, s390_vec_xld2)
+ 	(s390_vec_xlw4): Make the memory operand into a const pointer.
+ 	(s390_vec_xld2, s390_vec_xlw4): Add a variant for single precision
+ 	float.
+ 	* config/s390/s390-c.c (s390_expand_overloaded_builtin): Generate
+ 	a new vector type with the alignment of the scalar memory operand.
+ 
+ 2019-03-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/89664
+ 	* tree-ssa-math-opts.c (execute_cse_reciprocals_1): Properly
+ 	free the occurance tree after the early out.
+ 
+ 2019-03-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-03-08  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm.h (TARGET_FP16_TO_DOUBLE): Add TARGET_VFP_DOUBLE
+ 	requirement.
+ 
+ 2019-03-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/89588
+ 	* loop-unroll.c (decide_unroll_constant_iterations): Make guard for
+ 	explicit unrolling factor more robust.
+ 
+ 2019-03-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-03-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/86952
+ 	* config/i386/i386.c (ix86_option_override_internal): Disable
+ 	jump tables when retpolines are used.
+ 
+ 2019-03-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-02-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR lto/88147
+ 	* input.c (selftest::test_line_offset_overflow): New selftest.
+ 	(selftest::input_c_tests): Call it.
+ 
+ 2019-03-08  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-03-07  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/88235
+ 	* cgraph.h (cgraph_node): New inline method former_thunk_p.
+ 	* cgraph.c (cgraph_node::dump): Dump a note if node is a former thunk.
+ 	(clone_of_p): Treat expanded thunks like thunks, be optimistic if they
+ 	have multiple callees.  At the end check if declarations match as
+ 	opposed to cgraph_nodes.
+ 
+ 2019-03-06  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backport from trunk.
+ 	2019-02-25  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/88530
+ 	* common/config/aarch64/aarch64-common.c
+ 	(struct aarch64_option_extension): Add is_synthetic.
+ 	(all_extensions): Use it.
+ 	(TARGET_OPTION_INIT_STRUCT): Define hook.
+ 	(struct gcc_targetm_common): Moved to end.
+ 	(all_extensions_by_on): New.
+ 	(opt_ext_cmp, typedef opt_ext): New.
+ 	(aarch64_option_init_struct): New.
+ 	(aarch64_contains_opt): New.
+ 	(aarch64_get_extension_string_for_isa_flags): Output smallest set.
+ 	* config/aarch64/aarch64-option-extensions.def
+ 	(AARCH64_OPT_EXTENSION): Explicitly include AES and SHA2 in crypto.
+ 	(fp, simd, crc, lse, fp16, rcpc, rdma, dotprod, aes, sha2, sha3,
+ 	sm4, fp16fml, sve):
+ 	Set is_synthetic to false.
+ 	(crypto): Set is_synthetic to true.
+ 	* config/aarch64/driver-aarch64.c (AARCH64_OPT_EXTENSION): Add
+ 	SYNTHETIC.
+ 
+ 2019-03-06  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backport from trunk.
+ 	2019-02-28  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/88530
+ 	* config/aarch64/aarch64-option-extensions.def: Document it.
+ 	* config/aarch64/driver-aarch64.c (host_detect_local_cpu): Skip feature
+ 	if empty hwcaps.
+ 
+ 2019-03-06  Xiong Hu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	Backport of r268834 from mainline to gcc-8-branch.
+ 	2019-02-13  Xiong Hu Luo  <luoxhu@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_sbox_be, vec_cipher_be,
+ 	vec_cipherlast_be, vec_ncipher_be, vec_ncipherlast_be): New #defines.
+ 	* config/rs6000/crypto.md (CR_vqdi): New define_mode_iterator.
+ 	(crypto_vsbox_<mode>, crypto_<CR_insn>_<mode>): New define_insns.
+ 	* config/rs6000/rs6000-builtin.def (VSBOX_BE): New BU_CRYPTO_1.
+ 	(VCIPHER_BE, VCIPHERLAST_BE, VNCIPHER_BE, VNCIPHERLAST_BE):
+ 	New BU_CRYPTO_2.
+ 	* config/rs6000/rs6000.c (builtin_function_type)
+ 	<CRYPTO_BUILTIN_VSBOX_BE, CRYPTO_BUILTIN_VCIPHER_BE,
+ 	CRYPTO_BUILTIN_VCIPHERLAST_BE, CRYPTO_BUILTIN_VNCIPHER_BE,
+ 	CRYPTO_BUILTIN_VNCIPHERLAST_BE>: New switch options.
+ 	* doc/extend.texi (vec_sbox_be, vec_cipher_be, vec_cipherlast_be,
+ 	vec_ncipher_be, vec_ncipherlast_be): New builtin functions.
+ 
+ 2019-03-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-02-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/89505
+ 	* tree-ssa-structalias.c (compute_dependence_clique): Make sure
+ 	to handle restrict pointed-to vars with multiple subvars
+ 	correctly.
+ 
+ 2019-03-01  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/89517
+ 	* config/aarch64/aarch64-option-extensions.def (fp, simd, crypto,
+ 	fp16): Collapse line.
+ 
+ 2019-03-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-03-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/89539
+ 	* dwarf2out.c (output_comdat_type_unit): Add ATTRIBUTE_UNUSED to
+ 	early_lto_debug argument.
+ 
+ 	2019-02-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/88878
+ 	* dwarf2out.c (use_debug_types): Disable when in_lto_p.
+ 
+ 	2019-02-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/88878
+ 	* dwarf2out.c (output_comdat_type_unit): Add early_lto_debug
+ 	parameter, prefix section name with .gnu.debuglto_ if true.
+ 	(dwarf2out_finish): Pass false to output_comdat_type_unit.
+ 	(dwarf2out_early_finish): Pass true to output_comdat_type_unit.
+ 
+ 	2019-02-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/89514
+ 	* dwarf2out.c (size_of_die): Key on AT_ref (a)->comdat_type_p
+ 	rather than on use_debug_types, doing what output_die does.
+ 	(value_format): Likewise.
+ 
+ 2019-02-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR tree-optimization/89536
+ 	* tree-ssa-dom.c (edge_info::derive_equivalences) <BIT_NOT_EXPR>: Test
+ 	only whether bit #0 of the value is 0 instead of the entire value.
+ 
+ 2019-02-28  Li Jia He  <helijia@linux.ibm.com>
+ 
+ 	Backport from trunk
+ 	2019-02-20  Li Jia He  <helijia@linux.ibm.com>
+ 
+ 	PR target/88100
+ 	* gcc/config/rs6000/rs6000.c (rs6000_gimple_fold_builtin)
+ 	<case ALTIVEC_BUILTIN_VSPLTISB, ALTIVEC_BUILTIN_VSPLTISH,
+ 	ALTIVEC_BUILTIN_VSPLTISW>: Don't convert the operand before
+ 	range checking it.
+ 
+ 2019-02-27  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/89397
+ 	* config/i386/i386.c (ix86_atomic_assign_expand_fenv): Check
+ 	TARGET_SSE in addition to TARGET_SSE_MATH.
+ 
+ 	(ix86_excess_precision): Ditto.
+ 	(ix86_float_exceptions_rounding_supported_p): Ditto.
+ 	(use_rsqrt_p): Ditto.
+ 	* config/i386/sse.md (rsqrt<mode>2): Ditto.
+ 
+ 2019-02-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-02-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/89361
+ 	* config/s390/s390.c (s390_indirect_branch_attrvalue,
+ 	s390_indirect_branch_settings): Define unconditionally.
+ 	(s390_set_current_function): Likewise, but guard the whole body except
+ 	the s390_indirect_branch_settings call with
+ 	#if S390_USE_TARGET_ATTRIBUTE.
+ 	(TARGET_SET_CURRENT_FUNCTION): Redefine unconditionally.
+ 
+ 2019-02-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	Backport from mainline
+ 	2019-02-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* rtlanal.c (get_initial_register_offset): Fall back to the estimate
+ 	as long as the epilogue isn't completed.
+ 
+ 2019-02-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-ssa-dom.c (edge_info::derive_equivalences) <BIT_IOR_EXPR>: Fix
+ 	and move around comment.
+ 	<BIT_AND_EXPR>: Likewise.
+ 	<BIT_NOT_EXPR>: Add specific handling for boolean types.
+ 
+ 2019-02-24  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/89271
+ 	* config/rs6000/rs6000.md (<bd>_<mode> split): Check for an int
+ 	output reg on add insn.
+ 	(<bd>tf_<mode> split): Likewise.  Match predicates with insn.
+ 
+ 2019-02-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* BASE-VER: Set to 8.3.1.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
***************
*** 568,574 ****
  
  	Backport from mainline
  	2018-11-20  Richard Biener  <rguenther@suse.de>
!  
  	PR tree-optimization/88105
  	* tree-ssa-dom.c (pass_dominator::execute): Do not walk
  	backedges.
--- 3691,3697 ----
  
  	Backport from mainline
  	2018-11-20  Richard Biener  <rguenther@suse.de>
! 
  	PR tree-optimization/88105
  	* tree-ssa-dom.c (pass_dominator::execute): Do not walk
  	backedges.
diff -Nrcpad gcc-8.3.0/gcc/DATESTAMP gcc-8.4.0/gcc/DATESTAMP
*** gcc-8.3.0/gcc/DATESTAMP	Fri Feb 22 00:16:15 2019
--- gcc-8.4.0/gcc/DATESTAMP	Wed Mar  4 08:30:00 2020
***************
*** 1 ****
! 20190222
--- 1 ----
! 20200304
diff -Nrcpad gcc-8.3.0/gcc/Makefile.in gcc-8.4.0/gcc/Makefile.in
*** gcc-8.3.0/gcc/Makefile.in	Fri Mar  9 15:24:44 2018
--- gcc-8.4.0/gcc/Makefile.in	Wed Mar  4 08:30:00 2020
*************** endif
*** 1114,1119 ****
--- 1114,1120 ----
  # Support for additional languages (other than C).
  # C can be supported this way too (leave for later).
  
+ LANG_CONFIGUREFRAGS  = @all_lang_configurefrags@
  LANG_MAKEFRAGS = @all_lang_makefrags@
  
  # Used by gcc/jit/Make-lang.in
*************** cstamp-h: config.in config.status
*** 1877,1883 ****
  # Really, really stupid make features, such as SUN's KEEP_STATE, may force
  # a target to build even if it is up-to-date.  So we must verify that
  # config.status does not exist before failing.
! config.status: $(srcdir)/configure $(srcdir)/config.gcc
  	@if [ ! -f config.status ] ; then \
  	  echo You must configure gcc.  Look at http://gcc.gnu.org/install/ for details.; \
  	  false; \
--- 1878,1884 ----
  # Really, really stupid make features, such as SUN's KEEP_STATE, may force
  # a target to build even if it is up-to-date.  So we must verify that
  # config.status does not exist before failing.
! config.status: $(srcdir)/configure $(srcdir)/config.gcc $(LANG_CONFIGUREFRAGS)
  	@if [ ! -f config.status ] ; then \
  	  echo You must configure gcc.  Look at http://gcc.gnu.org/install/ for details.; \
  	  false; \
diff -Nrcpad gcc-8.3.0/gcc/ada/ChangeLog gcc-8.4.0/gcc/ada/ChangeLog
*** gcc-8.3.0/gcc/ada/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/ada/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,115 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2019-11-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/92575
+ 	* expect.c (__gnat_expect_poll [VMS, HPUX]): Fix typo.
+ 
+ 2019-10-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/91995
+ 	* sem_ch8.adb (Chain_Use_Clause): Remove second argument in calls
+ 	to Defining_Entity.
+ 	* sem_elab.adb (Find_Unit_Entity): Likewise.  Deal with N_Subunit
+ 	here in lieu of in Defining_Entity.
+ 	* sem_spark.adb (Check_Callable_Body): Likewise.
+ 	(Check_Package_Body): Likewise.
+ 	* sem_util.ads (Defining_Entity): Remove 2nd and 3th parameters.
+ 	* sem_util.adb (Defining_Entity): Remove 2nd and 3th parameters,
+ 	and adjust accordingly.  Deal with N_Compilation_Unit.
+ 
+ 2019-10-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Really test the
+ 	sign of the value when deciding to build a NEGATE_EXPR.
+ 	<PLUS_EXPR>: Remove redundant line.
+ 	<BIT_AND_EXPR>: Do the negation here.
+ 
+ 2019-09-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Attribute_to_gnu): Test Can_Use_Internal_Rep
+ 	on the underlying type of the node.
+ 	(Call_to_gnu): Likewise with the type of the prefix.
+ 
+ 2019-09-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-07-02  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* libgnat/system-darwin-ppc.ads: Set Stack_Check_Probes True for
+ 	PPC Darwin.
+ 
+ 2019-08-05  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-30  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gnatlink.adb (Link_Step): Push -shared-libgcc explicitly, when it
+ 	is the target default (unless overidden by the static flag).
+ 	When the user has put an instance of shared/static-libgcc do not push
+ 	a duplicate of this.
+ 
+ 2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Beep up comment on SAVED,
+ 	and tweak comment on the assertion about the scopes of Itypes.  Do not
+ 	skip the regular processing for Itypes that are E_Record_Subtype with
+ 	a Cloned_Subtype.  Get the Cloned_Subtype for every E_Record_Subtype
+ 	if the type is dummy and hasn't got its own freeze node.
+ 	<E_Record_Subtype>: Save again the DECL of the Cloned_Subtype, if any.
+ 	<E_Access_Subtype>: Save again the DECL of the equivalent type.
+ 	(Gigi_Equivalent_Type) <E_Access_Subtype>: New case.
+ 
+ 2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (mark_visited_r): Set TYPE_SIZES_GIMPLIFIED on
+ 	the main variant of a type, if any.
+ 
+ 2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (set_nonaliased_component_on_array_type): Add
+ 	missing guard for the presence of TYPE_CANONICAL.
+ 	(set_reverse_storage_order_on_array_type): Likewise.
+ 
+ 2019-06-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	PR ada/80590
+ 	* exp_ch9.adb (Expand_N_Delay_Relative_Statement): Swap the two
+ 	conditions to avoid a unnecessary exception propagation in the default
+ 	case.
+ 
+ 2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (walk_nesting_tree): New static function.
+ 	(finalize_nrv): Use it to walk the entire nesting tree.
+ 
+ 2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (maybe_pad_type): Issue the warning for the
+ 	specific case of component types preferably.
+ 
+ 2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Call_to_gnu): Use the unpadded type when
+ 	putting back an intermediate conversion the type of the actuals.
+ 
+ 2019-05-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* gcc-interface/Makefile.in (install-gcc-specs): Use foreach.
+ 	Honor DESTDIR.
+ 
+ 2019-02-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/89349
+ 	Backport from mainline
+ 	2018-05-25  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* osint.ads (Unknown_Attributes): No longer pretend this is a constant.
+ 	(No_File_Info_Cache): Initialize separately.
+ 	* osint.adb (No_File_Info_Cache): Update initializer.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/gcc/ada/exp_ch9.adb gcc-8.4.0/gcc/ada/exp_ch9.adb
*** gcc-8.3.0/gcc/ada/exp_ch9.adb	Thu Jan 11 08:55:25 2018
--- gcc-8.4.0/gcc/ada/exp_ch9.adb	Wed Mar  4 08:30:00 2020
*************** package body Exp_Ch9 is
*** 8144,8161 ****
        Proc : Entity_Id;
  
     begin
!       --  Try to use System.Relative_Delays.Delay_For only if available. This
!       --  is the implementation used on restricted platforms when Ada.Calendar
!       --  is not available.
  
!       if RTE_Available (RO_RD_Delay_For) then
!          Proc := RTE (RO_RD_Delay_For);
  
!       --  Otherwise, use Ada.Calendar.Delays.Delay_For and emit an error
!       --  message if not available.
  
        else
!          Proc := RTE (RO_CA_Delay_For);
        end if;
  
        Rewrite (N,
--- 8144,8160 ----
        Proc : Entity_Id;
  
     begin
!       --  Try to use Ada.Calendar.Delays.Delay_For if available.
  
!       if RTE_Available (RO_CA_Delay_For) then
!          Proc := RTE (RO_CA_Delay_For);
  
!       --  Otherwise, use System.Relative_Delays.Delay_For and emit an error
!       --  message if not available. This is the implementation used on
!       --  restricted platforms when Ada.Calendar is not available.
  
        else
!          Proc := RTE (RO_RD_Delay_For);
        end if;
  
        Rewrite (N,
diff -Nrcpad gcc-8.3.0/gcc/ada/expect.c gcc-8.4.0/gcc/ada/expect.c
*** gcc-8.3.0/gcc/ada/expect.c	Thu Jan 11 08:55:25 2018
--- gcc-8.4.0/gcc/ada/expect.c	Wed Mar  4 08:30:00 2020
*************** __gnat_expect_poll (int *fd,
*** 265,271 ****
  	  if ((status & 1) != 1)
  	    {
                ready = -1;
!               dead_process = i + 1;
                return ready;
  	    }
  	}
--- 265,271 ----
  	  if ((status & 1) != 1)
  	    {
                ready = -1;
!               *dead_process = i + 1;
                return ready;
  	    }
  	}
*************** __gnat_expect_poll (int *fd,
*** 450,456 ****
  	            if (ei.request == TIOCCLOSE)
  		      {
  		        ioctl (fd[i], TIOCREQSET, &ei);
!                         dead_process = i + 1;
  		        return -1;
  		      }
  
--- 450,456 ----
  	            if (ei.request == TIOCCLOSE)
  		      {
  		        ioctl (fd[i], TIOCREQSET, &ei);
!                         *dead_process = i + 1;
  		        return -1;
  		      }
  
diff -Nrcpad gcc-8.3.0/gcc/ada/gcc-interface/Makefile.in gcc-8.4.0/gcc/ada/gcc-interface/Makefile.in
*** gcc-8.3.0/gcc/ada/gcc-interface/Makefile.in	Wed Mar  7 12:10:24 2018
--- gcc-8.4.0/gcc/ada/gcc-interface/Makefile.in	Wed Mar  4 08:30:00 2020
*************** gnatlink-re: ../stamp-tools gnatmake-re
*** 2285,2293 ****
  install-gcc-specs:
  #	Install all the requested GCC spec files.
  
! 	for f in $(GCC_SPEC_FILES); do \
! 	    $(INSTALL_DATA_DATE) $(srcdir)/ada/$$f $(libsubdir)/; \
! 	done
  
  install-gnatlib: ../stamp-gnatlib-$(RTSDIR) install-gcc-specs
  	$(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
--- 2285,2292 ----
  install-gcc-specs:
  #	Install all the requested GCC spec files.
  
! 	$(foreach f,$(GCC_SPEC_FILES), \
! 	    $(INSTALL_DATA_DATE) $(srcdir)/ada/$(f) $(DESTDIR)$(libsubdir)/;)
  
  install-gnatlib: ../stamp-gnatlib-$(RTSDIR) install-gcc-specs
  	$(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
diff -Nrcpad gcc-8.3.0/gcc/ada/gcc-interface/decl.c gcc-8.4.0/gcc/ada/gcc-interface/decl.c
*** gcc-8.3.0/gcc/ada/gcc-interface/decl.c	Sun Jan 27 18:10:46 2019
--- gcc-8.4.0/gcc/ada/gcc-interface/decl.c	Wed Mar  4 08:30:00 2020
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 295,301 ****
    tree gnu_size = NULL_TREE;
    /* Contains the GCC name to be used for the GCC node.  */
    tree gnu_entity_name;
!   /* True if we have already saved gnu_decl as a GNAT association.  */
    bool saved = false;
    /* True if we incremented defer_incomplete_level.  */
    bool this_deferred = false;
--- 295,304 ----
    tree gnu_size = NULL_TREE;
    /* Contains the GCC name to be used for the GCC node.  */
    tree gnu_entity_name;
!   /* True if we have already saved gnu_decl as a GNAT association.  This can
!      also be used to purposely avoid making such an association but this use
!      case ought not to be applied to types because it can break the deferral
!      mechanism implemented for access types.  */
    bool saved = false;
    /* True if we incremented defer_incomplete_level.  */
    bool this_deferred = false;
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 312,325 ****
  
    /* Since a use of an Itype is a definition, process it as such if it is in
       the main unit, except for E_Access_Subtype because it's actually a use
!      of its base type, and for E_Record_Subtype with cloned subtype because
!      it's actually a use of the cloned subtype, see below.  */
    if (!definition
        && is_type
        && Is_Itype (gnat_entity)
!       && !(kind == E_Access_Subtype
! 	   || (kind == E_Record_Subtype
! 	       && Present (Cloned_Subtype (gnat_entity))))
        && !present_gnu_tree (gnat_entity)
        && In_Extended_Main_Code_Unit (gnat_entity))
      {
--- 315,325 ----
  
    /* Since a use of an Itype is a definition, process it as such if it is in
       the main unit, except for E_Access_Subtype because it's actually a use
!      of its base type, see below.  */
    if (!definition
        && is_type
        && Is_Itype (gnat_entity)
!       && Ekind (gnat_entity) != E_Access_Subtype
        && !present_gnu_tree (gnat_entity)
        && In_Extended_Main_Code_Unit (gnat_entity))
      {
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 362,368 ****
  	}
  
        /* This abort means the Itype has an incorrect scope, i.e. that its
! 	 scope does not correspond to the subprogram it is declared in.  */
        gcc_unreachable ();
      }
  
--- 362,368 ----
  	}
  
        /* This abort means the Itype has an incorrect scope, i.e. that its
! 	 scope does not correspond to the subprogram it is first used in.  */
        gcc_unreachable ();
      }
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 371,377 ****
       In that case, we will abort below when we try to save a new GCC tree
       for this object.  We also need to handle the case of getting a dummy
       type when a Full_View exists but be careful so as not to trigger its
!      premature elaboration.  */
    if ((!definition || (is_type && imported_p))
        && present_gnu_tree (gnat_entity))
      {
--- 371,379 ----
       In that case, we will abort below when we try to save a new GCC tree
       for this object.  We also need to handle the case of getting a dummy
       type when a Full_View exists but be careful so as not to trigger its
!      premature elaboration.  Likewise for a cloned subtype without its own
!      freeze node, which typically happens when a generic gets instantiated
!      on an incomplete or private type.  */
    if ((!definition || (is_type && imported_p))
        && present_gnu_tree (gnat_entity))
      {
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 385,391 ****
  	      || No (Freeze_Node (Full_View (gnat_entity)))))
  	{
  	  gnu_decl
! 	    = gnat_to_gnu_entity (Full_View (gnat_entity), NULL_TREE, false);
  	  save_gnu_tree (gnat_entity, NULL_TREE, false);
  	  save_gnu_tree (gnat_entity, gnu_decl, false);
  	}
--- 387,409 ----
  	      || No (Freeze_Node (Full_View (gnat_entity)))))
  	{
  	  gnu_decl
! 	    = gnat_to_gnu_entity (Full_View (gnat_entity), NULL_TREE,
! 				  false);
! 	  save_gnu_tree (gnat_entity, NULL_TREE, false);
! 	  save_gnu_tree (gnat_entity, gnu_decl, false);
! 	}
! 
!       if (TREE_CODE (gnu_decl) == TYPE_DECL
! 	  && TYPE_IS_DUMMY_P (TREE_TYPE (gnu_decl))
! 	  && Ekind (gnat_entity) == E_Record_Subtype
! 	  && No (Freeze_Node (gnat_entity))
! 	  && Present (Cloned_Subtype (gnat_entity))
! 	  && (present_gnu_tree (Cloned_Subtype (gnat_entity))
! 	      || No (Freeze_Node (Cloned_Subtype (gnat_entity)))))
! 	{
! 	  gnu_decl
! 	    = gnat_to_gnu_entity (Cloned_Subtype (gnat_entity), NULL_TREE,
! 				  false);
  	  save_gnu_tree (gnat_entity, NULL_TREE, false);
  	  save_gnu_tree (gnat_entity, gnu_decl, false);
  	}
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3367,3379 ****
      case E_Record_Subtype:
        /* If Cloned_Subtype is Present it means this record subtype has
  	 identical layout to that type or subtype and we should use
! 	 that GCC type for this one.  The front end guarantees that
  	 the component list is shared.  */
        if (Present (Cloned_Subtype (gnat_entity)))
  	{
  	  gnu_decl = gnat_to_gnu_entity (Cloned_Subtype (gnat_entity),
  					 NULL_TREE, false);
! 	  saved = true;
  	  break;
  	}
  
--- 3385,3397 ----
      case E_Record_Subtype:
        /* If Cloned_Subtype is Present it means this record subtype has
  	 identical layout to that type or subtype and we should use
! 	 that GCC type for this one.  The front-end guarantees that
  	 the component list is shared.  */
        if (Present (Cloned_Subtype (gnat_entity)))
  	{
  	  gnu_decl = gnat_to_gnu_entity (Cloned_Subtype (gnat_entity),
  					 NULL_TREE, false);
! 	  maybe_present = true;
  	  break;
  	}
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3787,3794 ****
      case E_Access_Subtype:
        /* We treat this as identical to its base type; any constraint is
  	 meaningful only to the front-end.  */
!       gnu_decl = gnat_to_gnu_entity (Etype (gnat_entity), NULL_TREE, false);
!       saved = true;
  
        /* The designated subtype must be elaborated as well, if it does
  	 not have its own freeze node.  But designated subtypes created
--- 3805,3812 ----
      case E_Access_Subtype:
        /* We treat this as identical to its base type; any constraint is
  	 meaningful only to the front-end.  */
!       gnu_decl = gnat_to_gnu_entity (gnat_equiv_type, NULL_TREE, false);
!       maybe_present = true;
  
        /* The designated subtype must be elaborated as well, if it does
  	 not have its own freeze node.  But designated subtypes created
*************** Gigi_Equivalent_Type (Entity_Id gnat_ent
*** 4974,4979 ****
--- 4992,5001 ----
  	gnat_equiv = Equivalent_Type (gnat_entity);
        break;
  
+     case E_Access_Subtype:
+       gnat_equiv = Etype (gnat_entity);
+       break;
+ 
      case E_Class_Wide_Type:
        gnat_equiv = Root_Type (gnat_entity);
        break;
*************** static void
*** 6065,6071 ****
  set_nonaliased_component_on_array_type (tree type)
  {
    TYPE_NONALIASED_COMPONENT (type) = 1;
!   TYPE_NONALIASED_COMPONENT (TYPE_CANONICAL (type)) = 1;
  }
  
  /* Set TYPE_REVERSE_STORAGE_ORDER on an array type built by means of
--- 6087,6094 ----
  set_nonaliased_component_on_array_type (tree type)
  {
    TYPE_NONALIASED_COMPONENT (type) = 1;
!   if (TYPE_CANONICAL (type))
!     TYPE_NONALIASED_COMPONENT (TYPE_CANONICAL (type)) = 1;
  }
  
  /* Set TYPE_REVERSE_STORAGE_ORDER on an array type built by means of
*************** static void
*** 6075,6081 ****
  set_reverse_storage_order_on_array_type (tree type)
  {
    TYPE_REVERSE_STORAGE_ORDER (type) = 1;
!   TYPE_REVERSE_STORAGE_ORDER (TYPE_CANONICAL (type)) = 1;
  }
  
  /* Return true if DISCR1 and DISCR2 represent the same discriminant.  */
--- 6098,6105 ----
  set_reverse_storage_order_on_array_type (tree type)
  {
    TYPE_REVERSE_STORAGE_ORDER (type) = 1;
!   if (TYPE_CANONICAL (type))
!     TYPE_REVERSE_STORAGE_ORDER (TYPE_CANONICAL (type)) = 1;
  }
  
  /* Return true if DISCR1 and DISCR2 represent the same discriminant.  */
*************** annotate_value (tree gnu_size)
*** 8083,8091 ****
      {
      case INTEGER_CST:
        /* For negative values, build NEGATE_EXPR of the opposite.  Such values
! 	 can appear for discriminants in expressions for variants.  Note that,
! 	 sizetype being unsigned, we don't directly use tree_int_cst_sgn.  */
!       if (tree_int_cst_sign_bit (gnu_size))
  	{
  	  tree t = wide_int_to_tree (sizetype, -wi::to_wide (gnu_size));
  	  tcode = Negate_Expr;
--- 8107,8114 ----
      {
      case INTEGER_CST:
        /* For negative values, build NEGATE_EXPR of the opposite.  Such values
! 	 can appear for discriminants in expressions for variants.  */
!       if (tree_int_cst_sgn (gnu_size) < 0)
  	{
  	  tree t = wide_int_to_tree (sizetype, -wi::to_wide (gnu_size));
  	  tcode = Negate_Expr;
*************** annotate_value (tree gnu_size)
*** 8163,8171 ****
  	  && tree_int_cst_sign_bit (TREE_OPERAND (gnu_size, 1)))
  	{
  	  tcode = Minus_Expr;
! 	  ops[0] = annotate_value (TREE_OPERAND (gnu_size, 0));
! 	  wide_int op1 = -wi::to_wide (TREE_OPERAND (gnu_size, 1));
! 	  ops[1] = annotate_value (wide_int_to_tree (sizetype, op1));
  	  break;
  	}
  
--- 8186,8193 ----
  	  && tree_int_cst_sign_bit (TREE_OPERAND (gnu_size, 1)))
  	{
  	  tcode = Minus_Expr;
! 	  wide_int wop1 = -wi::to_wide (TREE_OPERAND (gnu_size, 1));
! 	  ops[1] = annotate_value (wide_int_to_tree (sizetype, wop1));
  	  break;
  	}
  
*************** annotate_value (tree gnu_size)
*** 8206,8214 ****
  	 Such values can appear in expressions with aligning patterns.  */
        if (TREE_CODE (TREE_OPERAND (gnu_size, 1)) == INTEGER_CST)
  	{
! 	  wide_int op1 = wi::sext (wi::to_wide (TREE_OPERAND (gnu_size, 1)),
! 				   TYPE_PRECISION (sizetype));
! 	  ops[1] = annotate_value (wide_int_to_tree (sizetype, op1));
  	}
        break;
  
--- 8228,8236 ----
  	 Such values can appear in expressions with aligning patterns.  */
        if (TREE_CODE (TREE_OPERAND (gnu_size, 1)) == INTEGER_CST)
  	{
! 	  wide_int wop1 = -wi::to_wide (TREE_OPERAND (gnu_size, 1));
! 	  tree op1 = wide_int_to_tree (sizetype, wop1);
! 	  ops[1] = annotate_value (build1 (NEGATE_EXPR, sizetype, op1));
  	}
        break;
  
diff -Nrcpad gcc-8.3.0/gcc/ada/gcc-interface/trans.c gcc-8.4.0/gcc/ada/gcc-interface/trans.c
*** gcc-8.3.0/gcc/ada/gcc-interface/trans.c	Fri Feb  8 11:07:36 2019
--- gcc-8.4.0/gcc/ada/gcc-interface/trans.c	Wed Mar  4 08:30:00 2020
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 1720,1751 ****
        /* For other address attributes applied to a nested function,
  	 find an inner ADDR_EXPR and annotate it so that we can issue
  	 a useful warning with -Wtrampolines.  */
!       else if (TREE_CODE (TREE_TYPE (gnu_prefix)) == FUNCTION_TYPE)
  	{
! 	  gnu_expr = remove_conversions (gnu_result, false);
! 
! 	  if (TREE_CODE (gnu_expr) == ADDR_EXPR
! 	      && decl_function_context (TREE_OPERAND (gnu_expr, 0)))
! 	    {
! 	      set_expr_location_from_node (gnu_expr, gnat_node);
  
! 	      /* Also check the inlining status.  */
! 	      check_inlining_for_nested_subprog (TREE_OPERAND (gnu_expr, 0));
  
! 	      /* Moreover, for 'Access or 'Unrestricted_Access with non-
! 		 foreign-compatible representation, mark the ADDR_EXPR so
! 		 that we can build a descriptor instead of a trampoline.  */
! 	      if ((attribute == Attr_Access
! 		   || attribute == Attr_Unrestricted_Access)
! 		  && targetm.calls.custom_function_descriptors > 0
! 		  && Can_Use_Internal_Rep (Etype (gnat_node)))
! 		FUNC_ADDR_BY_DESCRIPTOR (gnu_expr) = 1;
  
! 	      /* Otherwise, we need to check that we are not violating the
! 		 No_Implicit_Dynamic_Code restriction.  */
! 	      else if (targetm.calls.custom_function_descriptors != 0)
! 	        Check_Implicit_Dynamic_Code_Allowed (gnat_node);
! 	    }
  	}
        break;
  
--- 1720,1748 ----
        /* For other address attributes applied to a nested function,
  	 find an inner ADDR_EXPR and annotate it so that we can issue
  	 a useful warning with -Wtrampolines.  */
!       else if (TREE_CODE (TREE_TYPE (gnu_prefix)) == FUNCTION_TYPE
! 	       && (gnu_expr = remove_conversions (gnu_result, false))
! 	       && TREE_CODE (gnu_expr) == ADDR_EXPR
! 	       && decl_function_context (TREE_OPERAND (gnu_expr, 0)))
  	{
! 	  set_expr_location_from_node (gnu_expr, gnat_node);
  
! 	  /* Also check the inlining status.  */
! 	  check_inlining_for_nested_subprog (TREE_OPERAND (gnu_expr, 0));
  
! 	  /* Moreover, for 'Access or 'Unrestricted_Access with non-
! 	     foreign-compatible representation, mark the ADDR_EXPR so
! 	     that we can build a descriptor instead of a trampoline.  */
! 	  if ((attribute == Attr_Access
! 	       || attribute == Attr_Unrestricted_Access)
! 	      && targetm.calls.custom_function_descriptors > 0
! 	      && Can_Use_Internal_Rep (Underlying_Type (Etype (gnat_node))))
! 	    FUNC_ADDR_BY_DESCRIPTOR (gnu_expr) = 1;
  
! 	  /* Otherwise, we need to check that we are not violating the
! 	     No_Implicit_Dynamic_Code restriction.  */
! 	  else if (targetm.calls.custom_function_descriptors != 0)
! 	    Check_Implicit_Dynamic_Code_Allowed (gnat_node);
  	}
        break;
  
*************** finalize_nrv_unc_r (tree *tp, int *walk_
*** 3534,3539 ****
--- 3531,3550 ----
    return NULL_TREE;
  }
  
+ /* Apply FUNC to all the sub-trees of nested functions in NODE.  FUNC is called
+    with the DATA and the address of each sub-tree.  If FUNC returns a non-NULL
+    value, the traversal is stopped.  */
+ 
+ static void
+ walk_nesting_tree (struct cgraph_node *node, walk_tree_fn func, void *data)
+ {
+   for (node = node->nested; node; node = node->next_nested)
+     {
+       walk_tree_without_duplicates (&DECL_SAVED_TREE (node->decl), func, data);
+       walk_nesting_tree (node, func, data);
+     }
+ }
+ 
  /* Finalize the Named Return Value optimization for FNDECL.  The NRV bitmap
     contains the candidates for Named Return Value and OTHER is a list of
     the other return values.  GNAT_RET is a representative return node.  */
*************** finalize_nrv_unc_r (tree *tp, int *walk_
*** 3541,3547 ****
  static void
  finalize_nrv (tree fndecl, bitmap nrv, vec<tree, va_gc> *other, Node_Id gnat_ret)
  {
-   struct cgraph_node *node;
    struct nrv_data data;
    walk_tree_fn func;
    unsigned int i;
--- 3552,3557 ----
*************** finalize_nrv (tree fndecl, bitmap nrv, v
*** 3562,3571 ****
      return;
  
    /* Prune also the candidates that are referenced by nested functions.  */
!   node = cgraph_node::get_create (fndecl);
!   for (node = node->nested; node; node = node->next_nested)
!     walk_tree_without_duplicates (&DECL_SAVED_TREE (node->decl), prune_nrv_r,
! 				  &data);
    if (bitmap_empty_p (nrv))
      return;
  
--- 3572,3578 ----
      return;
  
    /* Prune also the candidates that are referenced by nested functions.  */
!   walk_nesting_tree (cgraph_node::get_create (fndecl), prune_nrv_r, &data);
    if (bitmap_empty_p (nrv))
      return;
  
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 4308,4314 ****
        /* If the access type doesn't require foreign-compatible representation,
  	 be prepared for descriptors.  */
        if (targetm.calls.custom_function_descriptors > 0
! 	  && Can_Use_Internal_Rep (Etype (Prefix (Name (gnat_node)))))
  	by_descriptor = true;
      }
    else if (Nkind (Name (gnat_node)) == N_Attribute_Reference)
--- 4315,4322 ----
        /* If the access type doesn't require foreign-compatible representation,
  	 be prepared for descriptors.  */
        if (targetm.calls.custom_function_descriptors > 0
! 	  && Can_Use_Internal_Rep
! 	     (Underlying_Type (Etype (Prefix (Name (gnat_node))))))
  	by_descriptor = true;
      }
    else if (Nkind (Name (gnat_node)) == N_Attribute_Reference)
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 4575,4581 ****
  	 since the parent is a procedure call, so put it back here.  Note that
  	 we might have a dummy type here if the actual is the dereference of a
  	 pointer to it, but that's OK if the formal is passed by reference.  */
!       tree gnu_actual_type = gnat_to_gnu_type (Etype (gnat_actual));
        if (TYPE_IS_DUMMY_P (gnu_actual_type))
  	gcc_assert (is_true_formal_parm && DECL_BY_REF_P (gnu_formal));
        else if (suppress_type_conversion
--- 4583,4589 ----
  	 since the parent is a procedure call, so put it back here.  Note that
  	 we might have a dummy type here if the actual is the dereference of a
  	 pointer to it, but that's OK if the formal is passed by reference.  */
!       tree gnu_actual_type = get_unpadded_type (Etype (gnat_actual));
        if (TYPE_IS_DUMMY_P (gnu_actual_type))
  	gcc_assert (is_true_formal_parm && DECL_BY_REF_P (gnu_formal));
        else if (suppress_type_conversion
*************** mark_visited_r (tree *tp, int *walk_subt
*** 8167,8174 ****
    else if (!TYPE_IS_DUMMY_P (t))
      TREE_VISITED (t) = 1;
  
    if (TYPE_P (t))
!     TYPE_SIZES_GIMPLIFIED (t) = 1;
  
    return NULL_TREE;
  }
--- 8175,8183 ----
    else if (!TYPE_IS_DUMMY_P (t))
      TREE_VISITED (t) = 1;
  
+   /* The test in gimplify_type_sizes is on the main variant.  */
    if (TYPE_P (t))
!     TYPE_SIZES_GIMPLIFIED (TYPE_MAIN_VARIANT (t)) = 1;
  
    return NULL_TREE;
  }
diff -Nrcpad gcc-8.3.0/gcc/ada/gcc-interface/utils.c gcc-8.4.0/gcc/ada/gcc-interface/utils.c
*** gcc-8.3.0/gcc/ada/gcc-interface/utils.c	Fri Feb  8 11:20:57 2019
--- gcc-8.4.0/gcc/ada/gcc-interface/utils.c	Wed Mar  4 08:30:00 2020
*************** built:
*** 1519,1532 ****
  	 generated for some other corresponding source entity.  */
        if (Comes_From_Source (gnat_entity))
  	{
! 	  if (Present (gnat_error_node))
! 	    post_error_ne_tree ("{^ }bits of & unused?",
! 				gnat_error_node, gnat_entity,
! 				size_diffop (size, orig_size));
! 	  else if (is_component_type)
  	    post_error_ne_tree ("component of& padded{ by ^ bits}?",
  				gnat_entity, gnat_entity,
  				size_diffop (size, orig_size));
  	}
      }
  
--- 1519,1532 ----
  	 generated for some other corresponding source entity.  */
        if (Comes_From_Source (gnat_entity))
  	{
! 	  if (is_component_type)
  	    post_error_ne_tree ("component of& padded{ by ^ bits}?",
  				gnat_entity, gnat_entity,
  				size_diffop (size, orig_size));
+ 	  else if (Present (gnat_error_node))
+ 	    post_error_ne_tree ("{^ }bits of & unused?",
+ 				gnat_error_node, gnat_entity,
+ 				size_diffop (size, orig_size));
  	}
      }
  
diff -Nrcpad gcc-8.3.0/gcc/ada/gnatlink.adb gcc-8.4.0/gcc/ada/gnatlink.adb
*** gcc-8.3.0/gcc/ada/gnatlink.adb	Fri Mar 23 23:20:59 2018
--- gcc-8.4.0/gcc/ada/gnatlink.adb	Wed Mar  4 08:30:00 2020
*************** begin
*** 1882,1887 ****
--- 1882,1888 ----
        Clean_Link_Option_Set : declare
           J                  : Natural;
           Shared_Libgcc_Seen : Boolean := False;
+          Static_Libgcc_Seen : Boolean := False;
  
        begin
           J := Linker_Options.First;
*************** begin
*** 1903,1909 ****
                 end if;
              end if;
  
!             --  Remove duplicate -shared-libgcc switch
  
              if Linker_Options.Table (J).all = Shared_Libgcc_String then
                 if Shared_Libgcc_Seen then
--- 1904,1910 ----
                 end if;
              end if;
  
!             --  Remove duplicate -shared-libgcc switches
  
              if Linker_Options.Table (J).all = Shared_Libgcc_String then
                 if Shared_Libgcc_Seen then
*************** begin
*** 1917,1922 ****
--- 1918,1937 ----
                 end if;
              end if;
  
+             --  Remove duplicate -static-libgcc switches
+ 
+             if Linker_Options.Table (J).all = Static_Libgcc_String then
+                if Static_Libgcc_Seen then
+                   Linker_Options.Table (J .. Linker_Options.Last - 1) :=
+                     Linker_Options.Table (J + 1 .. Linker_Options.Last);
+                   Linker_Options.Decrement_Last;
+                   Num_Args := Num_Args - 1;
+ 
+                else
+                   Static_Libgcc_Seen := True;
+                end if;
+             end if;
+ 
              --  Here we just check for a canonical form that matches the
              --  pragma Linker_Options set in the NT runtime.
  
*************** begin
*** 1948,1961 ****
--- 1963,1989 ----
              --  libgcc, if gcc is not called with -shared-libgcc, call it
              --  with -static-libgcc, as there are some platforms where one
              --  of these two switches is compulsory to link.
+             --  Don't push extra switches if we already saw one.
  
              if Shared_Libgcc_Default = 'T'
                and then not Shared_Libgcc_Seen
+               and then not Static_Libgcc_Seen
              then
                 Linker_Options.Increment_Last;
                 Linker_Options.Table (Linker_Options.Last) := Static_Libgcc;
                 Num_Args := Num_Args + 1;
              end if;
+ 
+             --  Likewise, the reverse.
+ 
+             if Shared_Libgcc_Default = 'H'
+               and then not Static_Libgcc_Seen
+               and then not Shared_Libgcc_Seen
+             then
+                Linker_Options.Increment_Last;
+                Linker_Options.Table (Linker_Options.Last) := Shared_Libgcc;
+                Num_Args := Num_Args + 1;
+             end if;
           end if;
        end Clean_Link_Option_Set;
  
diff -Nrcpad gcc-8.3.0/gcc/ada/libgnat/system-darwin-ppc.ads gcc-8.4.0/gcc/ada/libgnat/system-darwin-ppc.ads
*** gcc-8.3.0/gcc/ada/libgnat/system-darwin-ppc.ads	Thu Jan 11 08:55:25 2018
--- gcc-8.4.0/gcc/ada/libgnat/system-darwin-ppc.ads	Wed Mar  4 08:30:00 2020
*************** private
*** 158,164 ****
     Preallocated_Stacks       : constant Boolean := False;
     Signed_Zeros              : constant Boolean := True;
     Stack_Check_Default       : constant Boolean := False;
!    Stack_Check_Probes        : constant Boolean := False;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Atomic_Primitives : constant Boolean := Word_Size = 64;
--- 158,164 ----
     Preallocated_Stacks       : constant Boolean := False;
     Signed_Zeros              : constant Boolean := True;
     Stack_Check_Default       : constant Boolean := False;
!    Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Atomic_Primitives : constant Boolean := Word_Size = 64;
diff -Nrcpad gcc-8.3.0/gcc/ada/osint.adb gcc-8.4.0/gcc/ada/osint.adb
*** gcc-8.3.0/gcc/ada/osint.adb	Thu Jan 11 08:55:25 2018
--- gcc-8.4.0/gcc/ada/osint.adb	Wed Mar  4 08:30:00 2020
*************** package body Osint is
*** 250,257 ****
        Attr : aliased File_Attributes;
     end record;
  
!    No_File_Info_Cache : constant File_Info_Cache :=
!                           (No_File, Unknown_Attributes);
  
     package File_Name_Hash_Table is new GNAT.HTable.Simple_HTable (
       Header_Num => File_Hash_Num,
--- 250,256 ----
        Attr : aliased File_Attributes;
     end record;
  
!    No_File_Info_Cache : constant File_Info_Cache := (No_File, (others => 0));
  
     package File_Name_Hash_Table is new GNAT.HTable.Simple_HTable (
       Header_Num => File_Hash_Num,
diff -Nrcpad gcc-8.3.0/gcc/ada/osint.ads gcc-8.4.0/gcc/ada/osint.ads
*** gcc-8.3.0/gcc/ada/osint.ads	Thu Jan 11 08:55:25 2018
--- gcc-8.4.0/gcc/ada/osint.ads	Wed Mar  4 08:30:00 2020
*************** package Osint is
*** 255,264 ****
     --  from the disk and then cached in the File_Attributes parameter (possibly
     --  along with other values).
  
!    type File_Attributes is private;
!    Unknown_Attributes : constant File_Attributes;
     --  A cache for various attributes for a file (length, accessibility,...)
!    --  This must be initialized to Unknown_Attributes prior to the first call.
  
     function Is_Directory
       (Name : C_File_Name;
--- 255,280 ----
     --  from the disk and then cached in the File_Attributes parameter (possibly
     --  along with other values).
  
!    File_Attributes_Size : constant Natural := 32;
!    --  This should be big enough to fit a "struct file_attributes" on any
!    --  system. It doesn't cause any malfunction if it is too big (which avoids
!    --  the need for either mapping the struct exactly or importing the sizeof
!    --  from C, which would result in dynamic code). However, it does waste
!    --  space (e.g. when a component of this type appears in a record, if it is
!    --  unnecessarily large). Note: for runtime units, use System.OS_Constants.
!    --  SIZEOF_struct_file_attributes instead, which has the exact value.
! 
!    type File_Attributes is
!      array (1 .. File_Attributes_Size)
!        of System.Storage_Elements.Storage_Element;
!    for File_Attributes'Alignment use Standard'Maximum_Alignment;
! 
!    Unknown_Attributes : File_Attributes;
     --  A cache for various attributes for a file (length, accessibility,...)
!    --  Will be initialized properly at elaboration (for efficiency later on,
!    --  avoid function calls every time we want to reset the attributes) prior
!    --  to the first usage. We cannot make it constant since the compiler may
!    --  put it in a read-only section.
  
     function Is_Directory
       (Name : C_File_Name;
*************** private
*** 754,775 ****
     --  detected, the file being written is deleted, and a fatal error is
     --  signalled.
  
-    File_Attributes_Size : constant Natural := 32;
-    --  This should be big enough to fit a "struct file_attributes" on any
-    --  system. It doesn't cause any malfunction if it is too big (which avoids
-    --  the need for either mapping the struct exactly or importing the sizeof
-    --  from C, which would result in dynamic code). However, it does waste
-    --  space (e.g. when a component of this type appears in a record, if it is
-    --  unnecessarily large). Note: for runtime units, use System.OS_Constants.
-    --  SIZEOF_struct_file_attributes instead, which has the exact value.
- 
-    type File_Attributes is
-      array (1 .. File_Attributes_Size)
-        of System.Storage_Elements.Storage_Element;
-    for File_Attributes'Alignment use Standard'Maximum_Alignment;
- 
-    Unknown_Attributes : constant File_Attributes := (others => 0);
-    --  Will be initialized properly at elaboration (for efficiency later on,
-    --  avoid function calls every time we want to reset the attributes).
- 
  end Osint;
--- 770,773 ----
diff -Nrcpad gcc-8.3.0/gcc/ada/sem_ch8.adb gcc-8.4.0/gcc/ada/sem_ch8.adb
*** gcc-8.3.0/gcc/ada/sem_ch8.adb	Thu Jan 11 08:55:25 2018
--- gcc-8.4.0/gcc/ada/sem_ch8.adb	Wed Mar  4 08:30:00 2020
*************** package body Sem_Ch8 is
*** 4259,4274 ****
  
        --  Common case for compilation unit
  
!       elsif Defining_Entity (N               => Parent (N),
!                              Empty_On_Errors => True) = Current_Scope
!       then
           null;
  
        else
           --  If declaration appears in some other scope, it must be in some
           --  parent unit when compiling a child.
  
!          Pack := Defining_Entity (Parent (N), Empty_On_Errors => True);
  
           if not In_Open_Scopes (Pack) then
              null;
--- 4259,4272 ----
  
        --  Common case for compilation unit
  
!       elsif Defining_Entity (Parent (N)) = Current_Scope then
           null;
  
        else
           --  If declaration appears in some other scope, it must be in some
           --  parent unit when compiling a child.
  
!          Pack := Defining_Entity (Parent (N));
  
           if not In_Open_Scopes (Pack) then
              null;
diff -Nrcpad gcc-8.3.0/gcc/ada/sem_elab.adb gcc-8.4.0/gcc/ada/sem_elab.adb
*** gcc-8.3.0/gcc/ada/sem_elab.adb	Thu Jan 11 08:55:25 2018
--- gcc-8.4.0/gcc/ada/sem_elab.adb	Wed Mar  4 08:30:00 2020
*************** package body Sem_Elab is
*** 5544,5556 ****
                                     N_Procedure_Instantiation)
          and then Nkind (Context) = N_Compilation_Unit
        then
!          return
!            Related_Instance (Defining_Entity (N, Concurrent_Subunit => True));
  
        --  Otherwise the proper entity is the defining entity
  
        else
!          return Defining_Entity (N, Concurrent_Subunit => True);
        end if;
     end Find_Unit_Entity;
  
--- 5544,5566 ----
                                     N_Procedure_Instantiation)
          and then Nkind (Context) = N_Compilation_Unit
        then
!          return Related_Instance (Defining_Entity (N));
! 
!       --  The unit denotes a concurrent body acting as a subunit. Such bodies
!       --  are generally rewritten into null statements. The proper entity is
!       --  that of the "original node".
! 
!       elsif Nkind (N) = N_Subunit
!         and then Nkind (Proper_Body (N)) = N_Null_Statement
!         and then Nkind_In (Original_Node (Proper_Body (N)), N_Protected_Body,
!                                                             N_Task_Body)
!       then
!          return Defining_Entity (Original_Node (Proper_Body (N)));
  
        --  Otherwise the proper entity is the defining entity
  
        else
!          return Defining_Entity (N);
        end if;
     end Find_Unit_Entity;
  
diff -Nrcpad gcc-8.3.0/gcc/ada/sem_spark.adb gcc-8.4.0/gcc/ada/sem_spark.adb
*** gcc-8.3.0/gcc/ada/sem_spark.adb	Thu Jan 11 08:55:25 2018
--- gcc-8.4.0/gcc/ada/sem_spark.adb	Wed Mar  4 08:30:00 2020
*************** package body Sem_SPARK is
*** 971,977 ****
  
        if Present (SPARK_Pragma (Defining_Entity (Body_N))) then
           if Get_SPARK_Mode_From_Annotation
!            (SPARK_Pragma (Defining_Entity (Body_N, False))) /= Opt.On
           then
              return;
           end if;
--- 971,977 ----
  
        if Present (SPARK_Pragma (Defining_Entity (Body_N))) then
           if Get_SPARK_Mode_From_Annotation
!            (SPARK_Pragma (Defining_Entity (Body_N))) /= Opt.On
           then
              return;
           end if;
*************** package body Sem_SPARK is
*** 2379,2385 ****
        CorSp : Node_Id;
  
     begin
!       if Present (SPARK_Pragma (Defining_Entity (Pack, False))) then
           if Get_SPARK_Mode_From_Annotation
             (SPARK_Pragma (Defining_Entity (Pack))) /= Opt.On
           then
--- 2379,2385 ----
        CorSp : Node_Id;
  
     begin
!       if Present (SPARK_Pragma (Defining_Entity (Pack))) then
           if Get_SPARK_Mode_From_Annotation
             (SPARK_Pragma (Defining_Entity (Pack))) /= Opt.On
           then
diff -Nrcpad gcc-8.3.0/gcc/ada/sem_util.adb gcc-8.4.0/gcc/ada/sem_util.adb
*** gcc-8.3.0/gcc/ada/sem_util.adb	Thu Jan 11 08:55:57 2018
--- gcc-8.4.0/gcc/ada/sem_util.adb	Wed Mar  4 08:30:00 2020
*************** package body Sem_Util is
*** 5714,5724 ****
     -- Defining_Entity --
     ---------------------
  
!    function Defining_Entity
!      (N                  : Node_Id;
!       Empty_On_Errors    : Boolean := False;
!       Concurrent_Subunit : Boolean := False) return Entity_Id
!    is
     begin
        case Nkind (N) is
           when N_Abstract_Subprogram_Declaration
--- 5714,5720 ----
     -- Defining_Entity --
     ---------------------
  
!    function Defining_Entity (N : Node_Id) return Entity_Id is
     begin
        case Nkind (N) is
           when N_Abstract_Subprogram_Declaration
*************** package body Sem_Util is
*** 5769,5792 ****
           =>
              return Defining_Identifier (N);
  
!          when N_Subunit =>
!             declare
!                Bod      : constant Node_Id := Proper_Body (N);
!                Orig_Bod : constant Node_Id := Original_Node (Bod);
! 
!             begin
!                --  Retrieve the entity of the original protected or task body
!                --  if requested by the caller.
  
!                if Concurrent_Subunit
!                  and then Nkind (Bod) = N_Null_Statement
!                  and then Nkind_In (Orig_Bod, N_Protected_Body, N_Task_Body)
!                then
!                   return Defining_Entity (Orig_Bod);
!                else
!                   return Defining_Entity (Bod);
!                end if;
!             end;
  
           when N_Function_Instantiation
              | N_Function_Specification
--- 5765,5775 ----
           =>
              return Defining_Identifier (N);
  
!          when N_Compilation_Unit =>
!             return Defining_Entity (Unit (N));
  
!          when N_Subunit =>
!             return Defining_Entity (Proper_Body (N));
  
           when N_Function_Instantiation
              | N_Function_Specification
*************** package body Sem_Util is
*** 5812,5825 ****
                 --  can continue semantic analysis.
  
                 elsif Nam = Error then
!                   if Empty_On_Errors then
!                      return Empty;
!                   else
!                      Err := Make_Temporary (Sloc (N), 'T');
!                      Set_Defining_Unit_Name (N, Err);
  
!                      return Err;
!                   end if;
  
                 --  If not an entity, get defining identifier
  
--- 5795,5804 ----
                 --  can continue semantic analysis.
  
                 elsif Nam = Error then
!                   Err := Make_Temporary (Sloc (N), 'T');
!                   Set_Defining_Unit_Name (N, Err);
  
!                   return Err;
  
                 --  If not an entity, get defining identifier
  
*************** package body Sem_Util is
*** 5834,5844 ****
              return Entity (Identifier (N));
  
           when others =>
!             if Empty_On_Errors then
!                return Empty;
!             else
!                raise Program_Error;
!             end if;
        end case;
     end Defining_Entity;
  
--- 5813,5819 ----
              return Entity (Identifier (N));
  
           when others =>
!             raise Program_Error;
        end case;
     end Defining_Entity;
  
diff -Nrcpad gcc-8.3.0/gcc/ada/sem_util.ads gcc-8.4.0/gcc/ada/sem_util.ads
*** gcc-8.3.0/gcc/ada/sem_util.ads	Thu Jan 11 08:55:57 2018
--- gcc-8.4.0/gcc/ada/sem_util.ads	Wed Mar  4 08:30:00 2020
*************** package Sem_Util is
*** 543,552 ****
     --  in the case of a descendant of a generic formal type (returns Int'Last
     --  instead of 0).
  
!    function Defining_Entity
!      (N                  : Node_Id;
!       Empty_On_Errors    : Boolean := False;
!       Concurrent_Subunit : Boolean := False) return Entity_Id;
     --  Given a declaration N, returns the associated defining entity. If the
     --  declaration has a specification, the entity is obtained from the
     --  specification. If the declaration has a defining unit name, then the
--- 543,549 ----
     --  in the case of a descendant of a generic formal type (returns Int'Last
     --  instead of 0).
  
!    function Defining_Entity (N : Node_Id) return Entity_Id;
     --  Given a declaration N, returns the associated defining entity. If the
     --  declaration has a specification, the entity is obtained from the
     --  specification. If the declaration has a defining unit name, then the
*************** package Sem_Util is
*** 557,578 ****
     --  local entities declared during loop expansion. These entities need
     --  debugging information, generated through Qualify_Entity_Names, and
     --  the loop declaration must be placed in the table Name_Qualify_Units.
-    --
-    --  Set flag Empty_On_Error to change the behavior of this routine as
-    --  follows:
-    --
-    --    * True  - A declaration that lacks a defining entity returns Empty.
-    --      A node that does not allow for a defining entity returns Empty.
-    --
-    --    * False - A declaration that lacks a defining entity is given a new
-    --      internally generated entity which is subsequently returned. A node
-    --      that does not allow for a defining entity raises Program_Error.
-    --
-    --  The former semantics is appropriate for the back end; the latter
-    --  semantics is appropriate for the front end.
-    --
-    --  Set flag Concurrent_Subunit to handle rewritings of concurrent bodies
-    --  which act as subunits. Such bodies are generally rewritten as null.
  
     function Denotes_Discriminant
       (N                : Node_Id;
--- 554,559 ----
diff -Nrcpad gcc-8.3.0/gcc/alias.c gcc-8.4.0/gcc/alias.c
*** gcc-8.3.0/gcc/alias.c	Fri Apr  6 08:30:52 2018
--- gcc-8.4.0/gcc/alias.c	Wed Mar  4 08:30:00 2020
*************** record_alias_subset (alias_set_type supe
*** 1194,1208 ****
      }
  }
  
! /* Record that component types of TYPE, if any, are part of that type for
     aliasing purposes.  For record types, we only record component types
     for fields that are not marked non-addressable.  For array types, we
     only record the component type if it is not marked non-aliased.  */
  
  void
! record_component_aliases (tree type)
  {
-   alias_set_type superset = get_alias_set (type);
    tree field;
  
    if (superset == 0)
--- 1194,1207 ----
      }
  }
  
! /* Record that component types of TYPE, if any, are part of SUPERSET for
     aliasing purposes.  For record types, we only record component types
     for fields that are not marked non-addressable.  For array types, we
     only record the component type if it is not marked non-aliased.  */
  
  void
! record_component_aliases (tree type, alias_set_type superset)
  {
    tree field;
  
    if (superset == 0)
*************** record_component_aliases (tree type)
*** 1252,1258 ****
  				       == get_alias_set (TREE_TYPE (field)));
  	      }
  
! 	    record_alias_subset (superset, get_alias_set (t));
  	  }
        break;
  
--- 1251,1271 ----
  				       == get_alias_set (TREE_TYPE (field)));
  	      }
  
! 	    alias_set_type set = get_alias_set (t);
! 	    record_alias_subset (superset, set);
! 	    /* If the field has alias-set zero make sure to still record
! 	       any componets of it.  This makes sure that for
! 		 struct A {
! 		   struct B {
! 		     int i;
! 		     char c[4];
! 		   } b;
! 		 };
! 	       in C++ even though 'B' has alias-set zero because
! 	       TYPE_TYPELESS_STORAGE is set, 'A' has the alias-set of
! 	       'int' as subset.  */
! 	    if (set == 0)
! 	      record_component_aliases (t, superset);
  	  }
        break;
  
*************** record_component_aliases (tree type)
*** 1268,1273 ****
--- 1281,1299 ----
      }
  }
  
+ /* Record that component types of TYPE, if any, are part of that type for
+    aliasing purposes.  For record types, we only record component types
+    for fields that are not marked non-addressable.  For array types, we
+    only record the component type if it is not marked non-aliased.  */
+ 
+ void
+ record_component_aliases (tree type)
+ {
+   alias_set_type superset = get_alias_set (type);
+   record_component_aliases (type, superset);
+ }
+ 
+ 
  /* Allocate an alias set for use in storing and reading from the varargs
     spill area.  */
  
diff -Nrcpad gcc-8.3.0/gcc/attribs.c gcc-8.4.0/gcc/attribs.c
*** gcc-8.3.0/gcc/attribs.c	Thu Feb  7 14:26:06 2019
--- gcc-8.4.0/gcc/attribs.c	Wed Mar  4 08:30:00 2020
*************** handle_dll_attribute (tree * pnode, tree
*** 1685,1692 ****
  	     a function global scope, unless declared static.  */
  	  if (current_function_decl != NULL_TREE && !TREE_STATIC (node))
  	    TREE_PUBLIC (node) = 1;
! 	  /* Clear TREE_STATIC because DECL_EXTERNAL is set.  */
! 	  TREE_STATIC (node) = 0;
  	}
  
        if (*no_add_attrs == false)
--- 1685,1695 ----
  	     a function global scope, unless declared static.  */
  	  if (current_function_decl != NULL_TREE && !TREE_STATIC (node))
  	    TREE_PUBLIC (node) = 1;
! 	  /* Clear TREE_STATIC because DECL_EXTERNAL is set, unless
! 	     it is a C++ static data member.  */
! 	  if (DECL_CONTEXT (node) == NULL_TREE
! 	      || !RECORD_OR_UNION_TYPE_P (DECL_CONTEXT (node)))
! 	    TREE_STATIC (node) = 0;
  	}
  
        if (*no_add_attrs == false)
diff -Nrcpad gcc-8.3.0/gcc/brig/ChangeLog gcc-8.4.0/gcc/brig/ChangeLog
*** gcc-8.3.0/gcc/brig/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/brig/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/gcc/builtins.c gcc-8.4.0/gcc/builtins.c
*** gcc-8.3.0/gcc/builtins.c	Tue Apr 17 20:22:50 2018
--- gcc-8.4.0/gcc/builtins.c	Wed Mar  4 08:30:00 2020
*************** expand_builtin_int_roundingfn (tree exp,
*** 2560,2566 ****
    tree arg;
  
    if (!validate_arglist (exp, REAL_TYPE, VOID_TYPE))
!     gcc_unreachable ();
  
    arg = CALL_EXPR_ARG (exp, 0);
  
--- 2560,2566 ----
    tree arg;
  
    if (!validate_arglist (exp, REAL_TYPE, VOID_TYPE))
!     return NULL_RTX;
  
    arg = CALL_EXPR_ARG (exp, 0);
  
*************** expand_builtin_int_roundingfn_2 (tree ex
*** 2696,2702 ****
    enum built_in_function fallback_fn = BUILT_IN_NONE;
  
    if (!validate_arglist (exp, REAL_TYPE, VOID_TYPE))
!      gcc_unreachable ();
  
    arg = CALL_EXPR_ARG (exp, 0);
  
--- 2696,2702 ----
    enum built_in_function fallback_fn = BUILT_IN_NONE;
  
    if (!validate_arglist (exp, REAL_TYPE, VOID_TYPE))
!     return NULL_RTX;
  
    arg = CALL_EXPR_ARG (exp, 0);
  
*************** maybe_emit_sprintf_chk_warning (tree exp
*** 10088,10093 ****
--- 10088,10096 ----
  static void
  maybe_emit_free_warning (tree exp)
  {
+   if (call_expr_nargs (exp) != 1)
+     return;
+ 
    tree arg = CALL_EXPR_ARG (exp, 0);
  
    STRIP_NOPS (arg);
diff -Nrcpad gcc-8.3.0/gcc/c/ChangeLog gcc-8.4.0/gcc/c/ChangeLog
*** gcc-8.3.0/gcc/c/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/c/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,109 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2020-02-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2020-02-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/93576
+ 	* c-decl.c (grokdeclarator): If this_size_varies, only push size into
+ 	*expr if it has side effects.
+ 
+ 2020-01-22  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	Backport from mainline:
+ 	2020-01-22  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	PR c/93348
+ 	* c-typeck.c (build_c_cast): Call remove_c_maybe_const_expr on
+ 	argument with integer operands.
+ 
+ 2020-01-15  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	Backport from mainline:
+ 	2020-01-15  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	PR c/93072
+ 	* c-decl.c (pushdecl): Use TREE_PUBLIC, not DECL_EXTERNAL, to
+ 	determine whether to set DECL_CONTEXT.
+ 
+ 2020-01-14  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	Backport from mainline:
+ 	2020-01-13  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	PR c/93241
+ 	* c-typeck.c (build_c_cast): Check for expressions with integer
+ 	operands that can occur in an unevaluated part of an integer
+ 	constant expression and call note_integer_operands as needed.
+ 
+ 2019-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-08-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/91401
+ 	* c-parser.c (c_parser_omp_clause_dist_schedule): Fix up typos in the
+ 	check_no_duplicate_clause call.  Comment it out, instead emit a
+ 	warning for duplicate dist_schedule clauses.
+ 
+ 2019-09-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-08-23  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR pch/61250
+ 	* c-parser.c (c_parse_file): Call c_common_no_more_pch ()
+ 	after determining that the first token is not
+ 	PRAGMA_GCC_PCH_PREPROCESS.
+ 
+ 2019-08-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-04-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/90197
+ 	* c-tree.h (c_finish_loop): Add 2 further location_t arguments.
+ 	* c-parser.c (c_parser_while_statement): Adjust c_finish_loop caller.
+ 	(c_parser_do_statement): Likewise.
+ 	(c_parser_for_statement): Likewise.  Formatting fixes.
+ 	* c-typeck.c (c_finish_loop): Add COND_LOCUS and INCR_LOCUS arguments,
+ 	emit DEBUG_BEGIN_STMTs if needed.
+ 
+ 2019-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-07-18  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR c/53633
+ 	* c-decl.c (finish_function): Check targetm.warn_func_return
+ 	before issuing a -Wreturn-type warning.
+ 
+ 2019-04-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-04-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/90108
+ 	* c-decl.c (merge_decls): If remove is main variant and
+ 	DECL_ORIGINAL_TYPE is some other type, remove a DECL_ORIGINAL_TYPE
+ 	variant that has newdecl as TYPE_NAME if any.
+ 
+ 	2019-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/89933
+ 	* c-decl.c (merge_decls): When newdecl's type is its main variant,
+ 	don't try to remove it from the variant list, but instead assert
+ 	it has no variants.
+ 
+ 	2019-03-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/89734
+ 	* c-decl.c (grokdeclarator): Call c_build_qualified_type on function
+ 	return type even if quals_used is 0.  Formatting fixes.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/gcc/c/c-decl.c gcc-8.4.0/gcc/c/c-decl.c
*** gcc-8.3.0/gcc/c/c-decl.c	Tue Jan 15 20:32:00 2019
--- gcc-8.4.0/gcc/c/c-decl.c	Wed Mar  4 08:30:00 2020
*************** merge_decls (tree newdecl, tree olddecl,
*** 2352,2364 ****
        if (TYPE_NAME (TREE_TYPE (newdecl)) == newdecl)
  	{
  	  tree remove = TREE_TYPE (newdecl);
! 	  for (tree t = TYPE_MAIN_VARIANT (remove); ;
! 	       t = TYPE_NEXT_VARIANT (t))
! 	    if (TYPE_NEXT_VARIANT (t) == remove)
! 	      {
! 		TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (remove);
! 		break;
! 	      }
  	}
      }
  
--- 2352,2384 ----
        if (TYPE_NAME (TREE_TYPE (newdecl)) == newdecl)
  	{
  	  tree remove = TREE_TYPE (newdecl);
! 	  if (TYPE_MAIN_VARIANT (remove) == remove)
! 	    {
! 	      gcc_assert (TYPE_NEXT_VARIANT (remove) == NULL_TREE);
! 	      /* If remove is the main variant, no need to remove that
! 		 from the list.  One of the DECL_ORIGINAL_TYPE
! 		 variants, e.g. created for aligned attribute, might still
! 		 refer to the newdecl TYPE_DECL though, so remove that one
! 		 in that case.  */
! 	      if (DECL_ORIGINAL_TYPE (newdecl)
! 		  && DECL_ORIGINAL_TYPE (newdecl) != remove)
! 		for (tree t = TYPE_MAIN_VARIANT (DECL_ORIGINAL_TYPE (newdecl));
! 		     t; t = TYPE_MAIN_VARIANT (t))
! 		  if (TYPE_NAME (TYPE_NEXT_VARIANT (t)) == newdecl)
! 		    {
! 		      TYPE_NEXT_VARIANT (t)
! 			= TYPE_NEXT_VARIANT (TYPE_NEXT_VARIANT (t));
! 		      break;
! 		    }
! 	    }	    
! 	  else
! 	    for (tree t = TYPE_MAIN_VARIANT (remove); ;
! 		 t = TYPE_NEXT_VARIANT (t))
! 	      if (TYPE_NEXT_VARIANT (t) == remove)
! 		{
! 		  TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (remove);
! 		  break;
! 		}
  	}
      }
  
*************** pushdecl (tree x)
*** 2864,2870 ****
       unless they have initializers (which generate code).  */
    if (current_function_decl
        && (!VAR_OR_FUNCTION_DECL_P (x)
! 	  || DECL_INITIAL (x) || !DECL_EXTERNAL (x)))
      DECL_CONTEXT (x) = current_function_decl;
  
    /* Anonymous decls are just inserted in the scope.  */
--- 2884,2890 ----
       unless they have initializers (which generate code).  */
    if (current_function_decl
        && (!VAR_OR_FUNCTION_DECL_P (x)
! 	  || DECL_INITIAL (x) || !TREE_PUBLIC (x)))
      DECL_CONTEXT (x) = current_function_decl;
  
    /* Anonymous decls are just inserted in the scope.  */
*************** grokdeclarator (const struct c_declarato
*** 6207,6217 ****
  		  }
  		if (this_size_varies)
  		  {
! 		    if (*expr)
! 		      *expr = build2 (COMPOUND_EXPR, TREE_TYPE (size),
! 				      *expr, size);
! 		    else
! 		      *expr = size;
  		    *expr_const_operands &= size_maybe_const;
  		  }
  	      }
--- 6227,6240 ----
  		  }
  		if (this_size_varies)
  		  {
! 		    if (TREE_SIDE_EFFECTS (size))
! 		      {
! 			if (*expr)
! 			  *expr = build2 (COMPOUND_EXPR, TREE_TYPE (size),
! 					  *expr, size);
! 			else
! 			  *expr = size;
! 		      }
  		    *expr_const_operands &= size_maybe_const;
  		  }
  	      }
*************** grokdeclarator (const struct c_declarato
*** 6436,6445 ****
  		  quals_used &= TYPE_QUAL_ATOMIC;
  		if (quals_used && VOID_TYPE_P (type) && really_funcdef)
  		  pedwarn (specs_loc, 0,
! 			   "function definition has qualified void return type");
  		else
  		  warning_at (specs_loc, OPT_Wignored_qualifiers,
! 			   "type qualifiers ignored on function return type");
  
  		/* Ensure an error for restrict on invalid types; the
  		   DR#423 resolution is not entirely clear about
--- 6459,6470 ----
  		  quals_used &= TYPE_QUAL_ATOMIC;
  		if (quals_used && VOID_TYPE_P (type) && really_funcdef)
  		  pedwarn (specs_loc, 0,
! 			   "function definition has qualified void "
! 			   "return type");
  		else
  		  warning_at (specs_loc, OPT_Wignored_qualifiers,
! 			      "type qualifiers ignored on function "
! 			      "return type");
  
  		/* Ensure an error for restrict on invalid types; the
  		   DR#423 resolution is not entirely clear about
*************** grokdeclarator (const struct c_declarato
*** 6449,6456 ****
  		    && (!POINTER_TYPE_P (type)
  			|| !C_TYPE_OBJECT_OR_INCOMPLETE_P (TREE_TYPE (type))))
  		  error_at (loc, "invalid use of %<restrict%>");
! 		if (quals_used)
! 		  type = c_build_qualified_type (type, quals_used);
  	      }
  	    type_quals = TYPE_UNQUALIFIED;
  
--- 6474,6480 ----
  		    && (!POINTER_TYPE_P (type)
  			|| !C_TYPE_OBJECT_OR_INCOMPLETE_P (TREE_TYPE (type))))
  		  error_at (loc, "invalid use of %<restrict%>");
! 		type = c_build_qualified_type (type, quals_used);
  	      }
  	    type_quals = TYPE_UNQUALIFIED;
  
*************** finish_function (void)
*** 9485,9491 ****
        && !C_FUNCTION_IMPLICIT_INT (fndecl)
        /* Normally, with -Wreturn-type, flow will complain, but we might
           optimize out static functions.  */
!       && !TREE_PUBLIC (fndecl))
      {
        warning (OPT_Wreturn_type,
  	       "no return statement in function returning non-void");
--- 9509,9516 ----
        && !C_FUNCTION_IMPLICIT_INT (fndecl)
        /* Normally, with -Wreturn-type, flow will complain, but we might
           optimize out static functions.  */
!       && !TREE_PUBLIC (fndecl)
!       && targetm.warn_func_return (fndecl))
      {
        warning (OPT_Wreturn_type,
  	       "no return statement in function returning non-void");
diff -Nrcpad gcc-8.3.0/gcc/c/c-parser.c gcc-8.4.0/gcc/c/c-parser.c
*** gcc-8.3.0/gcc/c/c-parser.c	Thu Feb  7 14:58:21 2019
--- gcc-8.4.0/gcc/c/c-parser.c	Wed Mar  4 08:30:00 2020
*************** c_parser_while_statement (c_parser *pars
*** 5933,5939 ****
    location_t loc_after_labels;
    bool open_brace = c_parser_next_token_is (parser, CPP_OPEN_BRACE);
    body = c_parser_c99_block_statement (parser, if_p, &loc_after_labels);
!   c_finish_loop (loc, cond, NULL, body, c_break_label, c_cont_label, true);
    add_stmt (c_end_compound_stmt (loc, block, flag_isoc99));
    c_parser_maybe_reclassify_token (parser);
  
--- 5933,5940 ----
    location_t loc_after_labels;
    bool open_brace = c_parser_next_token_is (parser, CPP_OPEN_BRACE);
    body = c_parser_c99_block_statement (parser, if_p, &loc_after_labels);
!   c_finish_loop (loc, loc, cond, UNKNOWN_LOCATION, NULL, body,
! 		 c_break_label, c_cont_label, true);
    add_stmt (c_end_compound_stmt (loc, block, flag_isoc99));
    c_parser_maybe_reclassify_token (parser);
  
*************** c_parser_do_statement (c_parser *parser,
*** 5978,5983 ****
--- 5979,5985 ----
    c_break_label = save_break;
    new_cont = c_cont_label;
    c_cont_label = save_cont;
+   location_t cond_loc = c_parser_peek_token (parser)->location;
    cond = c_parser_paren_condition (parser);
    if (ivdep && cond != error_mark_node)
      cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond,
*************** c_parser_do_statement (c_parser *parser,
*** 5991,5997 ****
   		   build_int_cst (integer_type_node, unroll));
    if (!c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>"))
      c_parser_skip_to_end_of_block_or_statement (parser);
!   c_finish_loop (loc, cond, NULL, body, new_break, new_cont, false);
    add_stmt (c_end_compound_stmt (loc, block, flag_isoc99));
  }
  
--- 5993,6000 ----
   		   build_int_cst (integer_type_node, unroll));
    if (!c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>"))
      c_parser_skip_to_end_of_block_or_statement (parser);
!   c_finish_loop (loc, cond_loc, cond, UNKNOWN_LOCATION, NULL, body,
! 		 new_break, new_cont, false);
    add_stmt (c_end_compound_stmt (loc, block, flag_isoc99));
  }
  
*************** c_parser_for_statement (c_parser *parser
*** 6064,6070 ****
    /* Silence the bogus uninitialized warning.  */
    tree collection_expression = NULL;
    location_t loc = c_parser_peek_token (parser)->location;
!   location_t for_loc = c_parser_peek_token (parser)->location;
    bool is_foreach_statement = false;
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_FOR));
    token_indent_info for_tinfo
--- 6067,6075 ----
    /* Silence the bogus uninitialized warning.  */
    tree collection_expression = NULL;
    location_t loc = c_parser_peek_token (parser)->location;
!   location_t for_loc = loc;
!   location_t cond_loc = UNKNOWN_LOCATION;
!   location_t incr_loc = UNKNOWN_LOCATION;
    bool is_foreach_statement = false;
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_FOR));
    token_indent_info for_tinfo
*************** c_parser_for_statement (c_parser *parser
*** 6098,6104 ****
  	      c_parser_consume_token (parser);
  	      is_foreach_statement = true;
  	      if (check_for_loop_decls (for_loc, true) == NULL_TREE)
! 		c_parser_error (parser, "multiple iterating variables in fast enumeration");
  	    }
  	  else
  	    check_for_loop_decls (for_loc, flag_isoc99);
--- 6103,6110 ----
  	      c_parser_consume_token (parser);
  	      is_foreach_statement = true;
  	      if (check_for_loop_decls (for_loc, true) == NULL_TREE)
! 		c_parser_error (parser, "multiple iterating variables in "
! 					"fast enumeration");
  	    }
  	  else
  	    check_for_loop_decls (for_loc, flag_isoc99);
*************** c_parser_for_statement (c_parser *parser
*** 6128,6134 ****
  		  c_parser_consume_token (parser);
  		  is_foreach_statement = true;
  		  if (check_for_loop_decls (for_loc, true) == NULL_TREE)
! 		    c_parser_error (parser, "multiple iterating variables in fast enumeration");
  		}
  	      else
  		check_for_loop_decls (for_loc, flag_isoc99);
--- 6134,6141 ----
  		  c_parser_consume_token (parser);
  		  is_foreach_statement = true;
  		  if (check_for_loop_decls (for_loc, true) == NULL_TREE)
! 		    c_parser_error (parser, "multiple iterating variables in "
! 					    "fast enumeration");
  		}
  	      else
  		check_for_loop_decls (for_loc, flag_isoc99);
*************** c_parser_for_statement (c_parser *parser
*** 6150,6164 ****
  		c_parser_consume_token (parser);
  		is_foreach_statement = true;
  		if (! lvalue_p (init_expression))
! 		  c_parser_error (parser, "invalid iterating variable in fast enumeration");
! 		object_expression = c_fully_fold (init_expression, false, NULL);
  	      }
  	    else
  	      {
  		ce = convert_lvalue_to_rvalue (loc, ce, true, false);
  		init_expression = ce.value;
  		c_finish_expr_stmt (loc, init_expression);
! 		c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>");
  	      }
  	  }
  	}
--- 6157,6174 ----
  		c_parser_consume_token (parser);
  		is_foreach_statement = true;
  		if (! lvalue_p (init_expression))
! 		  c_parser_error (parser, "invalid iterating variable in "
! 					  "fast enumeration");
! 		object_expression
! 		  = c_fully_fold (init_expression, false, NULL);
  	      }
  	    else
  	      {
  		ce = convert_lvalue_to_rvalue (loc, ce, true, false);
  		init_expression = ce.value;
  		c_finish_expr_stmt (loc, init_expression);
! 		c_parser_skip_until_found (parser, CPP_SEMICOLON,
! 					   "expected %<;%>");
  	      }
  	  }
  	}
*************** c_parser_for_statement (c_parser *parser
*** 6167,6184 ****
        gcc_assert (!parser->objc_could_be_foreach_context);
        if (!is_foreach_statement)
  	{
  	  if (c_parser_next_token_is (parser, CPP_SEMICOLON))
  	    {
  	      if (ivdep)
  		{
! 		  c_parser_error (parser, "missing loop condition in loop with "
! 				  "%<GCC ivdep%> pragma");
  		  cond = error_mark_node;
  		}
  	      else if (unroll)
  		{
! 		  c_parser_error (parser, "missing loop condition in loop with "
! 				  "%<GCC unroll%> pragma");
  		  cond = error_mark_node;
  		}
  	      else
--- 6177,6195 ----
        gcc_assert (!parser->objc_could_be_foreach_context);
        if (!is_foreach_statement)
  	{
+ 	  cond_loc = c_parser_peek_token (parser)->location;
  	  if (c_parser_next_token_is (parser, CPP_SEMICOLON))
  	    {
  	      if (ivdep)
  		{
! 		  c_parser_error (parser, "missing loop condition in loop "
! 					  "with %<GCC ivdep%> pragma");
  		  cond = error_mark_node;
  		}
  	      else if (unroll)
  		{
! 		  c_parser_error (parser, "missing loop condition in loop "
! 					  "with %<GCC unroll%> pragma");
  		  cond = error_mark_node;
  		}
  	      else
*************** c_parser_for_statement (c_parser *parser
*** 6207,6217 ****
        /* Parse the increment expression (the third expression in a
  	 for-statement).  In the case of a foreach-statement, this is
  	 the expression that follows the 'in'.  */
        if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
  	{
  	  if (is_foreach_statement)
  	    {
! 	      c_parser_error (parser, "missing collection in fast enumeration");
  	      collection_expression = error_mark_node;
  	    }
  	  else
--- 6218,6230 ----
        /* Parse the increment expression (the third expression in a
  	 for-statement).  In the case of a foreach-statement, this is
  	 the expression that follows the 'in'.  */
+       loc = incr_loc = c_parser_peek_token (parser)->location;
        if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
  	{
  	  if (is_foreach_statement)
  	    {
! 	      c_parser_error (parser,
! 			      "missing collection in fast enumeration");
  	      collection_expression = error_mark_node;
  	    }
  	  else
*************** c_parser_for_statement (c_parser *parser
*** 6220,6227 ****
        else
  	{
  	  if (is_foreach_statement)
! 	    collection_expression = c_fully_fold (c_parser_expression (parser).value,
! 						  false, NULL);
  	  else
  	    {
  	      struct c_expr ce = c_parser_expression (parser);
--- 6233,6240 ----
        else
  	{
  	  if (is_foreach_statement)
! 	    collection_expression
! 	      = c_fully_fold (c_parser_expression (parser).value, false, NULL);
  	  else
  	    {
  	      struct c_expr ce = c_parser_expression (parser);
*************** c_parser_for_statement (c_parser *parser
*** 6244,6253 ****
    body = c_parser_c99_block_statement (parser, if_p, &loc_after_labels);
  
    if (is_foreach_statement)
!     objc_finish_foreach_loop (loc, object_expression, collection_expression, body, c_break_label, c_cont_label);
    else
!     c_finish_loop (loc, cond, incr, body, c_break_label, c_cont_label, true);
!   add_stmt (c_end_compound_stmt (loc, block, flag_isoc99 || c_dialect_objc ()));
    c_parser_maybe_reclassify_token (parser);
  
    token_indent_info next_tinfo
--- 6257,6270 ----
    body = c_parser_c99_block_statement (parser, if_p, &loc_after_labels);
  
    if (is_foreach_statement)
!     objc_finish_foreach_loop (for_loc, object_expression,
! 			      collection_expression, body, c_break_label,
! 			      c_cont_label);
    else
!     c_finish_loop (for_loc, cond_loc, cond, incr_loc, incr, body,
! 		   c_break_label, c_cont_label, true);
!   add_stmt (c_end_compound_stmt (for_loc, block,
! 				 flag_isoc99 || c_dialect_objc ()));
    c_parser_maybe_reclassify_token (parser);
  
    token_indent_info next_tinfo
*************** c_parser_omp_clause_dist_schedule (c_par
*** 13832,13838 ****
      c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
  			       "expected %<,%> or %<)%>");
  
!   check_no_duplicate_clause (list, OMP_CLAUSE_SCHEDULE, "schedule");
    if (t == error_mark_node)
      return list;
  
--- 13849,13858 ----
      c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
  			       "expected %<,%> or %<)%>");
  
!   /* check_no_duplicate_clause (list, OMP_CLAUSE_DIST_SCHEDULE,
! 				"dist_schedule"); */
!   if (omp_find_clause (list, OMP_CLAUSE_DIST_SCHEDULE))
!     warning_at (loc, 0, "too many %qs clauses", "dist_schedule");
    if (t == error_mark_node)
      return list;
  
*************** c_parse_file (void)
*** 18461,18466 ****
--- 18481,18488 ----
  
    if (c_parser_peek_token (&tparser)->pragma_kind == PRAGMA_GCC_PCH_PREPROCESS)
      c_parser_pragma_pch_preprocess (&tparser);
+   else
+     c_common_no_more_pch ();
  
    the_parser = ggc_alloc<c_parser> ();
    *the_parser = tparser;
diff -Nrcpad gcc-8.3.0/gcc/c/c-tree.h gcc-8.4.0/gcc/c/c-tree.h
*** gcc-8.3.0/gcc/c/c-tree.h	Wed Jan  2 22:34:36 2019
--- gcc-8.4.0/gcc/c/c-tree.h	Wed Mar  4 08:30:00 2020
*************** extern int c_types_compatible_p (tree, t
*** 684,690 ****
  extern tree c_begin_compound_stmt (bool);
  extern tree c_end_compound_stmt (location_t, tree, bool);
  extern void c_finish_if_stmt (location_t, tree, tree, tree);
! extern void c_finish_loop (location_t, tree, tree, tree, tree, tree, bool);
  extern tree c_begin_stmt_expr (void);
  extern tree c_finish_stmt_expr (location_t, tree);
  extern tree c_process_expr_stmt (location_t, tree);
--- 684,691 ----
  extern tree c_begin_compound_stmt (bool);
  extern tree c_end_compound_stmt (location_t, tree, bool);
  extern void c_finish_if_stmt (location_t, tree, tree, tree);
! extern void c_finish_loop (location_t, location_t, tree, location_t, tree,
! 			   tree, tree, tree, bool);
  extern tree c_begin_stmt_expr (void);
  extern tree c_finish_stmt_expr (location_t, tree);
  extern tree c_process_expr_stmt (location_t, tree);
diff -Nrcpad gcc-8.3.0/gcc/c/c-typeck.c gcc-8.4.0/gcc/c/c-typeck.c
*** gcc-8.3.0/gcc/c/c-typeck.c	Wed Jan  2 22:34:36 2019
--- gcc-8.4.0/gcc/c/c-typeck.c	Wed Mar  4 08:30:00 2020
*************** build_c_cast (location_t loc, tree type,
*** 5538,5547 ****
--- 5538,5551 ----
  {
    tree value;
  
+   bool int_operands = EXPR_INT_CONST_OPERANDS (expr);
+ 
    if (TREE_CODE (expr) == EXCESS_PRECISION_EXPR)
      expr = TREE_OPERAND (expr, 0);
  
    value = expr;
+   if (int_operands)
+     value = remove_c_maybe_const_expr (value);
  
    if (type == error_mark_node || expr == error_mark_node)
      return error_mark_node;
*************** build_c_cast (location_t loc, tree type,
*** 5772,5777 ****
--- 5776,5789 ----
  	       || TREE_CODE (expr) == COMPLEX_CST)))
        value = build1 (NOP_EXPR, type, value);
  
+   /* If the expression has integer operands and so can occur in an
+      unevaluated part of an integer constant expression, ensure the
+      return value reflects this.  */
+   if (int_operands
+       && INTEGRAL_TYPE_P (type)
+       && !EXPR_INT_CONST_OPERANDS (value))
+     value = note_integer_operands (value);
+ 
    protected_set_expr_location (value, loc);
    return value;
  }
*************** c_finish_if_stmt (location_t if_locus, t
*** 10528,10538 ****
     the beginning of the loop.  COND is the loop condition.  COND_IS_FIRST
     is false for DO loops.  INCR is the FOR increment expression.  BODY is
     the statement controlled by the loop.  BLAB is the break label.  CLAB is
!    the continue label.  Everything is allowed to be NULL.  */
  
  void
! c_finish_loop (location_t start_locus, tree cond, tree incr, tree body,
! 	       tree blab, tree clab, bool cond_is_first)
  {
    tree entry = NULL, exit = NULL, t;
  
--- 10540,10553 ----
     the beginning of the loop.  COND is the loop condition.  COND_IS_FIRST
     is false for DO loops.  INCR is the FOR increment expression.  BODY is
     the statement controlled by the loop.  BLAB is the break label.  CLAB is
!    the continue label.  Everything is allowed to be NULL.
!    COND_LOCUS is the location of the loop condition, INCR_LOCUS is the
!    location of the FOR increment expression.  */
  
  void
! c_finish_loop (location_t start_locus, location_t cond_locus, tree cond,
! 	       location_t incr_locus, tree incr, tree body, tree blab,
! 	       tree clab, bool cond_is_first)
  {
    tree entry = NULL, exit = NULL, t;
  
*************** c_finish_loop (location_t start_locus, t
*** 10574,10585 ****
  	    }
  
  	  t = build_and_jump (&blab);
! 	  if (cond_is_first)
! 	    exit = fold_build3_loc (start_locus,
! 				COND_EXPR, void_type_node, cond, exit, t);
! 	  else
! 	    exit = fold_build3_loc (input_location,
! 				COND_EXPR, void_type_node, cond, exit, t);
  	}
        else
  	{
--- 10589,10596 ----
  	    }
  
  	  t = build_and_jump (&blab);
! 	  exit = fold_build3_loc (cond_is_first ? start_locus : input_location,
! 				  COND_EXPR, void_type_node, cond, exit, t);
  	}
        else
  	{
*************** c_finish_loop (location_t start_locus, t
*** 10600,10608 ****
    if (clab)
      add_stmt (build1 (LABEL_EXPR, void_type_node, clab));
    if (incr)
!     add_stmt (incr);
    if (entry)
      add_stmt (entry);
    if (exit)
      add_stmt (exit);
    if (blab)
--- 10611,10633 ----
    if (clab)
      add_stmt (build1 (LABEL_EXPR, void_type_node, clab));
    if (incr)
!     {
!       if (MAY_HAVE_DEBUG_MARKER_STMTS && incr_locus != UNKNOWN_LOCATION)
! 	{
! 	  t = build0 (DEBUG_BEGIN_STMT, void_type_node);
! 	  SET_EXPR_LOCATION (t, incr_locus);
! 	  add_stmt (t);
! 	}
!       add_stmt (incr);
!     }
    if (entry)
      add_stmt (entry);
+   if (MAY_HAVE_DEBUG_MARKER_STMTS && cond_locus != UNKNOWN_LOCATION)
+     {
+       t = build0 (DEBUG_BEGIN_STMT, void_type_node);
+       SET_EXPR_LOCATION (t, cond_locus);
+       add_stmt (t);
+     }
    if (exit)
      add_stmt (exit);
    if (blab)
diff -Nrcpad gcc-8.3.0/gcc/c-family/ChangeLog gcc-8.4.0/gcc/c-family/ChangeLog
*** gcc-8.3.0/gcc/c-family/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/c-family/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,67 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2020-02-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-11-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/61414
+ 	* c-attribs.c (handle_mode_attribute): Add mode attribute to
+ 	ENUMERAL_TYPEs.
+ 
+ 2019-09-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-08-23  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR pch/61250
+ 	* c-lex.c (c_lex_with_flags):  Don't call
+ 	c_common_no_more_pch () from here.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-05-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c/90474
+ 	* c-common.c (c_common_mark_addressable_vec): Also mark
+ 	a COMPOUND_LITERAL_EXPR_DECL addressable similar to
+ 	c_mark_addressable.
+ 
+ 2019-08-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-06-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/90954
+ 	* c-omp.c (c_finish_omp_atomic): Allow tree_invariant_p in addition
+ 	to SAVE_EXPR in first operand of a COMPOUND_EXPR.
+ 
+ 2019-05-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	Backport from mainline
+ 	2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR c++/85400
+ 	* c-attribs.c (handle_visibility_attribute): Do not set no_add_attrs.
+ 
+ 2019-04-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/89946
+ 	* c-attribs.c (handle_patchable_function_entry_attribute): Add
+ 	function comment.  Warn if arguments of the attribute are not positive
+ 	integer constants.
+ 
+ 2019-04-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* c-ada-spec.c (print_destructor): Deal with deleting destructors.
+ 	(dump_ada_declaration) <FUNCTION_DECL>: Likewise.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/gcc/c-family/c-ada-spec.c gcc-8.4.0/gcc/c-family/c-ada-spec.c
*** gcc-8.3.0/gcc/c-family/c-ada-spec.c	Fri Jun  1 08:36:35 2018
--- gcc-8.4.0/gcc/c-family/c-ada-spec.c	Wed Mar  4 08:30:00 2020
*************** print_destructor (pretty_printer *buffer
*** 2686,2691 ****
--- 2686,2693 ----
    tree decl_name = DECL_NAME (TYPE_NAME (type));
  
    pp_string (buffer, "Delete_");
+   if (strncmp (IDENTIFIER_POINTER (DECL_NAME (t)), "__dt_del", 8) == 0)
+     pp_string (buffer, "And_Free_");
    pp_ada_tree_identifier (buffer, decl_name, t, 0, false);
  }
  
*************** dump_ada_declaration (pretty_printer *bu
*** 2937,2945 ****
  	  if (DECL_ARTIFICIAL (t))
  	    return 0;
  
! 	  /* Only consider constructors/destructors for complete objects.  */
  	  if (strncmp (IDENTIFIER_POINTER (decl_name), "__ct_comp", 9) != 0
! 	      && strncmp (IDENTIFIER_POINTER (decl_name), "__dt_comp", 9) != 0)
  	    return 0;
  	}
  
--- 2939,2948 ----
  	  if (DECL_ARTIFICIAL (t))
  	    return 0;
  
! 	  /* Only consider complete constructors and deleting destructors.  */
  	  if (strncmp (IDENTIFIER_POINTER (decl_name), "__ct_comp", 9) != 0
! 	      && strncmp (IDENTIFIER_POINTER (decl_name), "__dt_comp", 9) != 0
! 	      && strncmp (IDENTIFIER_POINTER (decl_name), "__dt_del", 8) != 0)
  	    return 0;
  	}
  
diff -Nrcpad gcc-8.3.0/gcc/c-family/c-attribs.c gcc-8.4.0/gcc/c-family/c-attribs.c
*** gcc-8.3.0/gcc/c-family/c-attribs.c	Mon Jul 16 11:57:10 2018
--- gcc-8.4.0/gcc/c-family/c-attribs.c	Wed Mar  4 08:30:00 2020
*************** handle_mode_attribute (tree *node, tree
*** 1650,1655 ****
--- 1650,1656 ----
  		typefm = make_signed_type (TYPE_PRECISION (typefm));
  	      TREE_TYPE (typefm) = type;
  	    }
+ 	  *no_add_attrs = false;
  	}
        else if (VECTOR_MODE_P (mode)
  	       ? TREE_CODE (type) != TREE_CODE (TREE_TYPE (typefm))
*************** handle_visibility_attribute (tree *node,
*** 2310,2323 ****
  
  static tree
  handle_tls_model_attribute (tree *node, tree name, tree args,
! 			    int ARG_UNUSED (flags), bool *no_add_attrs)
  {
    tree id;
    tree decl = *node;
    enum tls_model kind;
  
-   *no_add_attrs = true;
- 
    if (!VAR_P (decl) || !DECL_THREAD_LOCAL_P (decl))
      {
        warning (OPT_Wattributes, "%qE attribute ignored", name);
--- 2311,2323 ----
  
  static tree
  handle_tls_model_attribute (tree *node, tree name, tree args,
! 			    int ARG_UNUSED (flags),
! 			    bool *ARG_UNUSED (no_add_attrs))
  {
    tree id;
    tree decl = *node;
    enum tls_model kind;
  
    if (!VAR_P (decl) || !DECL_THREAD_LOCAL_P (decl))
      {
        warning (OPT_Wattributes, "%qE attribute ignored", name);
*************** handle_fallthrough_attribute (tree *, tr
*** 3562,3570 ****
    return NULL_TREE;
  }
  
  static tree
! handle_patchable_function_entry_attribute (tree *, tree, tree, int, bool *)
  {
!   /* Nothing to be done here.  */
    return NULL_TREE;
  }
--- 3562,3589 ----
    return NULL_TREE;
  }
  
+ /* Handle a "patchable_function_entry" attributes; arguments as in
+    struct attribute_spec.handler.  */
+ 
  static tree
! handle_patchable_function_entry_attribute (tree *, tree name, tree args,
! 					   int, bool *no_add_attrs)
  {
!   for (; args; args = TREE_CHAIN (args))
!     {
!       tree val = TREE_VALUE (args);
!       if (val && TREE_CODE (val) != IDENTIFIER_NODE
! 	  && TREE_CODE (val) != FUNCTION_DECL)
! 	val = default_conversion (val);
! 
!       if (!tree_fits_uhwi_p (val))
! 	{
! 	  warning (OPT_Wattributes,
! 		   "%qE attribute argument %qE is not an integer constant",
! 		   name, val);
! 	  *no_add_attrs = true;
! 	  return NULL_TREE;
! 	}
!     }
    return NULL_TREE;
  }
diff -Nrcpad gcc-8.3.0/gcc/c-family/c-common.c gcc-8.4.0/gcc/c-family/c-common.c
*** gcc-8.3.0/gcc/c-family/c-common.c	Wed Jun 20 16:08:14 2018
--- gcc-8.4.0/gcc/c-family/c-common.c	Wed Mar  4 08:30:00 2020
*************** c_common_mark_addressable_vec (tree t)
*** 6440,6445 ****
--- 6440,6447 ----
      return;
    if (!VAR_P (t) || !DECL_HARD_REGISTER (t))
      TREE_ADDRESSABLE (t) = 1;
+   if (TREE_CODE (t) == COMPOUND_LITERAL_EXPR)
+     TREE_ADDRESSABLE (COMPOUND_LITERAL_EXPR_DECL (t)) = 1;
  }
  
  
diff -Nrcpad gcc-8.3.0/gcc/c-family/c-lex.c gcc-8.4.0/gcc/c-family/c-lex.c
*** gcc-8.3.0/gcc/c-family/c-lex.c	Thu Jan 18 13:17:37 2018
--- gcc-8.4.0/gcc/c-family/c-lex.c	Wed Mar  4 08:30:00 2020
*************** enum cpp_ttype
*** 392,398 ****
  c_lex_with_flags (tree *value, location_t *loc, unsigned char *cpp_flags,
  		  int lex_flags)
  {
-   static bool no_more_pch;
    const cpp_token *tok;
    enum cpp_ttype type;
    unsigned char add_flags = 0;
--- 392,397 ----
*************** c_lex_with_flags (tree *value, location_
*** 626,637 ****
    if (cpp_flags)
      *cpp_flags = tok->flags | add_flags;
  
-   if (!no_more_pch)
-     {
-       no_more_pch = true;
-       c_common_no_more_pch ();
-     }
- 
    timevar_pop (TV_CPP);
  
    return type;
--- 625,630 ----
diff -Nrcpad gcc-8.3.0/gcc/c-family/c-omp.c gcc-8.4.0/gcc/c-family/c-omp.c
*** gcc-8.3.0/gcc/c-family/c-omp.c	Thu Feb  7 14:37:26 2019
--- gcc-8.4.0/gcc/c-family/c-omp.c	Wed Mar  4 08:30:00 2020
*************** c_finish_omp_atomic (location_t loc, enu
*** 300,306 ****
    if (TREE_CODE (x) == COMPOUND_EXPR)
      {
        pre = TREE_OPERAND (x, 0);
!       gcc_assert (TREE_CODE (pre) == SAVE_EXPR);
        x = TREE_OPERAND (x, 1);
      }
    gcc_assert (TREE_CODE (x) == MODIFY_EXPR);
--- 300,306 ----
    if (TREE_CODE (x) == COMPOUND_EXPR)
      {
        pre = TREE_OPERAND (x, 0);
!       gcc_assert (TREE_CODE (pre) == SAVE_EXPR || tree_invariant_p (pre));
        x = TREE_OPERAND (x, 1);
      }
    gcc_assert (TREE_CODE (x) == MODIFY_EXPR);
diff -Nrcpad gcc-8.3.0/gcc/calls.c gcc-8.4.0/gcc/calls.c
*** gcc-8.3.0/gcc/calls.c	Tue Aug 28 11:43:22 2018
--- gcc-8.4.0/gcc/calls.c	Wed Mar  4 08:30:00 2020
*************** initialize_argument_information (int num
*** 2078,2085 ****
        /* If TYPE is a transparent union or record, pass things the way
  	 we would pass the first field of the union or record.  We have
  	 already verified that the modes are the same.  */
!       if ((TREE_CODE (type) == UNION_TYPE || TREE_CODE (type) == RECORD_TYPE)
! 	   && TYPE_TRANSPARENT_AGGR (type))
  	type = TREE_TYPE (first_field (type));
  
        /* Decide where to pass this arg.
--- 2078,2084 ----
        /* If TYPE is a transparent union or record, pass things the way
  	 we would pass the first field of the union or record.  We have
  	 already verified that the modes are the same.  */
!       if (RECORD_OR_UNION_TYPE_P (type) && TYPE_TRANSPARENT_AGGR (type))
  	type = TREE_TYPE (first_field (type));
  
        /* Decide where to pass this arg.
*************** load_register_parameters (struct arg_dat
*** 2873,2878 ****
--- 2872,2880 ----
  	  poly_int64 size = 0;
  	  HOST_WIDE_INT const_size = 0;
  	  rtx_insn *before_arg = get_last_insn ();
+ 	  tree type = TREE_TYPE (args[i].tree_value);
+ 	  if (RECORD_OR_UNION_TYPE_P (type) && TYPE_TRANSPARENT_AGGR (type))
+ 	    type = TREE_TYPE (first_field (type));
  	  /* Set non-negative if we must move a word at a time, even if
  	     just one word (e.g, partial == 4 && mode == DFmode).  Set
  	     to -1 if we just use a normal move insn.  This value can be
*************** load_register_parameters (struct arg_dat
*** 2885,2895 ****
  	      gcc_assert (partial % UNITS_PER_WORD == 0);
  	      nregs = partial / UNITS_PER_WORD;
  	    }
! 	  else if (TYPE_MODE (TREE_TYPE (args[i].tree_value)) == BLKmode)
  	    {
  	      /* Variable-sized parameters should be described by a
  		 PARALLEL instead.  */
! 	      const_size = int_size_in_bytes (TREE_TYPE (args[i].tree_value));
  	      gcc_assert (const_size >= 0);
  	      nregs = (const_size + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD;
  	      size = const_size;
--- 2887,2897 ----
  	      gcc_assert (partial % UNITS_PER_WORD == 0);
  	      nregs = partial / UNITS_PER_WORD;
  	    }
! 	  else if (TYPE_MODE (type) == BLKmode)
  	    {
  	      /* Variable-sized parameters should be described by a
  		 PARALLEL instead.  */
! 	      const_size = int_size_in_bytes (type);
  	      gcc_assert (const_size >= 0);
  	      nregs = (const_size + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD;
  	      size = const_size;
*************** load_register_parameters (struct arg_dat
*** 3016,3023 ****
  	  if (GET_CODE (reg) == PARALLEL)
  	    use_group_regs (call_fusage, reg);
  	  else if (nregs == -1)
! 	    use_reg_mode (call_fusage, reg,
! 			  TYPE_MODE (TREE_TYPE (args[i].tree_value)));
  	  else if (nregs > 0)
  	    use_regs (call_fusage, REGNO (reg), nregs);
  	}
--- 3018,3024 ----
  	  if (GET_CODE (reg) == PARALLEL)
  	    use_group_regs (call_fusage, reg);
  	  else if (nregs == -1)
! 	    use_reg_mode (call_fusage, reg, TYPE_MODE (type));
  	  else if (nregs > 0)
  	    use_regs (call_fusage, REGNO (reg), nregs);
  	}
*************** expand_call (tree exp, rtx target, int i
*** 3754,3759 ****
--- 3755,3782 ----
        || dbg_cnt (tail_call) == false)
      try_tail_call = 0;
  
+   /* Workaround buggy C/C++ wrappers around Fortran routines with
+      character(len=constant) arguments if the hidden string length arguments
+      are passed on the stack; if the callers forget to pass those arguments,
+      attempting to tail call in such routines leads to stack corruption.
+      Avoid tail calls in functions where at least one such hidden string
+      length argument is passed (partially or fully) on the stack in the
+      caller and the callee needs to pass any arguments on the stack.
+      See PR90329.  */
+   if (try_tail_call && maybe_ne (args_size.constant, 0))
+     for (tree arg = DECL_ARGUMENTS (current_function_decl);
+ 	 arg; arg = DECL_CHAIN (arg))
+       if (DECL_HIDDEN_STRING_LENGTH (arg) && DECL_INCOMING_RTL (arg))
+ 	{
+ 	  subrtx_iterator::array_type array;
+ 	  FOR_EACH_SUBRTX (iter, array, DECL_INCOMING_RTL (arg), NONCONST)
+ 	    if (MEM_P (*iter))
+ 	      {
+ 		try_tail_call = 0;
+ 		break;
+ 	      }
+ 	}
+ 
    /* If the user has marked the function as requiring tail-call
       optimization, attempt it.  */
    if (must_tail_call)
diff -Nrcpad gcc-8.3.0/gcc/cfgcleanup.c gcc-8.4.0/gcc/cfgcleanup.c
*** gcc-8.3.0/gcc/cfgcleanup.c	Tue Jan  8 10:20:17 2019
--- gcc-8.4.0/gcc/cfgcleanup.c	Wed Mar  4 08:30:00 2020
*************** along with GCC; see the file COPYING3.
*** 53,58 ****
--- 53,59 ----
  #include "dce.h"
  #include "dbgcnt.h"
  #include "rtl-iter.h"
+ #include "regs.h"
  
  #define FORWARDER_BLOCK_P(BB) ((BB)->flags & BB_FORWARDER_BLOCK)
  
*************** old_insns_match_p (int mode ATTRIBUTE_UN
*** 1217,1222 ****
--- 1218,1231 ----
  		}
  	    }
  	}
+ 
+       HARD_REG_SET i1_used, i2_used;
+ 
+       get_call_reg_set_usage (i1, &i1_used, call_used_reg_set);
+       get_call_reg_set_usage (i2, &i2_used, call_used_reg_set);
+ 
+       if (!hard_reg_set_equal_p (i1_used, i2_used))
+         return dir_none;
      }
  
    /* If both i1 and i2 are frame related, verify all the CFA notes
*************** try_optimize_cfg (int mode)
*** 2705,2727 ****
  
  		      if (current_ir_type () == IR_RTL_CFGLAYOUT)
  			{
! 			  if (BB_FOOTER (b)
! 			      && BARRIER_P (BB_FOOTER (b)))
  			    FOR_EACH_EDGE (e, ei, b->preds)
! 			      if ((e->flags & EDGE_FALLTHRU)
! 				  && BB_FOOTER (e->src) == NULL)
  				{
! 				  if (BB_FOOTER (b))
  				    {
  				      BB_FOOTER (e->src) = BB_FOOTER (b);
  				      BB_FOOTER (b) = NULL;
  				    }
  				  else
! 				    {
! 				      start_sequence ();
! 				      BB_FOOTER (e->src) = emit_barrier ();
! 				      end_sequence ();
! 				    }
  				}
  			}
  		      else
--- 2714,2736 ----
  
  		      if (current_ir_type () == IR_RTL_CFGLAYOUT)
  			{
! 			  rtx_insn *insn;
! 			  for (insn = BB_FOOTER (b);
! 			       insn; insn = NEXT_INSN (insn))
! 			    if (BARRIER_P (insn))
! 			      break;
! 			  if (insn)
  			    FOR_EACH_EDGE (e, ei, b->preds)
! 			      if ((e->flags & EDGE_FALLTHRU))
  				{
! 				  if (BB_FOOTER (b)
! 				      && BB_FOOTER (e->src) == NULL)
  				    {
  				      BB_FOOTER (e->src) = BB_FOOTER (b);
  				      BB_FOOTER (b) = NULL;
  				    }
  				  else
! 				    emit_barrier_after_bb (e->src);
  				}
  			}
  		      else
diff -Nrcpad gcc-8.3.0/gcc/cfgexpand.c gcc-8.4.0/gcc/cfgexpand.c
*** gcc-8.3.0/gcc/cfgexpand.c	Sun Nov 11 17:36:23 2018
--- gcc-8.4.0/gcc/cfgexpand.c	Wed Mar  4 08:30:00 2020
*************** expand_debug_expr (tree exp)
*** 4323,4329 ****
        op0 = DECL_RTL_IF_SET (exp);
  
        /* This decl was probably optimized away.  */
!       if (!op0)
  	{
  	  if (!VAR_P (exp)
  	      || DECL_EXTERNAL (exp)
--- 4323,4333 ----
        op0 = DECL_RTL_IF_SET (exp);
  
        /* This decl was probably optimized away.  */
!       if (!op0
! 	  /* At least label RTXen are sometimes replaced by
! 	     NOTE_INSN_DELETED_LABEL.  Any notes here are not
! 	     handled by copy_rtx.  */
! 	  || NOTE_P (op0))
  	{
  	  if (!VAR_P (exp)
  	      || DECL_EXTERNAL (exp)
diff -Nrcpad gcc-8.3.0/gcc/cfghooks.c gcc-8.4.0/gcc/cfghooks.c
*** gcc-8.3.0/gcc/cfghooks.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/cfghooks.c	Wed Mar  4 08:30:00 2020
*************** can_duplicate_block_p (const_basic_block
*** 1066,1072 ****
     AFTER.  */
  
  basic_block
! duplicate_block (basic_block bb, edge e, basic_block after)
  {
    edge s, n;
    basic_block new_bb;
--- 1066,1072 ----
     AFTER.  */
  
  basic_block
! duplicate_block (basic_block bb, edge e, basic_block after, copy_bb_data *id)
  {
    edge s, n;
    basic_block new_bb;
*************** duplicate_block (basic_block bb, edge e,
*** 1082,1088 ****
  
    gcc_checking_assert (can_duplicate_block_p (bb));
  
!   new_bb = cfg_hooks->duplicate_block (bb);
    if (after)
      move_block_after (new_bb, after);
  
--- 1082,1088 ----
  
    gcc_checking_assert (can_duplicate_block_p (bb));
  
!   new_bb = cfg_hooks->duplicate_block (bb, id);
    if (after)
      move_block_after (new_bb, after);
  
*************** copy_bbs (basic_block *bbs, unsigned n,
*** 1337,1342 ****
--- 1337,1343 ----
    unsigned i, j;
    basic_block bb, new_bb, dom_bb;
    edge e;
+   copy_bb_data id;
  
    /* Mark the blocks to be copied.  This is used by edge creation hooks
       to decide whether to reallocate PHI nodes capacity to avoid reallocating
*************** copy_bbs (basic_block *bbs, unsigned n,
*** 1349,1355 ****
      {
        /* Duplicate.  */
        bb = bbs[i];
!       new_bb = new_bbs[i] = duplicate_block (bb, NULL, after);
        after = new_bb;
        if (bb->loop_father)
  	{
--- 1350,1356 ----
      {
        /* Duplicate.  */
        bb = bbs[i];
!       new_bb = new_bbs[i] = duplicate_block (bb, NULL, after, &id);
        after = new_bb;
        if (bb->loop_father)
  	{
diff -Nrcpad gcc-8.3.0/gcc/cfghooks.h gcc-8.4.0/gcc/cfghooks.h
*** gcc-8.3.0/gcc/cfghooks.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/cfghooks.h	Wed Mar  4 08:30:00 2020
*************** struct profile_record
*** 54,59 ****
--- 54,72 ----
    bool run;
  };
  
+ typedef int_hash <unsigned short, 0> dependence_hash;
+ 
+ /* Optional data for duplicate_block.   */
+ 
+ struct copy_bb_data
+ {
+   copy_bb_data() : dependence_map (NULL) {}
+   ~copy_bb_data () { delete dependence_map; }
+ 
+   /* A map from the copied BBs dependence info cliques to
+      equivalents in the BBs duplicated to.  */
+   hash_map<dependence_hash, unsigned short> *dependence_map;
+ };
  
  struct cfg_hooks
  {
*************** struct cfg_hooks
*** 112,118 ****
    bool (*can_duplicate_block_p) (const_basic_block a);
  
    /* Duplicate block A.  */
!   basic_block (*duplicate_block) (basic_block a);
  
    /* Higher level functions representable by primitive operations above if
       we didn't have some oddities in RTL and Tree representations.  */
--- 125,131 ----
    bool (*can_duplicate_block_p) (const_basic_block a);
  
    /* Duplicate block A.  */
!   basic_block (*duplicate_block) (basic_block a, copy_bb_data *);
  
    /* Higher level functions representable by primitive operations above if
       we didn't have some oddities in RTL and Tree representations.  */
*************** extern void tidy_fallthru_edges (void);
*** 227,233 ****
  extern void predict_edge (edge e, enum br_predictor predictor, int probability);
  extern bool predicted_by_p (const_basic_block bb, enum br_predictor predictor);
  extern bool can_duplicate_block_p (const_basic_block);
! extern basic_block duplicate_block (basic_block, edge, basic_block);
  extern bool block_ends_with_call_p (basic_block bb);
  extern bool empty_block_p (basic_block);
  extern basic_block split_block_before_cond_jump (basic_block);
--- 240,247 ----
  extern void predict_edge (edge e, enum br_predictor predictor, int probability);
  extern bool predicted_by_p (const_basic_block bb, enum br_predictor predictor);
  extern bool can_duplicate_block_p (const_basic_block);
! extern basic_block duplicate_block (basic_block, edge, basic_block,
! 				    copy_bb_data * = NULL);
  extern bool block_ends_with_call_p (basic_block bb);
  extern bool empty_block_p (basic_block);
  extern basic_block split_block_before_cond_jump (basic_block);
diff -Nrcpad gcc-8.3.0/gcc/cfgloop.h gcc-8.4.0/gcc/cfgloop.h
*** gcc-8.3.0/gcc/cfgloop.h	Fri Apr 13 08:59:05 2018
--- gcc-8.4.0/gcc/cfgloop.h	Wed Mar  4 08:30:00 2020
*************** struct GTY ((chain_next ("%h.next"))) lo
*** 227,232 ****
--- 227,236 ----
       Other values means unroll with the given unrolling factor.  */
    unsigned short unroll;
  
+   /* If this loop was inlined the main clique of the callee which does
+      not need remapping when copying the loop body.  */
+   unsigned short owned_clique;
+ 
    /* For SIMD loops, this is a unique identifier of the loop, referenced
       by IFN_GOMP_SIMD_VF, IFN_GOMP_SIMD_LANE and IFN_GOMP_SIMD_LAST_LANE
       builtins.  */
diff -Nrcpad gcc-8.3.0/gcc/cfgloopmanip.c gcc-8.4.0/gcc/cfgloopmanip.c
*** gcc-8.3.0/gcc/cfgloopmanip.c	Fri Apr 13 08:59:05 2018
--- gcc-8.4.0/gcc/cfgloopmanip.c	Wed Mar  4 08:30:00 2020
*************** copy_loop_info (struct loop *loop, struc
*** 1019,1024 ****
--- 1019,1025 ----
    target->warned_aggressive_loop_optimizations
      |= loop->warned_aggressive_loop_optimizations;
    target->in_oacc_kernels_region = loop->in_oacc_kernels_region;
+   target->owned_clique = loop->owned_clique;
  }
  
  /* Copies copy of LOOP as subloop of TARGET loop, placing newly
diff -Nrcpad gcc-8.3.0/gcc/cfgrtl.c gcc-8.4.0/gcc/cfgrtl.c
*** gcc-8.3.0/gcc/cfgrtl.c	Thu Feb 14 11:25:18 2019
--- gcc-8.4.0/gcc/cfgrtl.c	Wed Mar  4 08:30:00 2020
*************** duplicate_insn_chain (rtx_insn *from, rt
*** 4233,4239 ****
  /* Create a duplicate of the basic block BB.  */
  
  static basic_block
! cfg_layout_duplicate_bb (basic_block bb)
  {
    rtx_insn *insn;
    basic_block new_bb;
--- 4233,4239 ----
  /* Create a duplicate of the basic block BB.  */
  
  static basic_block
! cfg_layout_duplicate_bb (basic_block bb, copy_bb_data *)
  {
    rtx_insn *insn;
    basic_block new_bb;
*************** rtl_can_remove_branch_p (const_edge e)
*** 5059,5067 ****
  }
  
  static basic_block
! rtl_duplicate_bb (basic_block bb)
  {
!   bb = cfg_layout_duplicate_bb (bb);
    bb->aux = NULL;
    return bb;
  }
--- 5059,5067 ----
  }
  
  static basic_block
! rtl_duplicate_bb (basic_block bb, copy_bb_data *id)
  {
!   bb = cfg_layout_duplicate_bb (bb, id);
    bb->aux = NULL;
    return bb;
  }
diff -Nrcpad gcc-8.3.0/gcc/cgraph.c gcc-8.4.0/gcc/cgraph.c
*** gcc-8.3.0/gcc/cgraph.c	Mon May 28 13:44:18 2018
--- gcc-8.4.0/gcc/cgraph.c	Wed Mar  4 08:30:00 2020
*************** cgraph_node::collect_callers (void)
*** 3007,3048 ****
    return redirect_callers;
  }
  
! /* Return TRUE if NODE2 a clone of NODE or is equivalent to it.  */
  
  static bool
  clone_of_p (cgraph_node *node, cgraph_node *node2)
  {
-   bool skipped_thunk = false;
    node = node->ultimate_alias_target ();
    node2 = node2->ultimate_alias_target ();
  
    /* There are no virtual clones of thunks so check former_clone_of or if we
       might have skipped thunks because this adjustments are no longer
       necessary.  */
!   while (node->thunk.thunk_p)
      {
-       if (node2->former_clone_of == node->decl)
- 	return true;
        if (!node->thunk.this_adjusting)
  	return false;
        node = node->callees->callee->ultimate_alias_target ();
-       skipped_thunk = true;
-     }
  
-   if (skipped_thunk)
-     {
        if (!node2->clone.args_to_skip
  	  || !bitmap_bit_p (node2->clone.args_to_skip, 0))
  	return false;
        if (node2->former_clone_of == node->decl)
  	return true;
!       else if (!node2->clone_of)
! 	return false;
      }
  
!   while (node != node2 && node2)
!     node2 = node2->clone_of;
!   return node2 != NULL;
  }
  
  /* Verify edge count and frequency.  */
--- 3007,3061 ----
    return redirect_callers;
  }
  
! 
! /* Return TRUE if NODE2 a clone of NODE or is equivalent to it.  Return
!    optimistically true if this cannot be determined.  */
  
  static bool
  clone_of_p (cgraph_node *node, cgraph_node *node2)
  {
    node = node->ultimate_alias_target ();
    node2 = node2->ultimate_alias_target ();
  
+   if (node2->clone_of == node
+       || node2->former_clone_of == node->decl)
+     return true;
+ 
+   if (!node->thunk.thunk_p && !node->former_thunk_p ())
+     {
+       while (node2 && node->decl != node2->decl)
+ 	node2 = node2->clone_of;
+       return node2 != NULL;
+     }
+ 
    /* There are no virtual clones of thunks so check former_clone_of or if we
       might have skipped thunks because this adjustments are no longer
       necessary.  */
!   while (node->thunk.thunk_p || node->former_thunk_p ())
      {
        if (!node->thunk.this_adjusting)
  	return false;
+       /* In case of instrumented expanded thunks, which can have multiple calls
+ 	 in them, we do not know how to continue and just have to be
+ 	 optimistic.  */
+       if (node->callees->next_callee)
+ 	return true;
        node = node->callees->callee->ultimate_alias_target ();
  
        if (!node2->clone.args_to_skip
  	  || !bitmap_bit_p (node2->clone.args_to_skip, 0))
  	return false;
        if (node2->former_clone_of == node->decl)
  	return true;
! 
!       cgraph_node *n2 = node2;
!       while (n2 && node->decl != n2->decl)
! 	n2 = n2->clone_of;
!       if (n2)
! 	return true;
      }
  
!   return false;
  }
  
  /* Verify edge count and frequency.  */
diff -Nrcpad gcc-8.3.0/gcc/cgraph.h gcc-8.4.0/gcc/cgraph.h
*** gcc-8.3.0/gcc/cgraph.h	Mon May 28 13:44:18 2018
--- gcc-8.4.0/gcc/cgraph.h	Wed Mar  4 08:30:00 2020
*************** public:
*** 997,1008 ****
       If non-NULL BLOCK_TO_COPY determine what basic blocks to copy.
       If non_NULL NEW_ENTRY determine new entry BB of the clone.
  
       Return the new version's cgraph node.  */
    cgraph_node *create_version_clone_with_body
      (vec<cgraph_edge *> redirect_callers,
       vec<ipa_replace_map *, va_gc> *tree_map, bitmap args_to_skip,
       bool skip_return, bitmap bbs_to_copy, basic_block new_entry_block,
!      const char *clone_name);
  
    /* Insert a new cgraph_function_version_info node into cgraph_fnver_htab
       corresponding to cgraph_node.  */
--- 997,1013 ----
       If non-NULL BLOCK_TO_COPY determine what basic blocks to copy.
       If non_NULL NEW_ENTRY determine new entry BB of the clone.
  
+      If TARGET_ATTRIBUTES is non-null, when creating a new declaration,
+      add the attributes to DECL_ATTRIBUTES.  And call valid_attribute_p
+      that will promote value of the attribute DECL_FUNCTION_SPECIFIC_TARGET
+      of the declaration.
+ 
       Return the new version's cgraph node.  */
    cgraph_node *create_version_clone_with_body
      (vec<cgraph_edge *> redirect_callers,
       vec<ipa_replace_map *, va_gc> *tree_map, bitmap args_to_skip,
       bool skip_return, bitmap bbs_to_copy, basic_block new_entry_block,
!      const char *clone_name, tree target_attributes = NULL_TREE);
  
    /* Insert a new cgraph_function_version_info node into cgraph_fnver_htab
       corresponding to cgraph_node.  */
*************** public:
*** 1258,1263 ****
--- 1263,1271 ----
       Note that at WPA stage, the function body may not be present in memory.  */
    inline bool has_gimple_body_p (void);
  
+   /* Return true if this node represents a former, i.e. an expanded, thunk.  */
+   inline bool former_thunk_p (void);
+ 
    /* Return true if function should be optimized for size.  */
    bool optimize_for_size_p (void);
  
*************** cgraph_node::has_gimple_body_p (void)
*** 2858,2863 ****
--- 2866,2881 ----
    return definition && !thunk.thunk_p && !alias;
  }
  
+ /* Return true if this node represents a former, i.e. an expanded, thunk.  */
+ 
+ inline bool
+ cgraph_node::former_thunk_p (void)
+ {
+   return (!thunk.thunk_p
+ 	  && (thunk.fixed_offset
+ 	      || thunk.virtual_offset_p));
+ }
+ 
  /* Walk all functions with body defined.  */
  #define FOR_EACH_FUNCTION_WITH_GIMPLE_BODY(node) \
     for ((node) = symtab->first_function_with_gimple_body (); (node); \
diff -Nrcpad gcc-8.3.0/gcc/cgraphclones.c gcc-8.4.0/gcc/cgraphclones.c
*** gcc-8.3.0/gcc/cgraphclones.c	Thu Jan 18 16:26:54 2018
--- gcc-8.4.0/gcc/cgraphclones.c	Wed Mar  4 08:30:00 2020
*************** cgraph_node::create_version_clone (tree
*** 938,943 ****
--- 938,948 ----
     If non-NULL BLOCK_TO_COPY determine what basic blocks to copy.
     If non_NULL NEW_ENTRY determine new entry BB of the clone.
  
+    If TARGET_ATTRIBUTES is non-null, when creating a new declaration,
+    add the attributes to DECL_ATTRIBUTES.  And call valid_attribute_p
+    that will promote value of the attribute DECL_FUNCTION_SPECIFIC_TARGET
+    of the declaration.
+ 
     Return the new version's cgraph node.  */
  
  cgraph_node *
*************** cgraph_node::create_version_clone_with_b
*** 945,951 ****
    (vec<cgraph_edge *> redirect_callers,
     vec<ipa_replace_map *, va_gc> *tree_map, bitmap args_to_skip,
     bool skip_return, bitmap bbs_to_copy, basic_block new_entry_block,
!    const char *suffix)
  {
    tree old_decl = decl;
    cgraph_node *new_version_node = NULL;
--- 950,956 ----
    (vec<cgraph_edge *> redirect_callers,
     vec<ipa_replace_map *, va_gc> *tree_map, bitmap args_to_skip,
     bool skip_return, bitmap bbs_to_copy, basic_block new_entry_block,
!    const char *suffix, tree target_attributes)
  {
    tree old_decl = decl;
    cgraph_node *new_version_node = NULL;
*************** cgraph_node::create_version_clone_with_b
*** 968,973 ****
--- 973,991 ----
    SET_DECL_ASSEMBLER_NAME (new_decl, DECL_NAME (new_decl));
    SET_DECL_RTL (new_decl, NULL);
  
+   if (target_attributes)
+     {
+       DECL_ATTRIBUTES (new_decl) = target_attributes;
+ 
+       location_t saved_loc = input_location;
+       tree v = TREE_VALUE (target_attributes);
+       input_location = DECL_SOURCE_LOCATION (new_decl);
+       bool r = targetm.target_option.valid_attribute_p (new_decl, NULL, v, 0);
+       input_location = saved_loc;
+       if (!r)
+ 	return NULL;
+     }
+ 
    /* When the old decl was a con-/destructor make sure the clone isn't.  */
    DECL_STATIC_CONSTRUCTOR (new_decl) = 0;
    DECL_STATIC_DESTRUCTOR (new_decl) = 0;
diff -Nrcpad gcc-8.3.0/gcc/collect2.c gcc-8.4.0/gcc/collect2.c
*** gcc-8.3.0/gcc/collect2.c	Fri Jun 22 14:52:11 2018
--- gcc-8.4.0/gcc/collect2.c	Wed Mar  4 08:30:00 2020
*************** static void scan_prog_file (const char *
*** 382,387 ****
--- 382,391 ----
  void
  tool_cleanup (bool from_signal)
  {
+   /* maybe_unlink may call notice, which is not signal safe.  */
+   if (from_signal)
+     debug = false;
+ 
    if (c_file != 0 && c_file[0])
      maybe_unlink (c_file);
  
*************** maybe_run_lto_and_relink (char **lto_ld_
*** 741,747 ****
  	      ++num_files;
  	  }
  
! 	lto_o_files = XNEWVEC (char *, num_files + 1);
  	lto_o_files[num_files] = NULL;
  	start = XOBFINISH (&temporary_obstack, char *);
  	for (i = 0; i < num_files; ++i)
--- 745,754 ----
  	      ++num_files;
  	  }
  
! 	/* signal handler may access uninitialized memory
! 	   and delete whatever it points to, if lto_o_files
! 	   is not allocated with calloc.  */
! 	lto_o_files = XCNEWVEC (char *, num_files + 1);
  	lto_o_files[num_files] = NULL;
  	start = XOBFINISH (&temporary_obstack, char *);
  	for (i = 0; i < num_files; ++i)
diff -Nrcpad gcc-8.3.0/gcc/combine.c gcc-8.4.0/gcc/combine.c
*** gcc-8.3.0/gcc/combine.c	Thu Feb 14 23:12:26 2019
--- gcc-8.4.0/gcc/combine.c	Wed Mar  4 08:30:00 2020
*************** find_split_point (rtx *loc, rtx_insn *in
*** 5037,5046 ****
  	{
  	  HOST_WIDE_INT pos = INTVAL (XEXP (SET_DEST (x), 2));
  	  unsigned HOST_WIDE_INT len = INTVAL (XEXP (SET_DEST (x), 1));
- 	  unsigned HOST_WIDE_INT src = INTVAL (SET_SRC (x));
  	  rtx dest = XEXP (SET_DEST (x), 0);
! 	  unsigned HOST_WIDE_INT mask
! 	    = (HOST_WIDE_INT_1U << len) - 1;
  	  rtx or_mask;
  
  	  if (BITS_BIG_ENDIAN)
--- 5037,5045 ----
  	{
  	  HOST_WIDE_INT pos = INTVAL (XEXP (SET_DEST (x), 2));
  	  unsigned HOST_WIDE_INT len = INTVAL (XEXP (SET_DEST (x), 1));
  	  rtx dest = XEXP (SET_DEST (x), 0);
! 	  unsigned HOST_WIDE_INT mask = (HOST_WIDE_INT_1U << len) - 1;
! 	  unsigned HOST_WIDE_INT src = INTVAL (SET_SRC (x)) & mask;
  	  rtx or_mask;
  
  	  if (BITS_BIG_ENDIAN)
*************** simplify_comparison (enum rtx_code code,
*** 12318,12324 ****
  	     bit.  This will be converted into a ZERO_EXTRACT.  */
  	  if (const_op == 0 && sign_bit_comparison_p
  	      && CONST_INT_P (XEXP (op0, 1))
! 	      && mode_width <= HOST_BITS_PER_WIDE_INT)
  	    {
  	      op0 = simplify_and_const_int (NULL_RTX, mode, XEXP (op0, 0),
  					    (HOST_WIDE_INT_1U
--- 12317,12324 ----
  	     bit.  This will be converted into a ZERO_EXTRACT.  */
  	  if (const_op == 0 && sign_bit_comparison_p
  	      && CONST_INT_P (XEXP (op0, 1))
! 	      && mode_width <= HOST_BITS_PER_WIDE_INT
! 	      && UINTVAL (XEXP (op0, 1)) < mode_width)
  	    {
  	      op0 = simplify_and_const_int (NULL_RTX, mode, XEXP (op0, 0),
  					    (HOST_WIDE_INT_1U
diff -Nrcpad gcc-8.3.0/gcc/common/config/aarch64/aarch64-common.c gcc-8.4.0/gcc/common/config/aarch64/aarch64-common.c
*** gcc-8.3.0/gcc/common/config/aarch64/aarch64-common.c	Tue Mar 27 09:26:16 2018
--- gcc-8.4.0/gcc/common/config/aarch64/aarch64-common.c	Wed Mar  4 08:30:00 2020
***************
*** 41,46 ****
--- 41,48 ----
  
  #undef	TARGET_OPTION_OPTIMIZATION_TABLE
  #define TARGET_OPTION_OPTIMIZATION_TABLE aarch_option_optimization_table
+ #undef TARGET_OPTION_INIT_STRUCT
+ #define TARGET_OPTION_INIT_STRUCT aarch64_option_init_struct
  
  /* Set default optimization options.  */
  static const struct default_options aarch_option_optimization_table[] =
*************** aarch64_handle_option (struct gcc_option
*** 113,120 ****
      }
  }
  
- struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
- 
  /* An ISA extension in the co-processor and main instruction set space.  */
  struct aarch64_option_extension
  {
--- 115,120 ----
*************** struct aarch64_option_extension
*** 122,136 ****
    const unsigned long flag_canonical;
    const unsigned long flags_on;
    const unsigned long flags_off;
  };
  
  /* ISA extensions in AArch64.  */
  static const struct aarch64_option_extension all_extensions[] =
  {
! #define AARCH64_OPT_EXTENSION(NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, Z) \
!   {NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF},
  #include "config/aarch64/aarch64-option-extensions.def"
!   {NULL, 0, 0, 0}
  };
  
  struct processor_name_to_arch
--- 122,149 ----
    const unsigned long flag_canonical;
    const unsigned long flags_on;
    const unsigned long flags_off;
+   const bool is_synthetic;
  };
  
  /* ISA extensions in AArch64.  */
  static const struct aarch64_option_extension all_extensions[] =
  {
! #define AARCH64_OPT_EXTENSION(NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, \
! 			      SYNTHETIC, Z) \
!   {NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, SYNTHETIC},
  #include "config/aarch64/aarch64-option-extensions.def"
!   {NULL, 0, 0, 0, false}
! };
! 
! /* A copy of the ISA extensions list for AArch64 sorted by the popcount of
!    bits and extension turned on.  Cached for efficiency.  */
! static struct aarch64_option_extension all_extensions_by_on[] =
! {
! #define AARCH64_OPT_EXTENSION(NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, \
! 			      SYNTHETIC, Z) \
!   {NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, SYNTHETIC},
! #include "config/aarch64/aarch64-option-extensions.def"
!   {NULL, 0, 0, 0, false}
  };
  
  struct processor_name_to_arch
*************** aarch64_parse_extension (const char *str
*** 232,237 ****
--- 245,320 ----
    return AARCH64_PARSE_OK;
  }
  
+ /* Comparer to sort aarch64's feature extensions by population count. Largest
+    first.  */
+ 
+ typedef const struct aarch64_option_extension opt_ext;
+ 
+ int opt_ext_cmp (const void* a, const void* b)
+ {
+   opt_ext *opt_a = (opt_ext *)a;
+   opt_ext *opt_b = (opt_ext *)b;
+ 
+   /* We consider the total set of bits an options turns on to be the union of
+      the singleton set containing the option itself and the set of options it
+      turns on as a dependency.  As an example +dotprod turns on FL_DOTPROD and
+      FL_SIMD.  As such the set of bits represented by this option is
+      {FL_DOTPROD, FL_SIMD}. */
+   unsigned long total_flags_a = opt_a->flag_canonical & opt_a->flags_on;
+   unsigned long total_flags_b = opt_b->flag_canonical & opt_b->flags_on;
+   int popcnt_a = popcount_hwi ((HOST_WIDE_INT)total_flags_a);
+   int popcnt_b = popcount_hwi ((HOST_WIDE_INT)total_flags_b);
+   int order = popcnt_b - popcnt_a;
+ 
+   /* If they have the same amount of bits set, give it a more
+      deterministic ordering by using the value of the bits themselves.  */
+   if (order == 0)
+     return total_flags_b - total_flags_a;
+ 
+   return order;
+ }
+ 
+ /* Implement TARGET_OPTION_INIT_STRUCT.  */
+ 
+ static void
+ aarch64_option_init_struct (struct gcc_options *opts ATTRIBUTE_UNUSED)
+ {
+     /* Sort the extensions based on how many bits they set, order the larger
+        counts first.  We sort the list because this makes processing the
+        feature bits O(n) instead of O(n^2).  While n is small, the function
+        to calculate the feature strings is called on every options push,
+        pop and attribute change (arm_neon headers, lto etc all cause this to
+        happen quite frequently).  It is a trade-off between time and space and
+        so time won.  */
+     int n_extensions
+       = sizeof (all_extensions) / sizeof (struct aarch64_option_extension);
+     qsort (&all_extensions_by_on, n_extensions,
+ 	   sizeof (struct aarch64_option_extension), opt_ext_cmp);
+ }
+ 
+ /* Checks to see if enough bits from the option OPT are enabled in
+    ISA_FLAG_BITS to be able to replace the individual options with the
+    canonicalized version of the option.  This is done based on two rules:
+ 
+    1) Synthetic groups, such as +crypto we only care about the bits that are
+       turned on. e.g. +aes+sha2 can be replaced with +crypto.
+ 
+    2) Options that themselves have a bit, such as +rdma, in this case, all the
+       feature bits they turn on must be available and the bit for the option
+       itself must be.  In this case it's effectively a reduction rather than a
+       grouping. e.g. +fp+simd is not enough to turn on +rdma, for that you would
+       need +rdma+fp+simd which is reduced down to +rdma.
+ */
+ 
+ static bool
+ aarch64_contains_opt (unsigned long isa_flag_bits, opt_ext *opt)
+ {
+   unsigned long flags_check
+     = opt->is_synthetic ? opt->flags_on : opt->flag_canonical;
+ 
+   return (isa_flag_bits & flags_check) == flags_check;
+ }
+ 
  /* Return a string representation of ISA_FLAGS.  DEFAULT_ARCH_FLAGS
     gives the default set of flags which are implied by whatever -march
     we'd put out.  Our job is to figure out the minimal set of "+" and
*************** aarch64_get_extension_string_for_isa_fla
*** 245,270 ****
    const struct aarch64_option_extension *opt = NULL;
    std::string outstr = "";
  
!   /* Pass one: Find all the things we need to turn on.  As a special case,
!      we always want to put out +crc if it is enabled.  */
!   for (opt = all_extensions; opt->name != NULL; opt++)
!     if ((isa_flags & opt->flag_canonical
! 	 && !(default_arch_flags & opt->flag_canonical))
! 	|| (default_arch_flags & opt->flag_canonical
!             && opt->flag_canonical == AARCH64_ISA_CRC))
!       {
! 	outstr += "+";
! 	outstr += opt->name;
!       }
  
!   /* Pass two: Find all the things we need to turn off.  */
!   for (opt = all_extensions; opt->name != NULL; opt++)
!     if ((~isa_flags) & opt->flag_canonical
! 	&& !((~default_arch_flags) & opt->flag_canonical))
        {
! 	outstr += "+no";
! 	outstr += opt->name;
        }
  
    return outstr;
  }
--- 328,424 ----
    const struct aarch64_option_extension *opt = NULL;
    std::string outstr = "";
  
!   unsigned long isa_flag_bits = isa_flags;
  
!   /* Pass one: Minimize the search space by reducing the set of options
!      to the smallest set that still turns on the same features as before in
!      conjunction with the bits that are turned on by default for the selected
!      architecture.  */
!   for (opt = all_extensions_by_on; opt->name != NULL; opt++)
!     {
!       /* If the bit is on by default, then all the options it turns on are also
! 	 on by default due to the transitive dependencies.
! 
!          If the option is enabled explicitly in the set then we need to emit
! 	 an option for it.  Since this list is sorted by extensions setting the
! 	 largest number of featers first, we can be sure that nothing else will
! 	 ever need to set the bits we already set.  Consider the following
! 	 situation:
! 
! 	  Feat1 = A + B + C
! 	  Feat2 = A + B
! 	  Feat3 = A + D
! 	  Feat4 = B + C
! 	  Feat5 = C
! 
! 	The following results are expected:
! 
! 	  A + C = A + Feat5
! 	  B + C = Feat4
! 	  Feat4 + A = Feat1
! 	  Feat2 + Feat5 = Feat1
! 	  Feat1 + C = Feat1
!           Feat3 + Feat4 = Feat1 + D
! 
! 	This search assumes that all invidual feature bits are use visible,
! 	in other words the user must be able to do +A, +B, +C and +D.  */
!       if (aarch64_contains_opt (isa_flag_bits | default_arch_flags, opt))
        {
! 	/* We remove all the dependent bits, to prevent them from being turned
! 	   on twice.  This only works because we assume that all there are
! 	   individual options to set all bits standalone.  */
! 	isa_flag_bits &= ~opt->flags_on;
! 	isa_flag_bits |= opt->flag_canonical;
        }
+     }
+ 
+    /* By toggling bits on and off, we may have set bits on that are already
+       enabled by default.  So we mask the default set out so we don't emit an
+       option for them.  Instead of checking for this each time during Pass One
+       we just mask all default bits away at the end.  */
+    isa_flag_bits &= ~default_arch_flags;
+ 
+    /* We now have the smallest set of features we need to process.  A subsequent
+       linear scan of the bits in isa_flag_bits will allow us to print the ext
+       names.  However as a special case if CRC was enabled before, always print
+       it.  This is required because some CPUs have an incorrect specification
+       in older assemblers.  Even though CRC should be the default for these
+       cases the -mcpu values won't turn it on.  */
+   if (isa_flags & AARCH64_ISA_CRC)
+     isa_flag_bits |= AARCH64_ISA_CRC;
+ 
+   /* Pass Two:
+      Print the option names that we're sure we must turn on.  These are only
+      optional extension names.  Mandatory ones have already been removed and
+      ones we explicitly want off have been too.  */
+   for (opt = all_extensions_by_on; opt->name != NULL; opt++)
+     {
+       if (isa_flag_bits & opt->flag_canonical)
+ 	{
+ 	  outstr += "+";
+ 	  outstr += opt->name;
+ 	}
+     }
+ 
+   /* Pass Three:
+      Print out a +no for any mandatory extension that we are
+      turning off.  By this point aarch64_parse_extension would have ensured
+      that any optional extensions are turned off.  The only things left are
+      things that can't be turned off usually, e.g. something that is on by
+      default because it's mandatory and we want it off.  For turning off bits
+      we don't guarantee the smallest set of flags, but instead just emit all
+      options the user has specified.
+ 
+      The assembler requires all +<opts> to be printed before +no<opts>.  */
+   for (opt = all_extensions_by_on; opt->name != NULL; opt++)
+     {
+       if ((~isa_flags) & opt->flag_canonical
+ 		&& !((~default_arch_flags) & opt->flag_canonical))
+ 	{
+ 	  outstr += "+no";
+ 	  outstr += opt->name;
+ 	}
+     }
  
    return outstr;
  }
*************** aarch64_rewrite_mcpu (int argc, const ch
*** 345,349 ****
--- 499,505 ----
    return aarch64_rewrite_selected_cpu (argv[argc - 1]);
  }
  
+ struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
+ 
  #undef AARCH64_CPU_NAME_LENGTH
  
diff -Nrcpad gcc-8.3.0/gcc/config/aarch64/aarch64-c.c gcc-8.4.0/gcc/config/aarch64/aarch64-c.c
*** gcc-8.3.0/gcc/config/aarch64/aarch64-c.c	Sat Jan 13 17:50:35 2018
--- gcc-8.4.0/gcc/config/aarch64/aarch64-c.c	Wed Mar  4 08:30:00 2020
*************** aarch64_update_cpp_builtins (cpp_reader
*** 146,151 ****
--- 146,152 ----
        builtin_define_with_int_value ("__ARM_FEATURE_SVE_BITS", bits);
      }
  
+   aarch64_def_or_undef (TARGET_LSE, "__ARM_FEATURE_ATOMICS", pfile);
    aarch64_def_or_undef (TARGET_AES, "__ARM_FEATURE_AES", pfile);
    aarch64_def_or_undef (TARGET_SHA2, "__ARM_FEATURE_SHA2", pfile);
    aarch64_def_or_undef (TARGET_SHA3, "__ARM_FEATURE_SHA3", pfile);
diff -Nrcpad gcc-8.3.0/gcc/config/aarch64/aarch64-cores.def gcc-8.4.0/gcc/config/aarch64/aarch64-cores.def
*** gcc-8.3.0/gcc/config/aarch64/aarch64-cores.def	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/aarch64/aarch64-cores.def	Wed Mar  4 08:30:00 2020
*************** AARCH64_CORE("thunderx2t99",  thunderx2t
*** 85,90 ****
--- 85,93 ----
  /* ARM ('A') cores. */
  AARCH64_CORE("cortex-a55",  cortexa55, cortexa53, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD, cortexa53, 0x41, 0xd05, -1)
  AARCH64_CORE("cortex-a75",  cortexa75, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD, cortexa73, 0x41, 0xd0a, -1)
+ AARCH64_CORE("cortex-a76",  cortexa76, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD, cortexa72, 0x41, 0xd0b, -1)
+ AARCH64_CORE("ares",	    ares,      cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD, cortexa72, 0x41, 0xd0c, -1)
+ AARCH64_CORE("neoverse-n1", neoversen1,cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD, cortexa72, 0x41, 0xd0c, -1)
  
  /* ARMv8.3-A Architecture Processors.  */
  
diff -Nrcpad gcc-8.3.0/gcc/config/aarch64/aarch64-option-extensions.def gcc-8.4.0/gcc/config/aarch64/aarch64-option-extensions.def
*** gcc-8.3.0/gcc/config/aarch64/aarch64-option-extensions.def	Sat Jan 13 17:50:35 2018
--- gcc-8.4.0/gcc/config/aarch64/aarch64-option-extensions.def	Wed Mar  4 08:30:00 2020
***************
*** 21,108 ****
  
     Before using #include to read this file, define a macro:
  
!       AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, FEATURE_STRING)
  
!    EXT_NAME is the name of the extension, represented as a string constant.
!    FLAGS_CANONICAL is the canonical internal name for this flag.
!    FLAGS_ON are the bitwise-or of the features that enabling the extension
!    adds, or zero if enabling this extension has no effect on other features.
!    FLAGS_OFF are the bitwise-or of the features that disabling the extension
!    removes, or zero if disabling this extension has no effect on other
!    features.
!    FEAT_STRING is a string containing the entries in the 'Features' field of
!    /proc/cpuinfo on a GNU/Linux system that correspond to this architecture
!    extension being available.  Sometimes multiple entries are needed to enable
!    the extension (for example, the 'crypto' extension depends on four
!    entries: aes, pmull, sha1, sha2 being present).  In that case this field
!    should contain a space (" ") separated list of the strings in 'Features'
!    that are required.  Their order is not important.  */
  
  /* Enabling "fp" just enables "fp".
     Disabling "fp" also disables "simd", "crypto", "fp16", "aes", "sha2",
     "sha3", sm3/sm4 and "sve".  */
! AARCH64_OPT_EXTENSION("fp", AARCH64_FL_FP, 0, AARCH64_FL_SIMD | AARCH64_FL_CRYPTO |\
! 		      AARCH64_FL_F16 | AARCH64_FL_AES | AARCH64_FL_SHA2 |\
! 		      AARCH64_FL_SHA3 | AARCH64_FL_SM4 | AARCH64_FL_SVE, "fp")
  
  /* Enabling "simd" also enables "fp".
     Disabling "simd" also disables "crypto", "dotprod", "aes", "sha2", "sha3",
     "sm3/sm4" and "sve".  */
! AARCH64_OPT_EXTENSION("simd", AARCH64_FL_SIMD, AARCH64_FL_FP, AARCH64_FL_CRYPTO |\
! 		      AARCH64_FL_DOTPROD | AARCH64_FL_AES | AARCH64_FL_SHA2 |\
! 		      AARCH64_FL_SHA3 | AARCH64_FL_SM4 | AARCH64_FL_SVE,
! 		      "asimd")
  
! /* Enabling "crypto" also enables "fp" and "simd".
     Disabling "crypto" disables "crypto", "aes", "sha2", "sha3" and "sm3/sm4".  */
! AARCH64_OPT_EXTENSION("crypto", AARCH64_FL_CRYPTO, AARCH64_FL_FP | AARCH64_FL_SIMD,\
! 		      AARCH64_FL_AES | AARCH64_FL_SHA2 |AARCH64_FL_SHA3 | AARCH64_FL_SM4,\
! 		      "aes pmull sha1 sha2")
  
  /* Enabling or disabling "crc" only changes "crc".  */
! AARCH64_OPT_EXTENSION("crc", AARCH64_FL_CRC, 0, 0, "crc32")
  
  /* Enabling or disabling "lse" only changes "lse".  */
! AARCH64_OPT_EXTENSION("lse", AARCH64_FL_LSE, 0, 0, "atomics")
  
  /* Enabling "fp16" also enables "fp".
     Disabling "fp16" disables "fp16", "fp16fml" and "sve".  */
! AARCH64_OPT_EXTENSION("fp16", AARCH64_FL_F16, AARCH64_FL_FP,
! 		      AARCH64_FL_F16FML | AARCH64_FL_SVE, "fphp asimdhp")
  
  /* Enabling or disabling "rcpc" only changes "rcpc".  */
! AARCH64_OPT_EXTENSION("rcpc", AARCH64_FL_RCPC, 0, 0, "lrcpc")
  
  /* Enabling "rdma" also enables "fp", "simd".
     Disabling "rdma" just disables "rdma".  */
! AARCH64_OPT_EXTENSION("rdma", AARCH64_FL_RDMA, AARCH64_FL_FP | AARCH64_FL_SIMD, 0, "asimdrdm")
  
  /* Enabling "dotprod" also enables "simd".
     Disabling "dotprod" only disables "dotprod".  */
! AARCH64_OPT_EXTENSION("dotprod", AARCH64_FL_DOTPROD, AARCH64_FL_SIMD, 0, "asimddp")
  
  /* Enabling "aes" also enables "simd".
     Disabling "aes" just disables "aes".  */
! AARCH64_OPT_EXTENSION("aes", AARCH64_FL_AES, AARCH64_FL_SIMD, 0, "aes")
  
  /* Enabling "sha2" also enables "simd".
     Disabling "sha2" just disables "sha2".  */
! AARCH64_OPT_EXTENSION("sha2", AARCH64_FL_SHA2, AARCH64_FL_SIMD, 0, "sha1 sha2")
  
  /* Enabling "sha3" enables "simd" and "sha2".
     Disabling "sha3" just disables "sha3".  */
! AARCH64_OPT_EXTENSION("sha3", AARCH64_FL_SHA3, AARCH64_FL_SIMD | AARCH64_FL_SHA2, 0, "sha3 sha512")
  
  /* Enabling "sm4" also enables "simd".
     Disabling "sm4" just disables "sm4".  */
! AARCH64_OPT_EXTENSION("sm4", AARCH64_FL_SM4, AARCH64_FL_SIMD, 0, "sm3 sm4")
  
  /* Enabling "fp16fml" also enables "fp" and "fp16".
     Disabling "fp16fml" just disables "fp16fml".  */
! AARCH64_OPT_EXTENSION("fp16fml", AARCH64_FL_F16FML, AARCH64_FL_FP | AARCH64_FL_F16, 0, "asimdfml")
  
  /* Enabling "sve" also enables "fp16", "fp" and "simd".
     Disabling "sve" just disables "sve".  */
! AARCH64_OPT_EXTENSION("sve", AARCH64_FL_SVE, AARCH64_FL_FP | AARCH64_FL_SIMD | AARCH64_FL_F16, 0, "sve")
  
  #undef AARCH64_OPT_EXTENSION
--- 21,117 ----
  
     Before using #include to read this file, define a macro:
  
!       AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF,
! 			    SYNTHETIC, FEATURE_STRING)
  
!    - EXT_NAME is the name of the extension, represented as a string constant.
!    - FLAGS_CANONICAL is the canonical internal name for this flag.
!    - FLAGS_ON are the bitwise-or of the features that enabling the extension
!      adds, or zero if enabling this extension has no effect on other features.
!    - FLAGS_OFF are the bitwise-or of the features that disabling the extension
!      removes, or zero if disabling this extension has no effect on other
!      features.
!    - SYNTHETIC is a boolean to indicate whether the option is a purely synthetic
!      grouping of options and that the option itself has no feature bit (e.g.
!      crypto).  This is used to determine when sum of the individual options in
!      FLAGS_ON can be replaced by FLAG_CANONICAL in options minimization.  If the
!      group is synthetic then they can be replaced when all options in FLAGS_ON
!      are enabled, otherwise they can only be replaced when
!      FLAGS_ON | FLAG_CANONICAL are enabled.
!    - FEAT_STRING is a string containing the entries in the 'Features' field of
!      /proc/cpuinfo on a GNU/Linux system that correspond to this architecture
!      extension being available.  Sometimes multiple entries are needed to enable
!      the extension (for example, the 'crypto' extension depends on four
!      entries: aes, pmull, sha1, sha2 being present).  In that case this field
!      should contain a space (" ") separated list of the strings in 'Features'
!      that are required.  Their order is not important.  An empty string means
!      do not detect this feature during auto detection.  */
! 
! /* NOTE: This file is being parsed by config.gcc and so the
!    AARCH64_OPT_EXTENSION must adhere to a strict format:
!    1) No space between the AARCH64_OPT_EXTENSION and the opening (.
!    2) No space between the opening ( and the extension name.
!    3) No space after the extension name before the ,.
!    4) Spaces are only allowed after a , and around |.
!    5) Everything must be on one line.  */
  
  /* Enabling "fp" just enables "fp".
     Disabling "fp" also disables "simd", "crypto", "fp16", "aes", "sha2",
     "sha3", sm3/sm4 and "sve".  */
! AARCH64_OPT_EXTENSION("fp", AARCH64_FL_FP, 0, AARCH64_FL_SIMD | AARCH64_FL_CRYPTO | AARCH64_FL_F16 | AARCH64_FL_AES | AARCH64_FL_SHA2 | AARCH64_FL_SHA3 | AARCH64_FL_SM4 | AARCH64_FL_SVE, false, "fp")
  
  /* Enabling "simd" also enables "fp".
     Disabling "simd" also disables "crypto", "dotprod", "aes", "sha2", "sha3",
     "sm3/sm4" and "sve".  */
! AARCH64_OPT_EXTENSION("simd", AARCH64_FL_SIMD, AARCH64_FL_FP, AARCH64_FL_CRYPTO | AARCH64_FL_DOTPROD | AARCH64_FL_AES | AARCH64_FL_SHA2 | AARCH64_FL_SHA3 | AARCH64_FL_SM4 | AARCH64_FL_SVE, false, "asimd")
  
! /* Enabling "crypto" also enables "fp", "simd", "aes" and "sha2".
     Disabling "crypto" disables "crypto", "aes", "sha2", "sha3" and "sm3/sm4".  */
! AARCH64_OPT_EXTENSION("crypto", AARCH64_FL_CRYPTO, AARCH64_FL_FP | AARCH64_FL_SIMD | AARCH64_FL_AES | AARCH64_FL_SHA2, AARCH64_FL_AES | AARCH64_FL_SHA2 |AARCH64_FL_SHA3 | AARCH64_FL_SM4, true, "aes pmull sha1 sha2")
  
  /* Enabling or disabling "crc" only changes "crc".  */
! AARCH64_OPT_EXTENSION("crc", AARCH64_FL_CRC, 0, 0, false, "crc32")
  
  /* Enabling or disabling "lse" only changes "lse".  */
! AARCH64_OPT_EXTENSION("lse", AARCH64_FL_LSE, 0, 0, false, "atomics")
  
  /* Enabling "fp16" also enables "fp".
     Disabling "fp16" disables "fp16", "fp16fml" and "sve".  */
! AARCH64_OPT_EXTENSION("fp16", AARCH64_FL_F16, AARCH64_FL_FP, AARCH64_FL_F16FML | AARCH64_FL_SVE, false, "fphp asimdhp")
  
  /* Enabling or disabling "rcpc" only changes "rcpc".  */
! AARCH64_OPT_EXTENSION("rcpc", AARCH64_FL_RCPC, 0, 0, false, "lrcpc")
  
  /* Enabling "rdma" also enables "fp", "simd".
     Disabling "rdma" just disables "rdma".  */
! AARCH64_OPT_EXTENSION("rdma", AARCH64_FL_RDMA, AARCH64_FL_FP | AARCH64_FL_SIMD, 0, false, "asimdrdm")
  
  /* Enabling "dotprod" also enables "simd".
     Disabling "dotprod" only disables "dotprod".  */
! AARCH64_OPT_EXTENSION("dotprod", AARCH64_FL_DOTPROD, AARCH64_FL_SIMD, 0, false, "asimddp")
  
  /* Enabling "aes" also enables "simd".
     Disabling "aes" just disables "aes".  */
! AARCH64_OPT_EXTENSION("aes", AARCH64_FL_AES, AARCH64_FL_SIMD, 0, false, "aes")
  
  /* Enabling "sha2" also enables "simd".
     Disabling "sha2" just disables "sha2".  */
! AARCH64_OPT_EXTENSION("sha2", AARCH64_FL_SHA2, AARCH64_FL_SIMD, 0, false, "sha1 sha2")
  
  /* Enabling "sha3" enables "simd" and "sha2".
     Disabling "sha3" just disables "sha3".  */
! AARCH64_OPT_EXTENSION("sha3", AARCH64_FL_SHA3, AARCH64_FL_SIMD | AARCH64_FL_SHA2, 0, false, "sha3 sha512")
  
  /* Enabling "sm4" also enables "simd".
     Disabling "sm4" just disables "sm4".  */
! AARCH64_OPT_EXTENSION("sm4", AARCH64_FL_SM4, AARCH64_FL_SIMD, 0, false, "sm3 sm4")
  
  /* Enabling "fp16fml" also enables "fp" and "fp16".
     Disabling "fp16fml" just disables "fp16fml".  */
! AARCH64_OPT_EXTENSION("fp16fml", AARCH64_FL_F16FML, AARCH64_FL_FP | AARCH64_FL_F16, 0, false, "asimdfml")
  
  /* Enabling "sve" also enables "fp16", "fp" and "simd".
     Disabling "sve" just disables "sve".  */
! AARCH64_OPT_EXTENSION("sve", AARCH64_FL_SVE, AARCH64_FL_FP | AARCH64_FL_SIMD | AARCH64_FL_F16, 0, false, "sve")
  
  #undef AARCH64_OPT_EXTENSION
diff -Nrcpad gcc-8.3.0/gcc/config/aarch64/aarch64-tune.md gcc-8.4.0/gcc/config/aarch64/aarch64-tune.md
*** gcc-8.3.0/gcc/config/aarch64/aarch64-tune.md	Fri Feb 22 14:22:13 2019
--- gcc-8.4.0/gcc/config/aarch64/aarch64-tune.md	Wed Mar  4 08:32:12 2020
***************
*** 1,5 ****
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically by gentune.sh from aarch64-cores.def
  (define_attr "tune"
! 	"cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,thunderxt81,thunderxt83,xgene1,falkor,qdf24xx,exynosm1,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,saphira,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55"
  	(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"
! 	"cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,thunderxt81,thunderxt83,xgene1,falkor,qdf24xx,exynosm1,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,ares,neoversen1,saphira,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55"
  	(const (symbol_ref "((enum attr_tune) aarch64_tune)")))
diff -Nrcpad gcc-8.3.0/gcc/config/aarch64/aarch64.c gcc-8.4.0/gcc/config/aarch64/aarch64.c
*** gcc-8.3.0/gcc/config/aarch64/aarch64.c	Tue Jan  8 10:11:29 2019
--- gcc-8.4.0/gcc/config/aarch64/aarch64.c	Wed Mar  4 08:30:00 2020
*************** aarch64_gen_atomic_cas (rtx rval, rtx me
*** 14336,14341 ****
--- 14336,14344 ----
  void
  aarch64_split_compare_and_swap (rtx operands[])
  {
+   /* Split after prolog/epilog to avoid interactions with shrinkwrapping.  */
+   gcc_assert (epilogue_completed);
+ 
    rtx rval, mem, oldval, newval, scratch;
    machine_mode mode;
    bool is_weak;
*************** void
*** 14680,14685 ****
--- 14683,14691 ----
  aarch64_split_atomic_op (enum rtx_code code, rtx old_out, rtx new_out, rtx mem,
  			 rtx value, rtx model_rtx, rtx cond)
  {
+   /* Split after prolog/epilog to avoid interactions with shrinkwrapping.  */
+   gcc_assert (epilogue_completed);
+ 
    machine_mode mode = GET_MODE (mem);
    machine_mode wmode = (mode == DImode ? DImode : SImode);
    const enum memmodel model = memmodel_from_int (INTVAL (model_rtx));
*************** aarch64_expand_vec_perm_const_1 (struct
*** 15623,15629 ****
  	return true;
        if (d->vec_flags == VEC_SVE_DATA)
  	return aarch64_evpc_sve_tbl (d);
!       else if (d->vec_flags == VEC_SVE_DATA)
  	return aarch64_evpc_tbl (d);
      }
    return false;
--- 15629,15635 ----
  	return true;
        if (d->vec_flags == VEC_SVE_DATA)
  	return aarch64_evpc_sve_tbl (d);
!       else if (d->vec_flags == VEC_ADVSIMD)
  	return aarch64_evpc_tbl (d);
      }
    return false;
diff -Nrcpad gcc-8.3.0/gcc/config/aarch64/aarch64.md gcc-8.4.0/gcc/config/aarch64/aarch64.md
*** gcc-8.3.0/gcc/config/aarch64/aarch64.md	Tue Apr 24 16:58:49 2018
--- gcc-8.4.0/gcc/config/aarch64/aarch64.md	Wed Mar  4 08:30:00 2020
***************
*** 189,194 ****
--- 189,195 ----
      UNSPEC_CLASTB
      UNSPEC_FADDA
      UNSPEC_REV_SUBREG
+     UNSPEC_COPYSIGN
  ])
  
  (define_c_enum "unspecv" [
***************
*** 974,981 ****
  	(match_operand:GPI 1 "general_operand" ""))]
    ""
    "
!     if (MEM_P (operands[0]) && CONST_INT_P (operands[1])
! 	&& <MODE>mode == DImode
  	&& aarch64_split_dimode_const_store (operands[0], operands[1]))
        DONE;
  
--- 975,982 ----
  	(match_operand:GPI 1 "general_operand" ""))]
    ""
    "
!     if (MEM_P (operands[0]) && !MEM_VOLATILE_P (operands[0])
! 	&& CONST_INT_P (operands[1]) && <MODE>mode == DImode
  	&& aarch64_split_dimode_const_store (operands[0], operands[1]))
        DONE;
  
***************
*** 5412,5418 ****
    [(match_operand:GPI 0 "register_operand")
     (match_operand:GPF 1 "register_operand")]
    "TARGET_FLOAT
!    && ((GET_MODE_SIZE (<GPF:MODE>mode) <= GET_MODE_SIZE (<GPI:MODE>mode))
     || !flag_trapping_math || flag_fp_int_builtin_inexact)"
  {
    rtx cvt = gen_reg_rtx (<GPF:MODE>mode);
--- 5413,5419 ----
    [(match_operand:GPI 0 "register_operand")
     (match_operand:GPF 1 "register_operand")]
    "TARGET_FLOAT
!    && ((GET_MODE_BITSIZE (<GPF:MODE>mode) <= LONG_TYPE_SIZE)
     || !flag_trapping_math || flag_fp_int_builtin_inexact)"
  {
    rtx cvt = gen_reg_rtx (<GPF:MODE>mode);
***************
*** 5427,5475 ****
  ;;   LDR d2, #(1 << 63)
  ;;   BSL v2.8b, [y], [x]
  ;;
! ;; or another, equivalent, sequence using one of BSL/BIT/BIF.
! ;; aarch64_simd_bsldf will select the best suited of these instructions
! ;; to generate based on register allocation, and knows how to partially
! ;; constant fold based on the values of X and Y, so expand through that.
  
! (define_expand "copysigndf3"
!   [(match_operand:DF 0 "register_operand")
!    (match_operand:DF 1 "register_operand")
!    (match_operand:DF 2 "register_operand")]
    "TARGET_FLOAT && TARGET_SIMD"
  {
!   rtx mask = gen_reg_rtx (DImode);
!   emit_move_insn (mask, GEN_INT (HOST_WIDE_INT_1U << 63));
!   emit_insn (gen_aarch64_simd_bsldf (operands[0], mask,
! 				     operands[2], operands[1]));
    DONE;
  }
  )
  
! ;; As above, but we must first get to a 64-bit value if we wish to use
! ;; aarch64_simd_bslv2sf.
! 
! (define_expand "copysignsf3"
!   [(match_operand:SF 0 "register_operand")
!    (match_operand:SF 1 "register_operand")
!    (match_operand:SF 2 "register_operand")]
    "TARGET_FLOAT && TARGET_SIMD"
! {
!   rtx v_bitmask = gen_reg_rtx (V2SImode);
! 
!   /* Juggle modes to get us in to a vector mode for BSL.  */
!   rtx op1 = lowpart_subreg (DImode, operands[1], SFmode);
!   rtx op2 = lowpart_subreg (V2SFmode, operands[2], SFmode);
!   rtx tmp = gen_reg_rtx (V2SFmode);
!   emit_move_insn (v_bitmask,
! 		  aarch64_simd_gen_const_vector_dup (V2SImode,
! 						     HOST_WIDE_INT_M1U << 31));
!   emit_insn (gen_aarch64_simd_bslv2sf (tmp, v_bitmask, op2, op1));
!   emit_move_insn (operands[0], lowpart_subreg (SFmode, tmp, V2SFmode));
!   DONE;
! }
  )
  
  ;; For xorsign (x, y), we want to generate:
  ;;
  ;; LDR   d2, #1<<63
--- 5428,5475 ----
  ;;   LDR d2, #(1 << 63)
  ;;   BSL v2.8b, [y], [x]
  ;;
! ;; or another, equivalent, sequence using one of BSL/BIT/BIF.  Because
! ;; we expect these operations to nearly always operate on
! ;; floating-point values, we do not want the operation to be
! ;; simplified into a bit-field insert operation that operates on the
! ;; integer side, since typically that would involve three inter-bank
! ;; register copies.  As we do not expect copysign to be followed by
! ;; other logical operations on the result, it seems preferable to keep
! ;; this as an unspec operation, rather than exposing the underlying
! ;; logic to the compiler.
  
! (define_expand "copysign<GPF:mode>3"
!   [(match_operand:GPF 0 "register_operand")
!    (match_operand:GPF 1 "register_operand")
!    (match_operand:GPF 2 "register_operand")]
    "TARGET_FLOAT && TARGET_SIMD"
  {
!   rtx bitmask = gen_reg_rtx (<V_INT_EQUIV>mode);
!   emit_move_insn (bitmask, GEN_INT (HOST_WIDE_INT_M1U
! 				    << (GET_MODE_BITSIZE (<MODE>mode) - 1)));
!   emit_insn (gen_copysign<mode>3_insn (operands[0], operands[1], operands[2],
! 				       bitmask));
    DONE;
  }
  )
  
! (define_insn "copysign<GPF:mode>3_insn"
!   [(set (match_operand:GPF 0 "register_operand" "=w,w,w,r")
! 	(unspec:GPF [(match_operand:GPF 1 "register_operand" "w,0,w,r")
! 		     (match_operand:GPF 2 "register_operand" "w,w,0,0")
! 		     (match_operand:<V_INT_EQUIV> 3 "register_operand"
! 		      "0,w,w,X")]
! 	 UNSPEC_COPYSIGN))]
    "TARGET_FLOAT && TARGET_SIMD"
!   "@
!    bsl\\t%0.<Vbtype>, %2.<Vbtype>, %1.<Vbtype>
!    bit\\t%0.<Vbtype>, %2.<Vbtype>, %3.<Vbtype>
!    bif\\t%0.<Vbtype>, %1.<Vbtype>, %3.<Vbtype>
!    bfxil\\t%<w1>0, %<w1>1, #0, <sizem1>"
!   [(set_attr "type" "neon_bsl<q>,neon_bsl<q>,neon_bsl<q>,bfm")]
  )
  
+ 
  ;; For xorsign (x, y), we want to generate:
  ;;
  ;; LDR   d2, #1<<63
diff -Nrcpad gcc-8.3.0/gcc/config/aarch64/atomics.md gcc-8.4.0/gcc/config/aarch64/atomics.md
*** gcc-8.3.0/gcc/config/aarch64/atomics.md	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/aarch64/atomics.md	Wed Mar  4 08:30:00 2020
***************
*** 53,59 ****
     (clobber (match_scratch:SI 7 "=&r"))]
    ""
    "#"
!   "&& reload_completed"
    [(const_int 0)]
    {
      aarch64_split_compare_and_swap (operands);
--- 53,59 ----
     (clobber (match_scratch:SI 7 "=&r"))]
    ""
    "#"
!   "&& epilogue_completed"
    [(const_int 0)]
    {
      aarch64_split_compare_and_swap (operands);
***************
*** 77,83 ****
     (clobber (match_scratch:SI 7 "=&r"))]
    ""
    "#"
!   "&& reload_completed"
    [(const_int 0)]
    {
      aarch64_split_compare_and_swap (operands);
--- 77,83 ----
     (clobber (match_scratch:SI 7 "=&r"))]
    ""
    "#"
!   "&& epilogue_completed"
    [(const_int 0)]
    {
      aarch64_split_compare_and_swap (operands);
***************
*** 169,175 ****
     (clobber (match_scratch:SI 4 "=&r"))]
    ""
    "#"
!   "&& reload_completed"
    [(const_int 0)]
    {
      aarch64_split_atomic_op (SET, operands[0], NULL, operands[1],
--- 169,175 ----
     (clobber (match_scratch:SI 4 "=&r"))]
    ""
    "#"
!   "&& epilogue_completed"
    [(const_int 0)]
    {
      aarch64_split_atomic_op (SET, operands[0], NULL, operands[1],
***************
*** 230,236 ****
    (clobber (match_scratch:SI 4 "=&r"))]
    ""
    "#"
!   "&& reload_completed"
    [(const_int 0)]
    {
      aarch64_split_atomic_op (<CODE>, NULL, operands[3], operands[0],
--- 230,236 ----
    (clobber (match_scratch:SI 4 "=&r"))]
    ""
    "#"
!   "&& epilogue_completed"
    [(const_int 0)]
    {
      aarch64_split_atomic_op (<CODE>, NULL, operands[3], operands[0],
***************
*** 271,277 ****
     (clobber (match_scratch:SI 4 "=&r"))]
    ""
    "#"
!   "&& reload_completed"
    [(const_int 0)]
    {
       aarch64_split_atomic_op (NOT, NULL, operands[3], operands[0],
--- 271,277 ----
     (clobber (match_scratch:SI 4 "=&r"))]
    ""
    "#"
!   "&& epilogue_completed"
    [(const_int 0)]
    {
       aarch64_split_atomic_op (NOT, NULL, operands[3], operands[0],
***************
*** 317,323 ****
     (clobber (match_scratch:SI 5 "=&r"))]
    ""
    "#"
!   "&& reload_completed"
    [(const_int 0)]
    {
      aarch64_split_atomic_op (<CODE>, operands[0], operands[4], operands[1],
--- 317,323 ----
     (clobber (match_scratch:SI 5 "=&r"))]
    ""
    "#"
!   "&& epilogue_completed"
    [(const_int 0)]
    {
      aarch64_split_atomic_op (<CODE>, operands[0], operands[4], operands[1],
***************
*** 361,367 ****
     (clobber (match_scratch:SI 5 "=&r"))]
    ""
    "#"
!   "&& reload_completed"
    [(const_int 0)]
    {
      aarch64_split_atomic_op (NOT, operands[0], operands[4], operands[1],
--- 361,367 ----
     (clobber (match_scratch:SI 5 "=&r"))]
    ""
    "#"
!   "&& epilogue_completed"
    [(const_int 0)]
    {
      aarch64_split_atomic_op (NOT, operands[0], operands[4], operands[1],
***************
*** 408,414 ****
     (clobber (match_scratch:SI 4 "=&r"))]
    ""
    "#"
!   "&& reload_completed"
    [(const_int 0)]
    {
      aarch64_split_atomic_op (<CODE>, NULL, operands[0], operands[1],
--- 408,414 ----
     (clobber (match_scratch:SI 4 "=&r"))]
    ""
    "#"
!   "&& epilogue_completed"
    [(const_int 0)]
    {
      aarch64_split_atomic_op (<CODE>, NULL, operands[0], operands[1],
***************
*** 455,461 ****
     (clobber (match_scratch:SI 4 "=&r"))]
    ""
    "#"
!   "&& reload_completed"
    [(const_int 0)]
    {
      aarch64_split_atomic_op (NOT, NULL, operands[0], operands[1],
--- 455,461 ----
     (clobber (match_scratch:SI 4 "=&r"))]
    ""
    "#"
!   "&& epilogue_completed"
    [(const_int 0)]
    {
      aarch64_split_atomic_op (NOT, NULL, operands[0], operands[1],
diff -Nrcpad gcc-8.3.0/gcc/config/aarch64/driver-aarch64.c gcc-8.4.0/gcc/config/aarch64/driver-aarch64.c
*** gcc-8.3.0/gcc/config/aarch64/driver-aarch64.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/aarch64/driver-aarch64.c	Wed Mar  4 08:30:00 2020
*************** struct aarch64_arch_extension
*** 36,42 ****
    const char *feat_string;
  };
  
! #define AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \
    { EXT_NAME, FLAG_CANONICAL, FEATURE_STRING },
  static struct aarch64_arch_extension aarch64_extensions[] =
  {
--- 36,43 ----
    const char *feat_string;
  };
  
! #define AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, \
! 			      SYNTHETIC, FEATURE_STRING) \
    { EXT_NAME, FLAG_CANONICAL, FEATURE_STRING },
  static struct aarch64_arch_extension aarch64_extensions[] =
  {
*************** host_detect_local_cpu (int argc, const c
*** 178,184 ****
    unsigned int variants[2] = { ALL_VARIANTS, ALL_VARIANTS };
    unsigned int n_variants = 0;
    bool processed_exts = false;
-   const char *ext_string = "";
    unsigned long extension_flags = 0;
    unsigned long default_flags = 0;
  
--- 179,184 ----
*************** host_detect_local_cpu (int argc, const c
*** 249,275 ****
  	{
  	  for (i = 0; i < num_exts; i++)
  	    {
! 	      char *p = NULL;
! 	      char *feat_string
! 		= concat (aarch64_extensions[i].feat_string, NULL);
  	      bool enabled = true;
  
  	      /* This may be a multi-token feature string.  We need
! 		 to match all parts, which could be in any order.
! 		 If this isn't a multi-token feature string, strtok is
! 		 just going to return a pointer to feat_string.  */
! 	      p = strtok (feat_string, " ");
! 	      while (p != NULL)
  		{
! 		  if (strstr (buf, p) == NULL)
  		    {
  		      /* Failed to match this token.  Turn off the
  			 features we'd otherwise enable.  */
  		      enabled = false;
  		      break;
  		    }
! 		  p = strtok (NULL, " ");
  		}
  
  	      if (enabled)
  		extension_flags |= aarch64_extensions[i].flag;
--- 249,283 ----
  	{
  	  for (i = 0; i < num_exts; i++)
  	    {
! 	      const char *p = aarch64_extensions[i].feat_string;
! 
! 	      /* If the feature contains no HWCAPS string then ignore it for the
! 		 auto detection.  */
! 	      if (*p == '\0')
! 		continue;
! 
  	      bool enabled = true;
  
  	      /* This may be a multi-token feature string.  We need
! 		 to match all parts, which could be in any order.  */
! 	      size_t len = strlen (buf);
! 	      do
  		{
! 		  const char *end = strchr (p, ' ');
! 		  if (end == NULL)
! 		    end = strchr (p, '\0');
! 		  if (memmem (buf, len, p, end - p) == NULL)
  		    {
  		      /* Failed to match this token.  Turn off the
  			 features we'd otherwise enable.  */
  		      enabled = false;
  		      break;
  		    }
! 		  if (*end == '\0')
! 		    break;
! 		  p = end + 1;
  		}
+ 	      while (1);
  
  	      if (enabled)
  		extension_flags |= aarch64_extensions[i].flag;
*************** host_detect_local_cpu (int argc, const c
*** 348,370 ****
    if (tune)
      return res;
  
!   ext_string
!     = aarch64_get_extension_string_for_isa_flags (extension_flags,
! 						  default_flags).c_str ();
! 
!   res = concat (res, ext_string, NULL);
  
    return res;
  
  not_found:
    {
     /* If detection fails we ignore the option.
!       Clean up and return empty string.  */
  
      if (f)
        fclose (f);
  
!     return "";
    }
  }
  
--- 356,379 ----
    if (tune)
      return res;
  
!   {
!     std::string extension
!       = aarch64_get_extension_string_for_isa_flags (extension_flags,
! 						    default_flags);
!     res = concat (res, extension.c_str (), NULL);
!   }
  
    return res;
  
  not_found:
    {
     /* If detection fails we ignore the option.
!       Clean up and return NULL.  */
  
      if (f)
        fclose (f);
  
!     return NULL;
    }
  }
  
diff -Nrcpad gcc-8.3.0/gcc/config/aarch64/iterators.md gcc-8.4.0/gcc/config/aarch64/iterators.md
*** gcc-8.3.0/gcc/config/aarch64/iterators.md	Tue Apr 24 16:58:49 2018
--- gcc-8.4.0/gcc/config/aarch64/iterators.md	Wed Mar  4 08:30:00 2020
***************
*** 578,584 ****
  (define_mode_attr sizen [(QI "8") (HI "16") (SI "32") (DI "64")])
  
  ;; Give the ordinal of the MSB in the mode
! (define_mode_attr sizem1 [(QI "#7") (HI "#15") (SI "#31") (DI "#63")])
  
  ;; Attribute to describe constants acceptable in logical operations
  (define_mode_attr lconst [(SI "K") (DI "L")])
--- 578,585 ----
  (define_mode_attr sizen [(QI "8") (HI "16") (SI "32") (DI "64")])
  
  ;; Give the ordinal of the MSB in the mode
! (define_mode_attr sizem1 [(QI "#7") (HI "#15") (SI "#31") (DI "#63")
! 			  (HF "#15") (SF "#31") (DF "#63")])
  
  ;; Attribute to describe constants acceptable in logical operations
  (define_mode_attr lconst [(SI "K") (DI "L")])
***************
*** 664,670 ****
  			  (V8HF "16b") (V2SF  "8b")
  			  (V4SF "16b") (V2DF  "16b")
  			  (DI   "8b")  (DF    "8b")
! 			  (SI   "8b")])
  
  ;; Define element mode for each vector mode.
  (define_mode_attr VEL [(V8QI  "QI") (V16QI "QI") (VNx16QI "QI")
--- 665,671 ----
  			  (V8HF "16b") (V2SF  "8b")
  			  (V4SF "16b") (V2DF  "16b")
  			  (DI   "8b")  (DF    "8b")
! 			  (SI   "8b")  (SF    "8b")])
  
  ;; Define element mode for each vector mode.
  (define_mode_attr VEL [(V8QI  "QI") (V16QI "QI") (VNx16QI "QI")
diff -Nrcpad gcc-8.3.0/gcc/config/alpha/alpha.c gcc-8.4.0/gcc/config/alpha/alpha.c
*** gcc-8.3.0/gcc/config/alpha/alpha.c	Thu Jan 17 17:37:52 2019
--- gcc-8.4.0/gcc/config/alpha/alpha.c	Wed Mar  4 08:30:00 2020
*************** alpha_handle_trap_shadows (void)
*** 8835,8840 ****
--- 8835,8843 ----
  		    case CODE_LABEL:
  		      goto close_shadow;
  
+ 		    case DEBUG_INSN:
+ 		      break;
+ 
  		    default:
  		      gcc_unreachable ();
  		    }
diff -Nrcpad gcc-8.3.0/gcc/config/alpha/alpha.h gcc-8.4.0/gcc/config/alpha/alpha.h
*** gcc-8.3.0/gcc/config/alpha/alpha.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/alpha/alpha.h	Wed Mar  4 08:30:00 2020
*************** enum reg_class {
*** 678,684 ****
  
  #define CONSTANT_ADDRESS_P(X)   \
    (CONST_INT_P (X)		\
!    && (unsigned HOST_WIDE_INT) (INTVAL (X) + 0x8000) < 0x10000)
  
  /* The macros REG_OK_FOR..._P assume that the arg is a REG rtx
     and check its validity for a certain class.
--- 678,684 ----
  
  #define CONSTANT_ADDRESS_P(X)   \
    (CONST_INT_P (X)		\
!    && (UINTVAL (X) + 0x8000) < 0x10000)
  
  /* The macros REG_OK_FOR..._P assume that the arg is a REG rtx
     and check its validity for a certain class.
diff -Nrcpad gcc-8.3.0/gcc/config/arm/arm.c gcc-8.4.0/gcc/config/arm/arm.c
*** gcc-8.3.0/gcc/config/arm/arm.c	Mon Feb 11 09:26:31 2019
--- gcc-8.4.0/gcc/config/arm/arm.c	Wed Mar  4 08:30:00 2020
*************** static bool
*** 8879,8889 ****
  arm_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x)
  {
    rtx base, offset;
  
!   if (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P)
      {
!       split_const (x, &base, &offset);
!       if (GET_CODE (base) == SYMBOL_REF
  	  && !offset_within_block_p (base, INTVAL (offset)))
  	return true;
      }
--- 8879,8894 ----
  arm_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x)
  {
    rtx base, offset;
+   split_const (x, &base, &offset);
  
!   if (SYMBOL_REF_P (base))
      {
!       /* Function symbols cannot have an offset due to the Thumb bit.  */
!       if ((SYMBOL_REF_FLAGS (base) & SYMBOL_FLAG_FUNCTION)
! 	  && INTVAL (offset) != 0)
! 	return true;
! 
!       if (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P
  	  && !offset_within_block_p (base, INTVAL (offset)))
  	return true;
      }
*************** neon_valid_immediate (rtx op, machine_mo
*** 11930,11937 ****
    else
      {
        n_elts = 1;
!       if (mode == VOIDmode)
! 	mode = DImode;
      }
  
    innersize = GET_MODE_UNIT_SIZE (mode);
--- 11935,11941 ----
    else
      {
        n_elts = 1;
!       gcc_assert (mode != VOIDmode);
      }
  
    innersize = GET_MODE_UNIT_SIZE (mode);
*************** ldm_stm_operation_p (rtx op, bool load,
*** 13095,13100 ****
--- 13099,13107 ----
    if (load && (REGNO (reg) == SP_REGNUM) && (REGNO (addr) != SP_REGNUM))
      return false;
  
+   if (regno == REGNO (addr))
+     addr_reg_in_reglist = true;
+ 
    for (; i < count; i++)
      {
        elt = XVECEXP (op, 0, i);
*************** load_multiple_sequence (rtx *operands, i
*** 13289,13295 ****
    int unsorted_regs[MAX_LDM_STM_OPS];
    HOST_WIDE_INT unsorted_offsets[MAX_LDM_STM_OPS];
    int order[MAX_LDM_STM_OPS];
-   rtx base_reg_rtx = NULL;
    int base_reg = -1;
    int i, ldm_case;
  
--- 13296,13301 ----
*************** load_multiple_sequence (rtx *operands, i
*** 13334,13340 ****
  	  if (i == 0)
  	    {
  	      base_reg = REGNO (reg);
- 	      base_reg_rtx = reg;
  	      if (TARGET_THUMB1 && base_reg > LAST_LO_REGNUM)
  		return 0;
  	    }
--- 13340,13345 ----
*************** load_multiple_sequence (rtx *operands, i
*** 13393,13402 ****
        *load_offset = unsorted_offsets[order[0]];
      }
  
-   if (TARGET_THUMB1
-       && !peep2_reg_dead_p (nops, base_reg_rtx))
-     return 0;
- 
    if (unsorted_offsets[order[0]] == 0)
      ldm_case = 1; /* ldmia */
    else if (TARGET_ARM && unsorted_offsets[order[0]] == 4)
--- 13398,13403 ----
*************** gen_ldm_seq (rtx *operands, int nops, bo
*** 13772,13780 ****
  
    if (TARGET_THUMB1)
      {
-       gcc_assert (peep2_reg_dead_p (nops, base_reg_rtx));
        gcc_assert (ldm_case == 1 || ldm_case == 5);
!       write_back = TRUE;
      }
  
    if (ldm_case == 5)
--- 13773,13789 ----
  
    if (TARGET_THUMB1)
      {
        gcc_assert (ldm_case == 1 || ldm_case == 5);
! 
!       /* Thumb-1 ldm uses writeback except if the base is loaded.  */
!       write_back = true;
!       for (i = 0; i < nops; i++)
! 	if (base_reg == regs[i])
! 	  write_back = false;
! 
!       /* Ensure the base is dead if it is updated.  */
!       if (write_back && !peep2_reg_dead_p (nops, base_reg_rtx))
! 	return false;
      }
  
    if (ldm_case == 5)
*************** gen_ldm_seq (rtx *operands, int nops, bo
*** 13782,13789 ****
        rtx newbase = TARGET_THUMB1 ? base_reg_rtx : gen_rtx_REG (SImode, regs[0]);
        emit_insn (gen_addsi3 (newbase, base_reg_rtx, GEN_INT (offset)));
        offset = 0;
!       if (!TARGET_THUMB1)
! 	base_reg_rtx = newbase;
      }
  
    for (i = 0; i < nops; i++)
--- 13791,13797 ----
        rtx newbase = TARGET_THUMB1 ? base_reg_rtx : gen_rtx_REG (SImode, regs[0]);
        emit_insn (gen_addsi3 (newbase, base_reg_rtx, GEN_INT (offset)));
        offset = 0;
!       base_reg_rtx = newbase;
      }
  
    for (i = 0; i < nops; i++)
*************** arm_compute_save_core_reg_mask (void)
*** 19508,19513 ****
--- 19516,19550 ----
    return save_reg_mask;
  }
  
+ /* Return a mask for the call-clobbered low registers that are unused
+    at the end of the prologue.  */
+ static unsigned long
+ thumb1_prologue_unused_call_clobbered_lo_regs (void)
+ {
+   unsigned long mask = 0;
+ 
+   for (int reg = 0; reg <= LAST_LO_REGNUM; reg++)
+     if (!callee_saved_reg_p (reg)
+ 	&& !REGNO_REG_SET_P (df_get_live_out (ENTRY_BLOCK_PTR_FOR_FN (cfun)),
+ 			     reg))
+       mask |= 1 << reg;
+   return mask;
+ }
+ 
+ /* Similarly for the start of the epilogue.  */
+ static unsigned long
+ thumb1_epilogue_unused_call_clobbered_lo_regs (void)
+ {
+   unsigned long mask = 0;
+ 
+   for (int reg = 0; reg <= LAST_LO_REGNUM; reg++)
+     if (!callee_saved_reg_p (reg)
+ 	&& !REGNO_REG_SET_P (df_get_live_in (EXIT_BLOCK_PTR_FOR_FN (cfun)),
+ 			     reg))
+       mask |= 1 << reg;
+   return mask;
+ }
+ 
  /* Compute a bit mask of which core registers need to be
     saved on the stack for the current function.  */
  static unsigned long
*************** thumb1_compute_save_core_reg_mask (void)
*** 19539,19548 ****
    if (mask & 0xff || thumb_force_lr_save ())
      mask |= (1 << LR_REGNUM);
  
!   /* Make sure we have a low work register if we need one.
!      We will need one if we are going to push a high register,
!      but we are not currently intending to push a low register.  */
    if ((mask & 0xff) == 0
        && ((mask & 0x0f00) || TARGET_BACKTRACE))
      {
        /* Use thumb_find_work_register to choose which register
--- 19576,19594 ----
    if (mask & 0xff || thumb_force_lr_save ())
      mask |= (1 << LR_REGNUM);
  
!   bool call_clobbered_scratch
!     = (thumb1_prologue_unused_call_clobbered_lo_regs ()
!        && thumb1_epilogue_unused_call_clobbered_lo_regs ());
! 
!   /* Make sure we have a low work register if we need one.  We will
!      need one if we are going to push a high register, but we are not
!      currently intending to push a low register.  However if both the
!      prologue and epilogue have a spare call-clobbered low register,
!      then we won't need to find an additional work register.  It does
!      not need to be the same register in the prologue and
!      epilogue.  */
    if ((mask & 0xff) == 0
+       && !call_clobbered_scratch
        && ((mask & 0x0f00) || TARGET_BACKTRACE))
      {
        /* Use thumb_find_work_register to choose which register
*************** thumb1_unexpanded_epilogue (void)
*** 24768,24779 ****
        unsigned long mask = live_regs_mask & 0xff;
        int next_hi_reg;
  
!       /* The available low registers depend on the size of the value we are
!          returning.  */
!       if (size <= 12)
! 	mask |=  1 << 3;
!       if (size <= 8)
! 	mask |= 1 << 2;
  
        if (mask == 0)
  	/* Oh dear!  We have no low registers into which we can pop
--- 24814,24820 ----
        unsigned long mask = live_regs_mask & 0xff;
        int next_hi_reg;
  
!       mask |= thumb1_epilogue_unused_call_clobbered_lo_regs ();
  
        if (mask == 0)
  	/* Oh dear!  We have no low registers into which we can pop
*************** thumb1_unexpanded_epilogue (void)
*** 24781,24787 ****
  	internal_error
  	  ("no low registers available for popping high registers");
  
!       for (next_hi_reg = 8; next_hi_reg < 13; next_hi_reg++)
  	if (live_regs_mask & (1 << next_hi_reg))
  	  break;
  
--- 24822,24828 ----
  	internal_error
  	  ("no low registers available for popping high registers");
  
!       for (next_hi_reg = 12; next_hi_reg > LAST_LO_REGNUM; next_hi_reg--)
  	if (live_regs_mask & (1 << next_hi_reg))
  	  break;
  
*************** thumb1_unexpanded_epilogue (void)
*** 24789,24795 ****
  	{
  	  /* Find lo register(s) into which the high register(s) can
               be popped.  */
! 	  for (regno = 0; regno <= LAST_LO_REGNUM; regno++)
  	    {
  	      if (mask & (1 << regno))
  		high_regs_pushed--;
--- 24830,24836 ----
  	{
  	  /* Find lo register(s) into which the high register(s) can
               be popped.  */
! 	  for (regno = LAST_LO_REGNUM; regno >= 0; regno--)
  	    {
  	      if (mask & (1 << regno))
  		high_regs_pushed--;
*************** thumb1_unexpanded_epilogue (void)
*** 24797,24816 ****
  		break;
  	    }
  
! 	  mask &= (2 << regno) - 1;	/* A noop if regno == 8 */
  
  	  /* Pop the values into the low register(s).  */
  	  thumb_pop (asm_out_file, mask);
  
  	  /* Move the value(s) into the high registers.  */
! 	  for (regno = 0; regno <= LAST_LO_REGNUM; regno++)
  	    {
  	      if (mask & (1 << regno))
  		{
  		  asm_fprintf (asm_out_file, "\tmov\t%r, %r\n", next_hi_reg,
  			       regno);
  
! 		  for (next_hi_reg++; next_hi_reg < 13; next_hi_reg++)
  		    if (live_regs_mask & (1 << next_hi_reg))
  		      break;
  		}
--- 24838,24859 ----
  		break;
  	    }
  
! 	  if (high_regs_pushed == 0 && regno >= 0)
! 	    mask &= ~((1 << regno) - 1);
  
  	  /* Pop the values into the low register(s).  */
  	  thumb_pop (asm_out_file, mask);
  
  	  /* Move the value(s) into the high registers.  */
! 	  for (regno = LAST_LO_REGNUM; regno >= 0; regno--)
  	    {
  	      if (mask & (1 << regno))
  		{
  		  asm_fprintf (asm_out_file, "\tmov\t%r, %r\n", next_hi_reg,
  			       regno);
  
! 		  for (next_hi_reg--; next_hi_reg > LAST_LO_REGNUM;
! 		       next_hi_reg--)
  		    if (live_regs_mask & (1 << next_hi_reg))
  		      break;
  		}
*************** thumb1_expand_prologue (void)
*** 25192,25201 ****
  	  break;
  
        /* Here we need to mask out registers used for passing arguments
! 	 even if they can be pushed.  This is to avoid using them to stash the high
! 	 registers.  Such kind of stash may clobber the use of arguments.  */
        pushable_regs = l_mask & (~arg_regs_mask);
!       if (lr_needs_saving)
  	pushable_regs &= ~(1 << LR_REGNUM);
  
        if (pushable_regs == 0)
--- 25235,25254 ----
  	  break;
  
        /* Here we need to mask out registers used for passing arguments
! 	 even if they can be pushed.  This is to avoid using them to
! 	 stash the high registers.  Such kind of stash may clobber the
! 	 use of arguments.  */
        pushable_regs = l_mask & (~arg_regs_mask);
!       pushable_regs |= thumb1_prologue_unused_call_clobbered_lo_regs ();
! 
!       /* Normally, LR can be used as a scratch register once it has been
! 	 saved; but if the function examines its own return address then
! 	 the value is still live and we need to avoid using it.  */
!       bool return_addr_live
! 	= REGNO_REG_SET_P (df_get_live_out (ENTRY_BLOCK_PTR_FOR_FN (cfun)),
! 			   LR_REGNUM);
! 
!       if (lr_needs_saving || return_addr_live)
  	pushable_regs &= ~(1 << LR_REGNUM);
  
        if (pushable_regs == 0)
*************** thumb1_expand_prologue (void)
*** 25236,25241 ****
--- 25289,25299 ----
  	      push_mask |= 1 << LR_REGNUM;
  	      real_regs_mask |= 1 << LR_REGNUM;
  	      lr_needs_saving = false;
+ 	      /* If the return address is not live at this point, we
+ 		 can add LR to the list of registers that we can use
+ 		 for pushes.  */
+ 	      if (!return_addr_live)
+ 		pushable_regs |= 1 << LR_REGNUM;
  	    }
  
  	  insn = thumb1_emit_multi_reg_push (push_mask, real_regs_mask);
diff -Nrcpad gcc-8.3.0/gcc/config/arm/arm.h gcc-8.4.0/gcc/config/arm/arm.h
*** gcc-8.3.0/gcc/config/arm/arm.h	Thu Mar 22 17:24:41 2018
--- gcc-8.4.0/gcc/config/arm/arm.h	Wed Mar  4 08:30:00 2020
*************** extern tree arm_fp16_type_node;
*** 191,197 ****
  /* FPU supports converting between HFmode and DFmode in a single hardware
     step.  */
  #define TARGET_FP16_TO_DOUBLE						\
!   (TARGET_HARD_FLOAT && (TARGET_FP16 && TARGET_VFP5))
  
  /* FPU supports fused-multiply-add operations.  */
  #define TARGET_FMA (bitmap_bit_p (arm_active_target.isa, isa_bit_vfpv4))
--- 191,197 ----
  /* FPU supports converting between HFmode and DFmode in a single hardware
     step.  */
  #define TARGET_FP16_TO_DOUBLE						\
!   (TARGET_HARD_FLOAT && TARGET_FP16 && TARGET_VFP5 && TARGET_VFP_DOUBLE)
  
  /* FPU supports fused-multiply-add operations.  */
  #define TARGET_FMA (bitmap_bit_p (arm_active_target.isa, isa_bit_vfpv4))
diff -Nrcpad gcc-8.3.0/gcc/config/arm/arm.md gcc-8.4.0/gcc/config/arm/arm.md
*** gcc-8.3.0/gcc/config/arm/arm.md	Fri Mar 23 16:43:43 2018
--- gcc-8.4.0/gcc/config/arm/arm.md	Wed Mar  4 08:30:00 2020
***************
*** 4448,4509 ****
  ; ARMv6+ unaligned load/store instructions (used for packed structure accesses).
  
  (define_insn "unaligned_loadsi"
!   [(set (match_operand:SI 0 "s_register_operand" "=l,r")
! 	(unspec:SI [(match_operand:SI 1 "memory_operand" "Uw,m")]
  		   UNSPEC_UNALIGNED_LOAD))]
    "unaligned_access"
!   "ldr%?\t%0, %1\t@ unaligned"
!   [(set_attr "arch" "t2,any")
!    (set_attr "length" "2,4")
!    (set_attr "predicable" "yes")
!    (set_attr "predicable_short_it" "yes,no")
     (set_attr "type" "load_4")])
  
  (define_insn "unaligned_loadhis"
    [(set (match_operand:SI 0 "s_register_operand" "=r")
  	(sign_extend:SI
  	  (unspec:HI [(match_operand:HI 1 "memory_operand" "Uh")]
  		     UNSPEC_UNALIGNED_LOAD)))]
!   "unaligned_access"
    "ldrsh%?\t%0, %1\t@ unaligned"
    [(set_attr "predicable" "yes")
     (set_attr "type" "load_byte")])
  
  (define_insn "unaligned_loadhiu"
!   [(set (match_operand:SI 0 "s_register_operand" "=l,r")
  	(zero_extend:SI
! 	  (unspec:HI [(match_operand:HI 1 "memory_operand" "Uw,m")]
  		     UNSPEC_UNALIGNED_LOAD)))]
    "unaligned_access"
!   "ldrh%?\t%0, %1\t@ unaligned"
!   [(set_attr "arch" "t2,any")
!    (set_attr "length" "2,4")
!    (set_attr "predicable" "yes")
!    (set_attr "predicable_short_it" "yes,no")
     (set_attr "type" "load_byte")])
  
  (define_insn "unaligned_storesi"
!   [(set (match_operand:SI 0 "memory_operand" "=Uw,m")
! 	(unspec:SI [(match_operand:SI 1 "s_register_operand" "l,r")]
  		   UNSPEC_UNALIGNED_STORE))]
    "unaligned_access"
!   "str%?\t%1, %0\t@ unaligned"
!   [(set_attr "arch" "t2,any")
!    (set_attr "length" "2,4")
!    (set_attr "predicable" "yes")
!    (set_attr "predicable_short_it" "yes,no")
     (set_attr "type" "store_4")])
  
  (define_insn "unaligned_storehi"
!   [(set (match_operand:HI 0 "memory_operand" "=Uw,m")
! 	(unspec:HI [(match_operand:HI 1 "s_register_operand" "l,r")]
  		   UNSPEC_UNALIGNED_STORE))]
    "unaligned_access"
!   "strh%?\t%1, %0\t@ unaligned"
!   [(set_attr "arch" "t2,any")
!    (set_attr "length" "2,4")
!    (set_attr "predicable" "yes")
!    (set_attr "predicable_short_it" "yes,no")
     (set_attr "type" "store_4")])
  
  
--- 4448,4525 ----
  ; ARMv6+ unaligned load/store instructions (used for packed structure accesses).
  
  (define_insn "unaligned_loadsi"
!   [(set (match_operand:SI 0 "s_register_operand" "=l,l,r")
! 	(unspec:SI [(match_operand:SI 1 "memory_operand" "m,Uw,m")]
  		   UNSPEC_UNALIGNED_LOAD))]
    "unaligned_access"
!   "@
!    ldr\t%0, %1\t@ unaligned
!    ldr%?\t%0, %1\t@ unaligned
!    ldr%?\t%0, %1\t@ unaligned"
!   [(set_attr "arch" "t1,t2,32")
!    (set_attr "length" "2,2,4")
!    (set_attr "predicable" "no,yes,yes")
!    (set_attr "predicable_short_it" "no,yes,no")
     (set_attr "type" "load_4")])
  
+ ;; The 16-bit Thumb1 variant of ldrsh requires two registers in the
+ ;; address (there's no immediate format).  That's tricky to support
+ ;; here and we don't really need this pattern for that case, so only
+ ;; enable for 32-bit ISAs.
  (define_insn "unaligned_loadhis"
    [(set (match_operand:SI 0 "s_register_operand" "=r")
  	(sign_extend:SI
  	  (unspec:HI [(match_operand:HI 1 "memory_operand" "Uh")]
  		     UNSPEC_UNALIGNED_LOAD)))]
!   "unaligned_access && TARGET_32BIT"
    "ldrsh%?\t%0, %1\t@ unaligned"
    [(set_attr "predicable" "yes")
     (set_attr "type" "load_byte")])
  
  (define_insn "unaligned_loadhiu"
!   [(set (match_operand:SI 0 "s_register_operand" "=l,l,r")
  	(zero_extend:SI
! 	  (unspec:HI [(match_operand:HI 1 "memory_operand" "m,Uw,m")]
  		     UNSPEC_UNALIGNED_LOAD)))]
    "unaligned_access"
!   "@
!    ldrh\t%0, %1\t@ unaligned
!    ldrh%?\t%0, %1\t@ unaligned
!    ldrh%?\t%0, %1\t@ unaligned"
!   [(set_attr "arch" "t1,t2,32")
!    (set_attr "length" "2,2,4")
!    (set_attr "predicable" "no,yes,yes")
!    (set_attr "predicable_short_it" "no,yes,no")
     (set_attr "type" "load_byte")])
  
  (define_insn "unaligned_storesi"
!   [(set (match_operand:SI 0 "memory_operand" "=m,Uw,m")
! 	(unspec:SI [(match_operand:SI 1 "s_register_operand" "l,l,r")]
  		   UNSPEC_UNALIGNED_STORE))]
    "unaligned_access"
!   "@
!    str\t%1, %0\t@ unaligned
!    str%?\t%1, %0\t@ unaligned
!    str%?\t%1, %0\t@ unaligned"
!   [(set_attr "arch" "t1,t2,32")
!    (set_attr "length" "2,2,4")
!    (set_attr "predicable" "no,yes,yes")
!    (set_attr "predicable_short_it" "no,yes,no")
     (set_attr "type" "store_4")])
  
  (define_insn "unaligned_storehi"
!   [(set (match_operand:HI 0 "memory_operand" "=m,Uw,m")
! 	(unspec:HI [(match_operand:HI 1 "s_register_operand" "l,l,r")]
  		   UNSPEC_UNALIGNED_STORE))]
    "unaligned_access"
!   "@
!    strh\t%1, %0\t@ unaligned
!    strh%?\t%1, %0\t@ unaligned
!    strh%?\t%1, %0\t@ unaligned"
!   [(set_attr "arch" "t1,t2,32")
!    (set_attr "length" "2,2,4")
!    (set_attr "predicable" "no,yes,yes")
!    (set_attr "predicable_short_it" "no,yes,no")
     (set_attr "type" "store_4")])
  
  
***************
*** 5976,6027 ****
          }
      }
  
!   if (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P)
      {
!       split_const (operands[1], &base, &offset);
!       if (GET_CODE (base) == SYMBOL_REF
! 	  && !offset_within_block_p (base, INTVAL (offset)))
! 	{
! 	  tmp = can_create_pseudo_p () ? gen_reg_rtx (SImode) : operands[0];
! 	  emit_move_insn (tmp, base);
! 	  emit_insn (gen_addsi3 (operands[0], tmp, offset));
! 	  DONE;
! 	}
      }
  
    /* Recognize the case where operand[1] is a reference to thread-local
!      data and load its address to a register.  */
    if (arm_tls_referenced_p (operands[1]))
!     {
!       rtx tmp = operands[1];
!       rtx addend = NULL;
! 
!       if (GET_CODE (tmp) == CONST && GET_CODE (XEXP (tmp, 0)) == PLUS)
!         {
!           addend = XEXP (XEXP (tmp, 0), 1);
!           tmp = XEXP (XEXP (tmp, 0), 0);
!         }
! 
!       gcc_assert (GET_CODE (tmp) == SYMBOL_REF);
!       gcc_assert (SYMBOL_REF_TLS_MODEL (tmp) != 0);
! 
!       tmp = legitimize_tls_address (tmp,
! 				    !can_create_pseudo_p () ? operands[0] : 0);
!       if (addend)
!         {
!           tmp = gen_rtx_PLUS (SImode, tmp, addend);
!           tmp = force_operand (tmp, operands[0]);
!         }
!       operands[1] = tmp;
!     }
    else if (flag_pic
  	   && (CONSTANT_P (operands[1])
  	       || symbol_mentioned_p (operands[1])
  	       || label_mentioned_p (operands[1])))
!       operands[1] = legitimize_pic_address (operands[1], SImode,
! 					    (!can_create_pseudo_p ()
! 					     ? operands[0]
! 					     : 0));
    }
    "
  )
--- 5992,6020 ----
          }
      }
  
!   split_const (operands[1], &base, &offset);
!   if (INTVAL (offset) != 0
!       && targetm.cannot_force_const_mem (SImode, operands[1]))
      {
!       tmp = can_create_pseudo_p () ? gen_reg_rtx (SImode) : operands[0];
!       emit_move_insn (tmp, base);
!       emit_insn (gen_addsi3 (operands[0], tmp, offset));
!       DONE;
      }
  
+   tmp = can_create_pseudo_p () ? NULL_RTX : operands[0];
+ 
    /* Recognize the case where operand[1] is a reference to thread-local
!      data and load its address to a register.  Offsets have been split off
!      already.  */
    if (arm_tls_referenced_p (operands[1]))
!     operands[1] = legitimize_tls_address (operands[1], tmp);
    else if (flag_pic
  	   && (CONSTANT_P (operands[1])
  	       || symbol_mentioned_p (operands[1])
  	       || label_mentioned_p (operands[1])))
!     operands[1] =
!       legitimize_pic_address (operands[1], SImode, tmp);
    }
    "
  )
diff -Nrcpad gcc-8.3.0/gcc/config/arm/arm_acle.h gcc-8.4.0/gcc/config/arm/arm_acle.h
*** gcc-8.3.0/gcc/config/arm/arm_acle.h	Fri Jun  8 08:18:43 2018
--- gcc-8.4.0/gcc/config/arm/arm_acle.h	Wed Mar  4 08:30:00 2020
*************** __arm_mrrc2 (const unsigned int __coproc
*** 174,181 ****
  #endif /* (!__thumb__ || __thumb2__) &&  __ARM_ARCH >= 4.  */
  
  #pragma GCC push_options
! #if __ARM_ARCH >= 8
  #pragma GCC target ("arch=armv8-a+crc")
  
  __extension__ static __inline uint32_t __attribute__ ((__always_inline__))
  __crc32b (uint32_t __a, uint8_t __b)
--- 174,185 ----
  #endif /* (!__thumb__ || __thumb2__) &&  __ARM_ARCH >= 4.  */
  
  #pragma GCC push_options
! #ifdef __ARM_FEATURE_CRC32
! #ifdef __ARM_FP
! #pragma GCC target ("arch=armv8-a+crc+simd")
! #else
  #pragma GCC target ("arch=armv8-a+crc")
+ #endif
  
  __extension__ static __inline uint32_t __attribute__ ((__always_inline__))
  __crc32b (uint32_t __a, uint8_t __b)
*************** __crc32cd (uint32_t __a, uint64_t __b)
*** 235,241 ****
  }
  #endif
  
! #endif /* __ARM_ARCH >= 8.  */
  #pragma GCC pop_options
  
  #ifdef __cplusplus
--- 239,245 ----
  }
  #endif
  
! #endif /* __ARM_FEATURE_CRC32  */
  #pragma GCC pop_options
  
  #ifdef __cplusplus
diff -Nrcpad gcc-8.3.0/gcc/config/arm/constraints.md gcc-8.4.0/gcc/config/arm/constraints.md
*** gcc-8.3.0/gcc/config/arm/constraints.md	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/arm/constraints.md	Wed Mar  4 08:30:00 2020
***************
*** 31,37 ****
  ;; 'H' was previously used for FPA.
  
  ;; The following multi-letter normal constraints have been used:
! ;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, Dl, DL, Do, Dv, Dy, Di, Dt, Dp, Dz
  ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe
  ;; in Thumb-2 state: Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py
  ;; in all states: Pf
--- 31,38 ----
  ;; 'H' was previously used for FPA.
  
  ;; The following multi-letter normal constraints have been used:
! ;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, DN, Dm, Dl, DL, Do, Dv, Dy, Di,
! ;;			 Dt, Dp, Dz
  ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe
  ;; in Thumb-2 state: Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py
  ;; in all states: Pf
***************
*** 294,307 ****
   (and (match_code "const_double,const_int")
        (match_test "TARGET_32BIT && arm_const_double_by_immediates (op)")))
  
! (define_constraint "Dn"
   "@internal
!   In ARM/Thumb-2 state a const_vector or const_int which can be loaded with a
!   Neon vmov immediate instruction."
!  (and (match_code "const_vector,const_int")
        (match_test "TARGET_32BIT
  		   && imm_for_neon_mov_operand (op, GET_MODE (op))")))
  
  (define_constraint "Dl"
   "@internal
    In ARM/Thumb-2 state a const_vector which can be used with a Neon vorr or
--- 295,322 ----
   (and (match_code "const_double,const_int")
        (match_test "TARGET_32BIT && arm_const_double_by_immediates (op)")))
  
! (define_constraint "Dm"
   "@internal
!   In ARM/Thumb-2 state a const_vector which can be loaded with a Neon vmov
!   immediate instruction."
!  (and (match_code "const_vector")
        (match_test "TARGET_32BIT
  		   && imm_for_neon_mov_operand (op, GET_MODE (op))")))
  
+ (define_constraint "Dn"
+  "@internal
+   In ARM/Thumb-2 state a DImode const_int which can be loaded with a Neon vmov
+   immediate instruction."
+  (and (match_code "const_int")
+       (match_test "TARGET_32BIT && imm_for_neon_mov_operand (op, DImode)")))
+ 
+ (define_constraint "DN"
+  "@internal
+   In ARM/Thumb-2 state a TImode const_int which can be loaded with a Neon vmov
+   immediate instruction."
+  (and (match_code "const_int")
+       (match_test "TARGET_32BIT && imm_for_neon_mov_operand (op, TImode)")))
+ 
  (define_constraint "Dl"
   "@internal
    In ARM/Thumb-2 state a const_vector which can be used with a Neon vorr or
diff -Nrcpad gcc-8.3.0/gcc/config/arm/neon.md gcc-8.4.0/gcc/config/arm/neon.md
*** gcc-8.3.0/gcc/config/arm/neon.md	Fri Nov 23 12:20:20 2018
--- gcc-8.4.0/gcc/config/arm/neon.md	Wed Mar  4 08:30:00 2020
***************
*** 25,38 ****
  
  (define_insn "*neon_mov<mode>"
    [(set (match_operand:VDX 0 "nonimmediate_operand"
! 	  "=w,Un,w, w,  ?r,?w,?r,?r, ?Us")
  	(match_operand:VDX 1 "general_operand"
! 	  " w,w, Dn,Uni, w, r, r, Usi,r"))]
    "TARGET_NEON
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
  {
!   if (which_alternative == 2)
      {
        int width, is_valid;
        static char templ[40];
--- 25,38 ----
  
  (define_insn "*neon_mov<mode>"
    [(set (match_operand:VDX 0 "nonimmediate_operand"
! 	  "=w,Un,w, w, w,  ?r,?w,?r,?r, ?Us")
  	(match_operand:VDX 1 "general_operand"
! 	  " w,w, Dm,Dn,Uni, w, r, r, Usi,r"))]
    "TARGET_NEON
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
  {
!   if (which_alternative == 2 || which_alternative == 3)
      {
        int width, is_valid;
        static char templ[40];
***************
*** 53,83 ****
    switch (which_alternative)
      {
      case 0: return "vmov\t%P0, %P1  @ <mode>";
!     case 1: case 3: return output_move_neon (operands);
!     case 2: gcc_unreachable ();
!     case 4: return "vmov\t%Q0, %R0, %P1  @ <mode>";
!     case 5: return "vmov\t%P0, %Q1, %R1  @ <mode>";
      default: return output_move_double (operands, true, NULL);
      }
  }
   [(set_attr "type" "neon_move<q>,neon_store1_1reg,neon_move<q>,\
!                     neon_load1_1reg, neon_to_gp<q>,neon_from_gp<q>,mov_reg,\
!                     neon_load1_2reg, neon_store1_2reg")
!   (set_attr "length" "4,4,4,4,4,4,8,8,8")
!   (set_attr "arm_pool_range"     "*,*,*,1020,*,*,*,1020,*")
!   (set_attr "thumb2_pool_range"     "*,*,*,1018,*,*,*,1018,*")
!   (set_attr "neg_pool_range" "*,*,*,1004,*,*,*,1004,*")])
  
  (define_insn "*neon_mov<mode>"
    [(set (match_operand:VQXMOV 0 "nonimmediate_operand"
!   	  "=w,Un,w, w,  ?r,?w,?r,?r,  ?Us")
  	(match_operand:VQXMOV 1 "general_operand"
! 	  " w,w, Dn,Uni, w, r, r, Usi, r"))]
    "TARGET_NEON
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
  {
!   if (which_alternative == 2)
      {
        int width, is_valid;
        static char templ[40];
--- 53,84 ----
    switch (which_alternative)
      {
      case 0: return "vmov\t%P0, %P1  @ <mode>";
!     case 1: case 4: return output_move_neon (operands);
!     case 2: case 3: gcc_unreachable ();
!     case 5: return "vmov\t%Q0, %R0, %P1  @ <mode>";
!     case 6: return "vmov\t%P0, %Q1, %R1  @ <mode>";
      default: return output_move_double (operands, true, NULL);
      }
  }
   [(set_attr "type" "neon_move<q>,neon_store1_1reg,neon_move<q>,\
!                     neon_move<q>,neon_load1_1reg, neon_to_gp<q>,\
! 		    neon_from_gp<q>,mov_reg,neon_load1_2reg,\
! 		    neon_store1_2reg")
!   (set_attr "length" "4,4,4,4,4,4,4,8,8,8")
!   (set_attr "arm_pool_range"     "*,*,*,*,1020,*,*,*,1020,*")
!   (set_attr "thumb2_pool_range"     "*,*,*,*,1018,*,*,*,1018,*")
!   (set_attr "neg_pool_range" "*,*,*,*,1004,*,*,*,1004,*")])
  
  (define_insn "*neon_mov<mode>"
    [(set (match_operand:VQXMOV 0 "nonimmediate_operand"
! 	  "=w,Un,w, w, w,  ?r,?w,?r,?r,  ?Us")
  	(match_operand:VQXMOV 1 "general_operand"
! 	  " w,w, Dm,DN,Uni, w, r, r, Usi, r"))]
    "TARGET_NEON
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
  {
!   if (which_alternative == 2 || which_alternative == 3)
      {
        int width, is_valid;
        static char templ[40];
***************
*** 98,117 ****
    switch (which_alternative)
      {
      case 0: return "vmov\t%q0, %q1  @ <mode>";
!     case 1: case 3: return output_move_neon (operands);
!     case 2: gcc_unreachable ();
!     case 4: return "vmov\t%Q0, %R0, %e1  @ <mode>\;vmov\t%J0, %K0, %f1";
!     case 5: return "vmov\t%e0, %Q1, %R1  @ <mode>\;vmov\t%f0, %J1, %K1";
      default: return output_move_quad (operands);
      }
  }
    [(set_attr "type" "neon_move_q,neon_store2_2reg_q,neon_move_q,\
!                      neon_load2_2reg_q,neon_to_gp_q,neon_from_gp_q,\
!                      mov_reg,neon_load1_4reg,neon_store1_4reg")
!    (set_attr "length" "4,8,4,8,8,8,16,8,16")
!    (set_attr "arm_pool_range" "*,*,*,1020,*,*,*,1020,*")
!    (set_attr "thumb2_pool_range" "*,*,*,1018,*,*,*,1018,*")
!    (set_attr "neg_pool_range" "*,*,*,996,*,*,*,996,*")])
  
  /* We define these mov expanders to match the standard mov$a optab to prevent
     the mid-end from trying to do a subreg for these modes which is the most
--- 99,118 ----
    switch (which_alternative)
      {
      case 0: return "vmov\t%q0, %q1  @ <mode>";
!     case 1: case 4: return output_move_neon (operands);
!     case 2: case 3: gcc_unreachable ();
!     case 5: return "vmov\t%Q0, %R0, %e1  @ <mode>\;vmov\t%J0, %K0, %f1";
!     case 6: return "vmov\t%e0, %Q1, %R1  @ <mode>\;vmov\t%f0, %J1, %K1";
      default: return output_move_quad (operands);
      }
  }
    [(set_attr "type" "neon_move_q,neon_store2_2reg_q,neon_move_q,\
!                      neon_move_q,neon_load2_2reg_q,neon_to_gp_q,\
!                      neon_from_gp_q,mov_reg,neon_load1_4reg,neon_store1_4reg")
!    (set_attr "length" "4,8,4,4,8,8,8,16,8,16")
!    (set_attr "arm_pool_range" "*,*,*,*,1020,*,*,*,1020,*")
!    (set_attr "thumb2_pool_range" "*,*,*,*,1018,*,*,*,1018,*")
!    (set_attr "neg_pool_range" "*,*,*,*,996,*,*,*,996,*")])
  
  /* We define these mov expanders to match the standard mov$a optab to prevent
     the mid-end from trying to do a subreg for these modes which is the most
***************
*** 1033,1039 ****
  (define_insn "vashl<mode>3"
    [(set (match_operand:VDQIW 0 "s_register_operand" "=w,w")
  	(ashift:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w,w")
! 		      (match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "w,Dn")))]
    "TARGET_NEON"
    {
      switch (which_alternative)
--- 1034,1040 ----
  (define_insn "vashl<mode>3"
    [(set (match_operand:VDQIW 0 "s_register_operand" "=w,w")
  	(ashift:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w,w")
! 		      (match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "w,Dm")))]
    "TARGET_NEON"
    {
      switch (which_alternative)
***************
*** 1052,1058 ****
  (define_insn "vashr<mode>3_imm"
    [(set (match_operand:VDQIW 0 "s_register_operand" "=w")
  	(ashiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w")
! 			(match_operand:VDQIW 2 "imm_for_neon_rshift_operand" "Dn")))]
    "TARGET_NEON"
    {
      return neon_output_shift_immediate ("vshr", 's', &operands[2],
--- 1053,1059 ----
  (define_insn "vashr<mode>3_imm"
    [(set (match_operand:VDQIW 0 "s_register_operand" "=w")
  	(ashiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w")
! 			(match_operand:VDQIW 2 "imm_for_neon_rshift_operand" "Dm")))]
    "TARGET_NEON"
    {
      return neon_output_shift_immediate ("vshr", 's', &operands[2],
***************
*** 1065,1071 ****
  (define_insn "vlshr<mode>3_imm"
    [(set (match_operand:VDQIW 0 "s_register_operand" "=w")
  	(lshiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w")
! 			(match_operand:VDQIW 2 "imm_for_neon_rshift_operand" "Dn")))]
    "TARGET_NEON"
    {
      return neon_output_shift_immediate ("vshr", 'u', &operands[2],
--- 1066,1072 ----
  (define_insn "vlshr<mode>3_imm"
    [(set (match_operand:VDQIW 0 "s_register_operand" "=w")
  	(lshiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w")
! 			(match_operand:VDQIW 2 "imm_for_neon_rshift_operand" "Dm")))]
    "TARGET_NEON"
    {
      return neon_output_shift_immediate ("vshr", 'u', &operands[2],
diff -Nrcpad gcc-8.3.0/gcc/config/arm/t-rtems gcc-8.4.0/gcc/config/arm/t-rtems
*** gcc-8.3.0/gcc/config/arm/t-rtems	Fri Jun 16 21:05:46 2017
--- gcc-8.4.0/gcc/config/arm/t-rtems	Wed Mar  4 08:30:00 2020
*************** MULTILIB_DIRNAMES	+= eb
*** 17,24 ****
  MULTILIB_OPTIONS	+= mthumb
  MULTILIB_DIRNAMES	+= thumb
  
! MULTILIB_OPTIONS	+= march=armv5te+fp/march=armv6-m/march=armv7-a/march=armv7-a+simd/march=armv7-r/march=armv7-r+fp/march=armv7-m/march=armv7e-m+fp/march=armv7e-m+fp.dp
! MULTILIB_DIRNAMES	+= armv5te+fp       armv6-m       armv7-a       armv7-a+simd       armv7-r       armv7-r+fp       armv7-m       armv7e-m+fp        armv7e-m+fp.dp
  
  MULTILIB_OPTIONS	+= mfloat-abi=hard
  MULTILIB_DIRNAMES	+= hard
--- 17,24 ----
  MULTILIB_OPTIONS	+= mthumb
  MULTILIB_DIRNAMES	+= thumb
  
! MULTILIB_OPTIONS	+= march=armv5te+fp/march=armv6-m/march=armv7-a/march=armv7-a+simd/march=armv7-r/march=armv7-r+fp/mcpu=cortex-m3/mcpu=cortex-m4/mcpu=cortex-m4+nofp/mcpu=cortex-m7
! MULTILIB_DIRNAMES	+= armv5te+fp       armv6-m       armv7-a       armv7-a+simd       armv7-r       armv7-r+fp       cortex-m3      cortex-m4      cortex-m4+nofp      cortex-m7
  
  MULTILIB_OPTIONS	+= mfloat-abi=hard
  MULTILIB_DIRNAMES	+= hard
*************** MULTILIB_REQUIRED	+= mthumb/march=armv7-
*** 31,37 ****
  MULTILIB_REQUIRED	+= mthumb/march=armv7-a
  MULTILIB_REQUIRED	+= mthumb/march=armv7-r+fp/mfloat-abi=hard
  MULTILIB_REQUIRED	+= mthumb/march=armv7-r
! MULTILIB_REQUIRED	+= mthumb/march=armv7e-m+fp/mfloat-abi=hard
! MULTILIB_REQUIRED	+= mthumb/march=armv7e-m+fp.dp/mfloat-abi=hard
! MULTILIB_REQUIRED	+= mthumb/march=armv7-m
  MULTILIB_REQUIRED	+= mthumb
--- 31,38 ----
  MULTILIB_REQUIRED	+= mthumb/march=armv7-a
  MULTILIB_REQUIRED	+= mthumb/march=armv7-r+fp/mfloat-abi=hard
  MULTILIB_REQUIRED	+= mthumb/march=armv7-r
! MULTILIB_REQUIRED	+= mthumb/mcpu=cortex-m3
! MULTILIB_REQUIRED	+= mthumb/mcpu=cortex-m4/mfloat-abi=hard
! MULTILIB_REQUIRED	+= mthumb/mcpu=cortex-m4+nofp
! MULTILIB_REQUIRED	+= mthumb/mcpu=cortex-m7/mfloat-abi=hard
  MULTILIB_REQUIRED	+= mthumb
diff -Nrcpad gcc-8.3.0/gcc/config/avr/avr-arch.h gcc-8.4.0/gcc/config/avr/avr-arch.h
*** gcc-8.3.0/gcc/config/avr/avr-arch.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/avr/avr-arch.h	Wed Mar  4 08:30:00 2020
*************** typedef struct
*** 126,131 ****
--- 126,134 ----
  
    /* Flash size in bytes.  */
    int flash_size;
+ 
+   /* Offset where flash is seen in the RAM address space.  */
+   int flash_pm_offset;
  } avr_mcu_t;
  
  /* AVR device specific features.
diff -Nrcpad gcc-8.3.0/gcc/config/avr/avr-devices.c gcc-8.4.0/gcc/config/avr/avr-devices.c
*** gcc-8.3.0/gcc/config/avr/avr-devices.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/avr/avr-devices.c	Wed Mar  4 08:30:00 2020
*************** avr_texinfo[] =
*** 76,82 ****
      "the @code{MOVW} instruction." },
    { ARCH_AVR3,
      "``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of "
!     " program memory." },
    { ARCH_AVR31,
      "``Classic'' devices with 128@tie{}KiB of program memory." },
    { ARCH_AVR35,
--- 76,82 ----
      "the @code{MOVW} instruction." },
    { ARCH_AVR3,
      "``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of "
!     "program memory." },
    { ARCH_AVR31,
      "``Classic'' devices with 128@tie{}KiB of program memory." },
    { ARCH_AVR35,
*************** avr_texinfo[] =
*** 117,128 ****
  const avr_mcu_t
  avr_mcu_types[] =
  {
! #define AVR_MCU(NAME, ARCH, DEV_ATTRIBUTE, MACRO, DATA_SEC, TEXT_SEC, FLASH_SIZE)\
!   { NAME, ARCH, DEV_ATTRIBUTE, MACRO, DATA_SEC, TEXT_SEC, FLASH_SIZE },
  #include "avr-mcus.def"
  #undef AVR_MCU
      /* End of list.  */
!   { NULL, ARCH_UNKNOWN, AVR_ISA_NONE, NULL, 0, 0, 0 }
  };
  
  
--- 117,128 ----
  const avr_mcu_t
  avr_mcu_types[] =
  {
! #define AVR_MCU(NAME, ARCH, DEV_ATTRIBUTE, MACRO, DATA_SEC, TEXT_SEC, FLASH_SIZE, PMOFF) \
!   { NAME, ARCH, DEV_ATTRIBUTE, MACRO, DATA_SEC, TEXT_SEC, FLASH_SIZE, PMOFF },
  #include "avr-mcus.def"
  #undef AVR_MCU
      /* End of list.  */
!   { NULL, ARCH_UNKNOWN, AVR_ISA_NONE, NULL, 0, 0, 0, 0 }
  };
  
  
diff -Nrcpad gcc-8.3.0/gcc/config/avr/avr-mcus.def gcc-8.4.0/gcc/config/avr/avr-mcus.def
*** gcc-8.3.0/gcc/config/avr/avr-mcus.def	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/avr/avr-mcus.def	Wed Mar  4 08:30:00 2020
***************
*** 23,29 ****
  
     This will regenerate / update the following source files:
  
-    -  $(srcdir)/config/avr/t-multilib
     -  $(srcdir)/doc/avr-mmcu.texi
  
     After that, rebuild everything and check-in the new sources to the repo.
--- 23,28 ----
***************
*** 36,373 ****
  
     Before including this file, define a macro:
  
!    AVR_MCU (NAME, ARCH, DEV_ATTRIBUTE, MACRO, DATA_SEC, N_FLASH)
  
     where the arguments are the fields of avr_mcu_t:
     
!        NAME          Name of the device as specified by -mmcu=<NAME>.  Also
!                      used by DRIVER_SELF_SPECS and gen-avr-mmcu-specs.c for
!                      - the name of the device specific specs file
!                        in -specs=device-specs/spec-<NAME>
!                      - the name of the startup file crt<NAME>.o
!                      - to link the device library by means of -l<NAME>
  
!        ARCH          Specifies the multilib variant together with AVR_SHORT_SP
  
!        DEV_ATTRIBUTE Specifies the device specific features
!                      - additional ISA, short SP, errata skip etc.,
  
!        MACRO         If NULL, this is a core and not a device.  If non-NULL,
!                      supply respective built-in macro.
  
!        DATA_START    First address of SRAM, used in  -Tdata=<DATA_START>.
  
!        TEXT_START    First address of Flash, used in -Ttext=<TEXT_START>.
  
!        FLASH_SIZE    Flash size in bytes.
  
     "avr2" must be first for the "0" default to work as intended.  */
  
  /* Classic, <= 8K.  */
! AVR_MCU ("avr2",             ARCH_AVR2, AVR_ERRATA_SKIP, NULL,                     0x0060, 0x0, 0x60000)
  
! AVR_MCU ("at90s2313",        ARCH_AVR2, AVR_SHORT_SP, "__AVR_AT90S2313__",         0x0060, 0x0, 0x800)
! AVR_MCU ("at90s2323",        ARCH_AVR2, AVR_SHORT_SP, "__AVR_AT90S2323__",         0x0060, 0x0, 0x800)
! AVR_MCU ("at90s2333",        ARCH_AVR2, AVR_SHORT_SP, "__AVR_AT90S2333__",         0x0060, 0x0, 0x800)
! AVR_MCU ("at90s2343",        ARCH_AVR2, AVR_SHORT_SP, "__AVR_AT90S2343__",         0x0060, 0x0, 0x800)
! AVR_MCU ("attiny22",         ARCH_AVR2, AVR_SHORT_SP, "__AVR_ATtiny22__",          0x0060, 0x0, 0x800)
! AVR_MCU ("attiny26",         ARCH_AVR2, AVR_SHORT_SP, "__AVR_ATtiny26__",          0x0060, 0x0, 0x800)
! AVR_MCU ("at90s4414",        ARCH_AVR2, AVR_ISA_NONE, "__AVR_AT90S4414__",         0x0060, 0x0, 0x1000)
! AVR_MCU ("at90s4433",        ARCH_AVR2, AVR_SHORT_SP, "__AVR_AT90S4433__",         0x0060, 0x0, 0x1000)
! AVR_MCU ("at90s4434",        ARCH_AVR2, AVR_ISA_NONE, "__AVR_AT90S4434__",         0x0060, 0x0, 0x1000)
! AVR_MCU ("at90s8515",        ARCH_AVR2, AVR_ERRATA_SKIP, "__AVR_AT90S8515__",      0x0060, 0x0, 0x2000)
! AVR_MCU ("at90c8534",        ARCH_AVR2, AVR_ISA_NONE, "__AVR_AT90C8534__",         0x0060, 0x0, 0x2000)
! AVR_MCU ("at90s8535",        ARCH_AVR2, AVR_ISA_NONE, "__AVR_AT90S8535__",         0x0060, 0x0, 0x2000)
  /* Classic + MOVW, <= 8K.  */
! AVR_MCU ("avr25",            ARCH_AVR25, AVR_ISA_NONE, NULL,                       0x0060, 0x0, 0x2000)
! AVR_MCU ("ata5272",          ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATA5272__",          0x0100, 0x0, 0x2000)
! AVR_MCU ("ata6616c",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATA6616C__",         0x0100, 0x0, 0x2000)
! AVR_MCU ("attiny13",         ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny13__",         0x0060, 0x0, 0x400)
! AVR_MCU ("attiny13a",        ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny13A__",        0x0060, 0x0, 0x400)
! AVR_MCU ("attiny2313",       ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny2313__",       0x0060, 0x0, 0x800)
! AVR_MCU ("attiny2313a",      ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny2313A__",      0x0060, 0x0, 0x800)
! AVR_MCU ("attiny24",         ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny24__",         0x0060, 0x0, 0x800)
! AVR_MCU ("attiny24a",        ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny24A__",        0x0060, 0x0, 0x800)
! AVR_MCU ("attiny4313",       ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny4313__",       0x0060, 0x0, 0x1000)
! AVR_MCU ("attiny44",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny44__",         0x0060, 0x0, 0x1000)
! AVR_MCU ("attiny44a",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny44A__",        0x0060, 0x0, 0x1000)
! AVR_MCU ("attiny441",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny441__",        0x0100, 0x0, 0x1000)
! AVR_MCU ("attiny84",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny84__",         0x0060, 0x0, 0x2000)
! AVR_MCU ("attiny84a",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny84A__",        0x0060, 0x0, 0x2000)
! AVR_MCU ("attiny25",         ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny25__",         0x0060, 0x0, 0x800)
! AVR_MCU ("attiny45",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny45__",         0x0060, 0x0, 0x1000)
! AVR_MCU ("attiny85",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny85__",         0x0060, 0x0, 0x2000)
! AVR_MCU ("attiny261",        ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny261__",        0x0060, 0x0, 0x800)
! AVR_MCU ("attiny261a",       ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny261A__",       0x0060, 0x0, 0x800)
! AVR_MCU ("attiny461",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny461__",        0x0060, 0x0, 0x1000)
! AVR_MCU ("attiny461a",       ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny461A__",       0x0060, 0x0, 0x1000)
! AVR_MCU ("attiny861",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny861__",        0x0060, 0x0, 0x2000)
! AVR_MCU ("attiny861a",       ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny861A__",       0x0060, 0x0, 0x2000)
! AVR_MCU ("attiny43u",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny43U__",        0x0060, 0x0, 0x1000)
! AVR_MCU ("attiny87",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny87__",         0x0100, 0x0, 0x2000)
! AVR_MCU ("attiny48",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny48__",         0x0100, 0x0, 0x1000)
! AVR_MCU ("attiny88",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny88__",         0x0100, 0x0, 0x2000)
! AVR_MCU ("attiny828",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny828__",        0x0100, 0x0, 0x2000)
! AVR_MCU ("attiny841",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny841__",        0x0100, 0x0, 0x2000)
! AVR_MCU ("at86rf401",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_AT86RF401__",        0x0060, 0x0, 0x800)
  /* Classic, > 8K, <= 64K.  */
! AVR_MCU ("avr3",             ARCH_AVR3, AVR_ISA_NONE, NULL,                        0x0060, 0x0, 0x6000)
! AVR_MCU ("at43usb355",       ARCH_AVR3, AVR_ISA_NONE, "__AVR_AT43USB355__",        0x0060, 0x0, 0x6000)
! AVR_MCU ("at76c711",         ARCH_AVR3, AVR_ISA_NONE, "__AVR_AT76C711__",          0x0060, 0x0, 0x4000)
  /* Classic, == 128K.  */
! AVR_MCU ("avr31",            ARCH_AVR31, AVR_ERRATA_SKIP, NULL,                    0x0060, 0x0, 0x20000)
! AVR_MCU ("atmega103",        ARCH_AVR31, AVR_ERRATA_SKIP, "__AVR_ATmega103__",     0x0060, 0x0, 0x20000)
! AVR_MCU ("at43usb320",       ARCH_AVR31, AVR_ISA_NONE, "__AVR_AT43USB320__",       0x0060, 0x0, 0x10000)
  /* Classic + MOVW + JMP/CALL.  */
! AVR_MCU ("avr35",            ARCH_AVR35, AVR_ISA_NONE, NULL,                       0x0100, 0x0, 0x4000)
! AVR_MCU ("ata5505",          ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATA5505__",          0x0100, 0x0, 0x4000)
! AVR_MCU ("ata6617c",         ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATA6617C__",         0x0100, 0x0, 0x4000)
! AVR_MCU ("ata664251",        ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATA664251__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("at90usb82",        ARCH_AVR35, AVR_ISA_NONE, "__AVR_AT90USB82__",        0x0100, 0x0, 0x2000)
! AVR_MCU ("at90usb162",       ARCH_AVR35, AVR_ISA_NONE, "__AVR_AT90USB162__",       0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega8u2",        ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATmega8U2__",        0x0100, 0x0, 0x2000)
! AVR_MCU ("atmega16u2",       ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATmega16U2__",       0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega32u2",       ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATmega32U2__",       0x0100, 0x0, 0x8000)
! AVR_MCU ("attiny167",        ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATtiny167__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("attiny1634",       ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATtiny1634__",       0x0100, 0x0, 0x4000)
  /* Enhanced, <= 8K.  */
! AVR_MCU ("avr4",             ARCH_AVR4, AVR_ISA_NONE,  NULL,                       0x0060, 0x0, 0x2000)
! AVR_MCU ("ata6285",          ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATA6285__",          0x0100, 0x0, 0x2000)
! AVR_MCU ("ata6286",          ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATA6286__",          0x0100, 0x0, 0x2000)
! AVR_MCU ("ata6289",          ARCH_AVR4, AVR_ISA_NONE, "__AVR_ATA6289__",           0x0100, 0x0, 0x2000)
! AVR_MCU ("ata6612c",         ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATA6612C__",         0x0100, 0x0, 0x2000)
! AVR_MCU ("atmega8",          ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega8__",          0x0060, 0x0, 0x2000)
! AVR_MCU ("atmega8a",         ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega8A__",         0x0060, 0x0, 0x2000)
! AVR_MCU ("atmega48",         ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega48__",         0x0100, 0x0, 0x1000)
! AVR_MCU ("atmega48a",        ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega48A__",        0x0100, 0x0, 0x1000)
! AVR_MCU ("atmega48p",        ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega48P__",        0x0100, 0x0, 0x1000)
! AVR_MCU ("atmega48pa",       ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega48PA__",       0x0100, 0x0, 0x1000)
! AVR_MCU ("atmega48pb",       ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega48PB__",       0x0100, 0x0, 0x1000)
! AVR_MCU ("atmega88",         ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega88__",         0x0100, 0x0, 0x2000)
! AVR_MCU ("atmega88a",        ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega88A__",        0x0100, 0x0, 0x2000)
! AVR_MCU ("atmega88p",        ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega88P__",        0x0100, 0x0, 0x2000)
! AVR_MCU ("atmega88pa",       ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega88PA__",       0x0100, 0x0, 0x2000)
! AVR_MCU ("atmega88pb",       ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega88PB__",       0x0100, 0x0, 0x2000)
! AVR_MCU ("atmega8515",       ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega8515__",       0x0060, 0x0, 0x2000)
! AVR_MCU ("atmega8535",       ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega8535__",       0x0060, 0x0, 0x2000)
! AVR_MCU ("atmega8hva",       ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega8HVA__",       0x0100, 0x0, 0x2000)
! AVR_MCU ("at90pwm1",         ARCH_AVR4, AVR_ISA_NONE,  "__AVR_AT90PWM1__",         0x0100, 0x0, 0x2000)
! AVR_MCU ("at90pwm2",         ARCH_AVR4, AVR_ISA_NONE,  "__AVR_AT90PWM2__",         0x0100, 0x0, 0x2000)
! AVR_MCU ("at90pwm2b",        ARCH_AVR4, AVR_ISA_NONE,  "__AVR_AT90PWM2B__",        0x0100, 0x0, 0x2000)
! AVR_MCU ("at90pwm3",         ARCH_AVR4, AVR_ISA_NONE,  "__AVR_AT90PWM3__",         0x0100, 0x0, 0x2000)
! AVR_MCU ("at90pwm3b",        ARCH_AVR4, AVR_ISA_NONE,  "__AVR_AT90PWM3B__",        0x0100, 0x0, 0x2000)
! AVR_MCU ("at90pwm81",        ARCH_AVR4, AVR_ISA_NONE,  "__AVR_AT90PWM81__",        0x0100, 0x0, 0x2000)
  /* Enhanced, > 8K, <= 64K.  */
! AVR_MCU ("avr5",             ARCH_AVR5, AVR_ISA_NONE, NULL,                        0x0060, 0x0, 0x4000)
! AVR_MCU ("ata5702m322",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA5702M322__",       0x0200, 0x0, 0x10000)
! AVR_MCU ("ata5782",          ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA5782__",           0x0200, 0x8000, 0xd000)
! AVR_MCU ("ata5790",          ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA5790__",           0x0100, 0x0, 0x4000)
! AVR_MCU ("ata5790n",         ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA5790N__",          0x0100, 0x0, 0x4000)
! AVR_MCU ("ata5791",          ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA5791__",           0x0100, 0x0, 0x4000)
! AVR_MCU ("ata5795",          ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA5795__",           0x0100, 0x0, 0x2000)
! AVR_MCU ("ata5831",          ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA5831__",           0x0200, 0x8000, 0xd000)
! AVR_MCU ("ata6613c",         ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA6613C__",          0x0100, 0x0, 0x4000)
! AVR_MCU ("ata6614q",         ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA6614Q__",          0x0100, 0x0, 0x8000)
! AVR_MCU ("ata8210",          ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA8210__",           0x0200, 0x8000, 0xd000)
! AVR_MCU ("ata8510",          ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA8510__",           0x0200, 0x8000, 0xd000)
! AVR_MCU ("atmega16",         ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16__",          0x0060, 0x0, 0x4000)
! AVR_MCU ("atmega16a",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16A__",         0x0060, 0x0, 0x4000)
! AVR_MCU ("atmega161",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega161__",         0x0060, 0x0, 0x4000)
! AVR_MCU ("atmega162",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega162__",         0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega163",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega163__",         0x0060, 0x0, 0x4000)
! AVR_MCU ("atmega164a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega164A__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega164p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega164P__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega164pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega164PA__",       0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega165",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega165__",         0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega165a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega165A__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega165p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega165P__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega165pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega165PA__",       0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega168",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega168__",         0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega168a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega168A__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega168p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega168P__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega168pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega168PA__",       0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega168pb",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega168PB__",       0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega169",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega169__",         0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega169a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega169A__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega169p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega169P__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega169pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega169PA__",       0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega16hvb",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16HVB__",       0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega16hvbrevb",  ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16HVBREVB__",   0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega16m1",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16M1__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega16u4",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16U4__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega32a",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32A__",         0x0060, 0x0, 0x8000)
! AVR_MCU ("atmega32",         ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32__",          0x0060, 0x0, 0x8000)
! AVR_MCU ("atmega323",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega323__",         0x0060, 0x0, 0x8000)
! AVR_MCU ("atmega324a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega324A__",        0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega324p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega324P__",        0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega324pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega324PA__",       0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega325",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega325__",         0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega325a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega325A__",        0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega325p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega325P__",        0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega325pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega325PA__",       0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega3250",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3250__",        0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega3250a",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3250A__",       0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega3250p",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3250P__",       0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega3250pa",     ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3250PA__",      0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega328",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega328__",         0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega328p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega328P__",        0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega328pb",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega328PB__",       0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega329",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega329__",         0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega329a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega329A__",        0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega329p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega329P__",        0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega329pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega329PA__",       0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega3290",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3290__",        0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega3290a",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3290A__",       0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega3290p",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3290P__",       0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega3290pa",     ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3290PA__",      0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega32c1",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32C1__",        0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega32m1",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32M1__",        0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega32u4",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32U4__",        0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega32u6",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32U6__",        0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega406",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega406__",         0x0100, 0x0, 0xa000)
! AVR_MCU ("atmega64",         ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega64__",          0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega64a",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega64A__",         0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega640",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega640__",         0x0200, 0x0, 0x10000)
! AVR_MCU ("atmega644",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega644__",         0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega644a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega644A__",        0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega644p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega644P__",        0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega644pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega644PA__",       0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega645",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega645__",         0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega645a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega645A__",        0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega645p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega645P__",        0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega6450",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega6450__",        0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega6450a",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega6450A__",       0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega6450p",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega6450P__",       0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega649",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega649__",         0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega649a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega649A__",        0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega649p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega649P__",        0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega6490",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega6490__",        0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega16hva",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16HVA__",       0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega16hva2",     ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16HVA2__",      0x0100, 0x0, 0x4000)
! AVR_MCU ("atmega32hvb",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32HVB__",       0x0100, 0x0, 0x8000)
! AVR_MCU ("atmega6490a",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega6490A__",       0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega6490p",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega6490P__",       0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega64c1",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega64C1__",        0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega64m1",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega64M1__",        0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega64hve",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega64HVE__",       0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega64hve2",     ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega64HVE2__",      0x0100, 0x0, 0x10000)
! AVR_MCU ("atmega64rfr2",     ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega64RFR2__",      0x0200, 0x0, 0x10000)
! AVR_MCU ("atmega644rfr2",    ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega644RFR2__",     0x0200, 0x0, 0x10000)
! AVR_MCU ("atmega32hvbrevb",  ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32HVBREVB__",   0x0100, 0x0, 0x8000)
! AVR_MCU ("at90can32",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90CAN32__",         0x0100, 0x0, 0x8000)
! AVR_MCU ("at90can64",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90CAN64__",         0x0100, 0x0, 0x10000)
! AVR_MCU ("at90pwm161",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90PWM161__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("at90pwm216",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90PWM216__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("at90pwm316",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90PWM316__",        0x0100, 0x0, 0x4000)
! AVR_MCU ("at90scr100",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90SCR100__",        0x0100, 0x0, 0x10000)
! AVR_MCU ("at90usb646",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90USB646__",        0x0100, 0x0, 0x10000)
! AVR_MCU ("at90usb647",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90USB647__",        0x0100, 0x0, 0x10000)
! AVR_MCU ("at94k",            ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT94K__",             0x0060, 0x0, 0x8000)
! AVR_MCU ("m3000",            ARCH_AVR5, AVR_ISA_NONE, "__AVR_M3000__",             0x1000, 0x0, 0x10000)
  /* Enhanced, == 128K.  */
! AVR_MCU ("avr51",            ARCH_AVR51, AVR_ISA_NONE, NULL,                       0x0100, 0x0, 0x20000)
! AVR_MCU ("atmega128",        ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega128__",        0x0100, 0x0, 0x20000)
! AVR_MCU ("atmega128a",       ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega128A__",       0x0100, 0x0, 0x20000)
! AVR_MCU ("atmega1280",       ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega1280__",       0x0200, 0x0, 0x20000)
! AVR_MCU ("atmega1281",       ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega1281__",       0x0200, 0x0, 0x20000)
! AVR_MCU ("atmega1284",       ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega1284__",       0x0100, 0x0, 0x20000)
! AVR_MCU ("atmega1284p",      ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega1284P__",      0x0100, 0x0, 0x20000)
! AVR_MCU ("atmega128rfa1",    ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega128RFA1__",    0x0200, 0x0, 0x20000)
! AVR_MCU ("atmega128rfr2",    ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega128RFR2__",    0x0200, 0x0, 0x20000)
! AVR_MCU ("atmega1284rfr2",   ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega1284RFR2__",   0x0200, 0x0, 0x20000)
! AVR_MCU ("at90can128",       ARCH_AVR51, AVR_ISA_NONE, "__AVR_AT90CAN128__",       0x0100, 0x0, 0x20000)
! AVR_MCU ("at90usb1286",      ARCH_AVR51, AVR_ISA_NONE, "__AVR_AT90USB1286__",      0x0100, 0x0, 0x20000)
! AVR_MCU ("at90usb1287",      ARCH_AVR51, AVR_ISA_NONE, "__AVR_AT90USB1287__",      0x0100, 0x0, 0x20000)
  /* 3-Byte PC.  */
! AVR_MCU ("avr6",             ARCH_AVR6, AVR_ISA_NONE, NULL,                        0x0200, 0x0, 0x40000)
! AVR_MCU ("atmega2560",       ARCH_AVR6, AVR_ISA_NONE, "__AVR_ATmega2560__",        0x0200, 0x0, 0x40000)
! AVR_MCU ("atmega2561",       ARCH_AVR6, AVR_ISA_NONE, "__AVR_ATmega2561__",        0x0200, 0x0, 0x40000)
! AVR_MCU ("atmega256rfr2",    ARCH_AVR6, AVR_ISA_NONE, "__AVR_ATmega256RFR2__",     0x0200, 0x0, 0x40000)
! AVR_MCU ("atmega2564rfr2",   ARCH_AVR6, AVR_ISA_NONE, "__AVR_ATmega2564RFR2__",    0x0200, 0x0, 0x40000)
  /* Xmega, 16K <= Flash < 64K, RAM <= 64K */
! AVR_MCU ("avrxmega2",        ARCH_AVRXMEGA2, AVR_ISA_NONE, NULL,                   0x2000, 0x0, 0x9000)
! AVR_MCU ("atxmega8e5",       ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega8E5__",   0x2000, 0x0, 0x2800)
! AVR_MCU ("atxmega16a4",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega16A4__",  0x2000, 0x0, 0x5000)
! AVR_MCU ("atxmega16d4",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega16D4__",  0x2000, 0x0, 0x5000)
! AVR_MCU ("atxmega16e5",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega16E5__",  0x2000, 0x0, 0x5000)
! AVR_MCU ("atxmega32a4",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega32A4__",  0x2000, 0x0, 0x9000)
! AVR_MCU ("atxmega32c3",      ARCH_AVRXMEGA2, AVR_ISA_RMW,  "__AVR_ATxmega32C3__",  0x2000, 0x0, 0x9000)
! AVR_MCU ("atxmega32d3",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega32D3__",  0x2000, 0x0, 0x9000)
! AVR_MCU ("atxmega32d4",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega32D4__",  0x2000, 0x0, 0x9000)
! AVR_MCU ("atxmega16a4u",     ARCH_AVRXMEGA2, AVR_ISA_RMW,  "__AVR_ATxmega16A4U__", 0x2000, 0x0, 0x5000)
! AVR_MCU ("atxmega16c4",      ARCH_AVRXMEGA2, AVR_ISA_RMW,  "__AVR_ATxmega16C4__",  0x2000, 0x0, 0x5000)
! AVR_MCU ("atxmega32a4u",     ARCH_AVRXMEGA2, AVR_ISA_RMW,  "__AVR_ATxmega32A4U__", 0x2000, 0x0, 0x9000)
! AVR_MCU ("atxmega32c4",      ARCH_AVRXMEGA2, AVR_ISA_RMW,  "__AVR_ATxmega32C4__",  0x2000, 0x0, 0x9000)
! AVR_MCU ("atxmega32e5",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega32E5__",  0x2000, 0x0, 0x9000)
  /* Xmega, Flash + RAM < 64K, flash visible in RAM address space */
! AVR_MCU ("avrxmega3",        ARCH_AVRXMEGA3, AVR_ISA_NONE,  NULL,                  0x3f00, 0x0, 0x8000)
! AVR_MCU ("attiny212",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny212__",   0x3f80, 0x0, 0x800)
! AVR_MCU ("attiny214",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny214__",   0x3f80, 0x0, 0x800)
! AVR_MCU ("attiny412",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny412__",   0x3f00, 0x0, 0x1000)
! AVR_MCU ("attiny414",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny414__",   0x3f00, 0x0, 0x1000)
! AVR_MCU ("attiny416",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny416__",   0x3f00, 0x0, 0x1000)
! AVR_MCU ("attiny417",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny417__",   0x3f00, 0x0, 0x1000)
! AVR_MCU ("attiny814",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny814__",   0x3e00, 0x0, 0x2000)
! AVR_MCU ("attiny816",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny816__",   0x3e00, 0x0, 0x2000)
! AVR_MCU ("attiny817",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny817__",   0x3e00, 0x0, 0x2000)
! AVR_MCU ("attiny1614",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny1614__",  0x3800, 0x0, 0x4000)
! AVR_MCU ("attiny1616",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny1616__",  0x3800, 0x0, 0x4000)
! AVR_MCU ("attiny1617",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny1617__",  0x3800, 0x0, 0x4000)
! AVR_MCU ("attiny3214",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny3214__",  0x3800, 0x0, 0x8000)
! AVR_MCU ("attiny3216",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny3216__",  0x3800, 0x0, 0x8000)
! AVR_MCU ("attiny3217",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny3217__",  0x3800, 0x0, 0x8000)
  /* Xmega, 64K < Flash <= 128K, RAM <= 64K */
! AVR_MCU ("avrxmega4",        ARCH_AVRXMEGA4, AVR_ISA_NONE, NULL,                   0x2000, 0x0, 0x11000)
! AVR_MCU ("atxmega64a3",      ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_ATxmega64A3__",  0x2000, 0x0, 0x11000)
! AVR_MCU ("atxmega64d3",      ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_ATxmega64D3__",  0x2000, 0x0, 0x11000)
! AVR_MCU ("atxmega64a3u",     ARCH_AVRXMEGA4, AVR_ISA_RMW,  "__AVR_ATxmega64A3U__", 0x2000, 0x0, 0x11000)
! AVR_MCU ("atxmega64a4u",     ARCH_AVRXMEGA4, AVR_ISA_RMW,  "__AVR_ATxmega64A4U__", 0x2000, 0x0, 0x11000)
! AVR_MCU ("atxmega64b1",      ARCH_AVRXMEGA4, AVR_ISA_RMW,  "__AVR_ATxmega64B1__",  0x2000, 0x0, 0x11000)
! AVR_MCU ("atxmega64b3",      ARCH_AVRXMEGA4, AVR_ISA_RMW,  "__AVR_ATxmega64B3__",  0x2000, 0x0, 0x11000)
! AVR_MCU ("atxmega64c3",      ARCH_AVRXMEGA4, AVR_ISA_RMW,  "__AVR_ATxmega64C3__",  0x2000, 0x0, 0x11000)
! AVR_MCU ("atxmega64d4",      ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_ATxmega64D4__",  0x2000, 0x0, 0x11000)
  /* Xmega, 64K < Flash <= 128K, RAM > 64K */
! AVR_MCU ("avrxmega5",        ARCH_AVRXMEGA5, AVR_ISA_NONE, NULL,                   0x2000, 0x0, 0x11000)
! AVR_MCU ("atxmega64a1",      ARCH_AVRXMEGA5, AVR_ISA_NONE, "__AVR_ATxmega64A1__",  0x2000, 0x0, 0x11000)
! AVR_MCU ("atxmega64a1u",     ARCH_AVRXMEGA5, AVR_ISA_RMW,  "__AVR_ATxmega64A1U__", 0x2000, 0x0, 0x11000)
  /* Xmega, 128K < Flash, RAM <= 64K */
! AVR_MCU ("avrxmega6",        ARCH_AVRXMEGA6, AVR_ISA_NONE, NULL,                       0x2000, 0x0, 0x60000)
! AVR_MCU ("atxmega128a3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega128A3__",     0x2000, 0x0, 0x22000)
! AVR_MCU ("atxmega128d3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega128D3__",     0x2000, 0x0, 0x22000)
! AVR_MCU ("atxmega192a3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega192A3__",     0x2000, 0x0, 0x32000)
! AVR_MCU ("atxmega192d3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega192D3__",     0x2000, 0x0, 0x32000)
! AVR_MCU ("atxmega256a3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256A3__",     0x2000, 0x0, 0x42000)
! AVR_MCU ("atxmega256a3b",    ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256A3B__",    0x2000, 0x0, 0x42000)
! AVR_MCU ("atxmega256a3bu",   ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256A3BU__",   0x2000, 0x0, 0x42000)
! AVR_MCU ("atxmega256d3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256D3__",     0x2000, 0x0, 0x42000)
! AVR_MCU ("atxmega128a3u",    ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega128A3U__",    0x2000, 0x0, 0x22000)
! AVR_MCU ("atxmega128b1",     ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega128B1__",     0x2000, 0x0, 0x22000)
! AVR_MCU ("atxmega128b3",     ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega128B3__",     0x2000, 0x0, 0x22000)
! AVR_MCU ("atxmega128c3",     ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega128C3__",     0x2000, 0x0, 0x22000)
! AVR_MCU ("atxmega128d4",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega128D4__",     0x2000, 0x0, 0x22000)
! AVR_MCU ("atxmega192a3u",    ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega192A3U__",    0x2000, 0x0, 0x32000)
! AVR_MCU ("atxmega192c3",     ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega192C3__",     0x2000, 0x0, 0x32000)
! AVR_MCU ("atxmega256a3u",    ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega256A3U__",    0x2000, 0x0, 0x42000)
! AVR_MCU ("atxmega256c3",     ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega256C3__",     0x2000, 0x0, 0x42000)
! AVR_MCU ("atxmega384c3",     ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega384C3__",     0x2000, 0x0, 0x62000)
! AVR_MCU ("atxmega384d3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega384D3__",     0x2000, 0x0, 0x62000)
  /* Xmega, 128K < Flash, RAM > 64K RAM.  */
! AVR_MCU ("avrxmega7",        ARCH_AVRXMEGA7, AVR_ISA_NONE, NULL,                       0x2000, 0x0, 0x22000)
! AVR_MCU ("atxmega128a1",     ARCH_AVRXMEGA7, AVR_ISA_NONE, "__AVR_ATxmega128A1__",     0x2000, 0x0, 0x22000)
! AVR_MCU ("atxmega128a1u",    ARCH_AVRXMEGA7, AVR_ISA_RMW,  "__AVR_ATxmega128A1U__",    0x2000, 0x0, 0x22000)
! AVR_MCU ("atxmega128a4u",    ARCH_AVRXMEGA7, AVR_ISA_RMW,  "__AVR_ATxmega128A4U__",    0x2000, 0x0, 0x22000)
  /* Tiny family */
! AVR_MCU ("avrtiny",          ARCH_AVRTINY, AVR_ISA_NONE, NULL,                     0x0040, 0x0, 0x400)
! AVR_MCU ("attiny4",          ARCH_AVRTINY, AVR_ISA_LDS,  "__AVR_ATtiny4__",        0x0040, 0x0, 0x200)
! AVR_MCU ("attiny5",          ARCH_AVRTINY, AVR_ISA_LDS,  "__AVR_ATtiny5__",        0x0040, 0x0, 0x200)
! AVR_MCU ("attiny9",          ARCH_AVRTINY, AVR_ISA_LDS,  "__AVR_ATtiny9__",        0x0040, 0x0, 0x400)
! AVR_MCU ("attiny10",         ARCH_AVRTINY, AVR_ISA_LDS,  "__AVR_ATtiny10__",       0x0040, 0x0, 0x400)
! AVR_MCU ("attiny20",         ARCH_AVRTINY, AVR_ISA_LDS,  "__AVR_ATtiny20__",       0x0040, 0x0, 0x800)
! AVR_MCU ("attiny40",         ARCH_AVRTINY, AVR_ISA_NONE, "__AVR_ATtiny40__",       0x0040, 0x0, 0x1000)
  /* Assembler only.  */
! AVR_MCU ("avr1",             ARCH_AVR1, AVR_ISA_NONE, NULL,                        0x0060, 0x0, 0x400)
! AVR_MCU ("at90s1200",        ARCH_AVR1, AVR_ISA_NONE, "__AVR_AT90S1200__",         0x0060, 0x0, 0x400)
! AVR_MCU ("attiny11",         ARCH_AVR1, AVR_ISA_NONE, "__AVR_ATtiny11__",          0x0060, 0x0, 0x400)
! AVR_MCU ("attiny12",         ARCH_AVR1, AVR_ISA_NONE, "__AVR_ATtiny12__",          0x0060, 0x0, 0x400)
! AVR_MCU ("attiny15",         ARCH_AVR1, AVR_ISA_NONE, "__AVR_ATtiny15__",          0x0060, 0x0, 0x400)
! AVR_MCU ("attiny28",         ARCH_AVR1, AVR_ISA_NONE, "__AVR_ATtiny28__",          0x0060, 0x0, 0x800)
--- 35,398 ----
  
     Before including this file, define a macro:
  
! 	AVR_MCU (NAME, ARCH, ATTR, MACRO, TDATA, TTEXT, FLASH_SIZE, PM_OFFSET)
  
     where the arguments are the fields of avr_mcu_t:
     
! 	NAME	Name of the device as specified by -mmcu=<NAME>.  Also
! 		used by DRIVER_SELF_SPECS and gen-avr-mmcu-specs.c for
! 		- the name of the device specific specs file
! 		  in -specs=device-specs/spec-<NAME>
! 		- the name of the startup file crt<NAME>.o
! 		- the name of the device library to be linked with -l<NAME>
  
! 	ARCH	Specifies the multilib variant together with AVR_SHORT_SP
  
! 	ATTR	Specifies the device specific features
! 		- additional ISA, short SP, errata skip etc.,
  
! 	MACRO	If NULL, this is a core and not a device.  If non-NULL,
! 		supply respective built-in macro.
  
! 	TDATA	First address of SRAM, used in -Tdata=<DATA_START>.
  
! 	TTEXT	First address of Flash, used in -Ttext=<TEXT_START>.
  
! 	FLASH_SIZE
! 		Flash size in bytes.
! 
! 	PM_OFFSET
! 		Either 0x0 or the offset where flash memory is mirrored
! 		into the RAM address space accessible by LD, LDD and LDS.
! 		This is only needed if that value deviates from the
! 		value for the respective device family.
  
     "avr2" must be first for the "0" default to work as intended.  */
  
  /* Classic, <= 8K.  */
! AVR_MCU ("avr2",             ARCH_AVR2, AVR_ERRATA_SKIP, NULL,                     0x0060, 0x0, 0x60000, 0)
  
! AVR_MCU ("at90s2313",        ARCH_AVR2, AVR_SHORT_SP, "__AVR_AT90S2313__",         0x0060, 0x0, 0x800, 0)
! AVR_MCU ("at90s2323",        ARCH_AVR2, AVR_SHORT_SP, "__AVR_AT90S2323__",         0x0060, 0x0, 0x800, 0)
! AVR_MCU ("at90s2333",        ARCH_AVR2, AVR_SHORT_SP, "__AVR_AT90S2333__",         0x0060, 0x0, 0x800, 0)
! AVR_MCU ("at90s2343",        ARCH_AVR2, AVR_SHORT_SP, "__AVR_AT90S2343__",         0x0060, 0x0, 0x800, 0)
! AVR_MCU ("attiny22",         ARCH_AVR2, AVR_SHORT_SP, "__AVR_ATtiny22__",          0x0060, 0x0, 0x800, 0)
! AVR_MCU ("attiny26",         ARCH_AVR2, AVR_SHORT_SP, "__AVR_ATtiny26__",          0x0060, 0x0, 0x800, 0)
! AVR_MCU ("at90s4414",        ARCH_AVR2, AVR_ISA_NONE, "__AVR_AT90S4414__",         0x0060, 0x0, 0x1000, 0)
! AVR_MCU ("at90s4433",        ARCH_AVR2, AVR_SHORT_SP, "__AVR_AT90S4433__",         0x0060, 0x0, 0x1000, 0)
! AVR_MCU ("at90s4434",        ARCH_AVR2, AVR_ISA_NONE, "__AVR_AT90S4434__",         0x0060, 0x0, 0x1000, 0)
! AVR_MCU ("at90s8515",        ARCH_AVR2, AVR_ERRATA_SKIP, "__AVR_AT90S8515__",      0x0060, 0x0, 0x2000, 0)
! AVR_MCU ("at90c8534",        ARCH_AVR2, AVR_ISA_NONE, "__AVR_AT90C8534__",         0x0060, 0x0, 0x2000, 0)
! AVR_MCU ("at90s8535",        ARCH_AVR2, AVR_ISA_NONE, "__AVR_AT90S8535__",         0x0060, 0x0, 0x2000, 0)
  /* Classic + MOVW, <= 8K.  */
! AVR_MCU ("avr25",            ARCH_AVR25, AVR_ISA_NONE, NULL,                       0x0060, 0x0, 0x2000, 0)
! AVR_MCU ("ata5272",          ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATA5272__",          0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("ata6616c",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATA6616C__",         0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("attiny13",         ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny13__",         0x0060, 0x0, 0x400, 0)
! AVR_MCU ("attiny13a",        ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny13A__",        0x0060, 0x0, 0x400, 0)
! AVR_MCU ("attiny2313",       ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny2313__",       0x0060, 0x0, 0x800, 0)
! AVR_MCU ("attiny2313a",      ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny2313A__",      0x0060, 0x0, 0x800, 0)
! AVR_MCU ("attiny24",         ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny24__",         0x0060, 0x0, 0x800, 0)
! AVR_MCU ("attiny24a",        ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny24A__",        0x0060, 0x0, 0x800, 0)
! AVR_MCU ("attiny4313",       ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny4313__",       0x0060, 0x0, 0x1000, 0)
! AVR_MCU ("attiny44",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny44__",         0x0060, 0x0, 0x1000, 0)
! AVR_MCU ("attiny44a",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny44A__",        0x0060, 0x0, 0x1000, 0)
! AVR_MCU ("attiny441",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny441__",        0x0100, 0x0, 0x1000, 0)
! AVR_MCU ("attiny84",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny84__",         0x0060, 0x0, 0x2000, 0)
! AVR_MCU ("attiny84a",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny84A__",        0x0060, 0x0, 0x2000, 0)
! AVR_MCU ("attiny25",         ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny25__",         0x0060, 0x0, 0x800, 0)
! AVR_MCU ("attiny45",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny45__",         0x0060, 0x0, 0x1000, 0)
! AVR_MCU ("attiny85",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny85__",         0x0060, 0x0, 0x2000, 0)
! AVR_MCU ("attiny261",        ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny261__",        0x0060, 0x0, 0x800, 0)
! AVR_MCU ("attiny261a",       ARCH_AVR25, AVR_SHORT_SP, "__AVR_ATtiny261A__",       0x0060, 0x0, 0x800, 0)
! AVR_MCU ("attiny461",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny461__",        0x0060, 0x0, 0x1000, 0)
! AVR_MCU ("attiny461a",       ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny461A__",       0x0060, 0x0, 0x1000, 0)
! AVR_MCU ("attiny861",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny861__",        0x0060, 0x0, 0x2000, 0)
! AVR_MCU ("attiny861a",       ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny861A__",       0x0060, 0x0, 0x2000, 0)
! AVR_MCU ("attiny43u",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny43U__",        0x0060, 0x0, 0x1000, 0)
! AVR_MCU ("attiny87",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny87__",         0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("attiny48",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny48__",         0x0100, 0x0, 0x1000, 0)
! AVR_MCU ("attiny88",         ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny88__",         0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("attiny828",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny828__",        0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("attiny841",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_ATtiny841__",        0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("at86rf401",        ARCH_AVR25, AVR_ISA_NONE, "__AVR_AT86RF401__",        0x0060, 0x0, 0x800, 0)
  /* Classic, > 8K, <= 64K.  */
! AVR_MCU ("avr3",             ARCH_AVR3, AVR_ISA_NONE, NULL,                        0x0060, 0x0, 0x6000, 0)
! AVR_MCU ("at43usb355",       ARCH_AVR3, AVR_ISA_NONE, "__AVR_AT43USB355__",        0x0060, 0x0, 0x6000, 0)
! AVR_MCU ("at76c711",         ARCH_AVR3, AVR_ISA_NONE, "__AVR_AT76C711__",          0x0060, 0x0, 0x4000, 0)
  /* Classic, == 128K.  */
! AVR_MCU ("avr31",            ARCH_AVR31, AVR_ERRATA_SKIP, NULL,                    0x0060, 0x0, 0x20000, 0)
! AVR_MCU ("atmega103",        ARCH_AVR31, AVR_ERRATA_SKIP, "__AVR_ATmega103__",     0x0060, 0x0, 0x20000, 0)
! AVR_MCU ("at43usb320",       ARCH_AVR31, AVR_ISA_NONE, "__AVR_AT43USB320__",       0x0060, 0x0, 0x10000, 0)
  /* Classic + MOVW + JMP/CALL.  */
! AVR_MCU ("avr35",            ARCH_AVR35, AVR_ISA_NONE, NULL,                       0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("ata5505",          ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATA5505__",          0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("ata6617c",         ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATA6617C__",         0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("ata664251",        ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATA664251__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("at90usb82",        ARCH_AVR35, AVR_ISA_NONE, "__AVR_AT90USB82__",        0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("at90usb162",       ARCH_AVR35, AVR_ISA_NONE, "__AVR_AT90USB162__",       0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega8u2",        ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATmega8U2__",        0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("atmega16u2",       ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATmega16U2__",       0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega32u2",       ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATmega32U2__",       0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("attiny167",        ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATtiny167__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("attiny1634",       ARCH_AVR35, AVR_ISA_NONE, "__AVR_ATtiny1634__",       0x0100, 0x0, 0x4000, 0)
  /* Enhanced, <= 8K.  */
! AVR_MCU ("avr4",             ARCH_AVR4, AVR_ISA_NONE,  NULL,                       0x0060, 0x0, 0x2000, 0)
! AVR_MCU ("ata6285",          ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATA6285__",          0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("ata6286",          ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATA6286__",          0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("ata6289",          ARCH_AVR4, AVR_ISA_NONE, "__AVR_ATA6289__",           0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("ata6612c",         ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATA6612C__",         0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("atmega8",          ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega8__",          0x0060, 0x0, 0x2000, 0)
! AVR_MCU ("atmega8a",         ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega8A__",         0x0060, 0x0, 0x2000, 0)
! AVR_MCU ("atmega48",         ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega48__",         0x0100, 0x0, 0x1000, 0)
! AVR_MCU ("atmega48a",        ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega48A__",        0x0100, 0x0, 0x1000, 0)
! AVR_MCU ("atmega48p",        ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega48P__",        0x0100, 0x0, 0x1000, 0)
! AVR_MCU ("atmega48pa",       ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega48PA__",       0x0100, 0x0, 0x1000, 0)
! AVR_MCU ("atmega48pb",       ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega48PB__",       0x0100, 0x0, 0x1000, 0)
! AVR_MCU ("atmega88",         ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega88__",         0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("atmega88a",        ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega88A__",        0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("atmega88p",        ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega88P__",        0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("atmega88pa",       ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega88PA__",       0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("atmega88pb",       ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega88PB__",       0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("atmega8515",       ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega8515__",       0x0060, 0x0, 0x2000, 0)
! AVR_MCU ("atmega8535",       ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega8535__",       0x0060, 0x0, 0x2000, 0)
! AVR_MCU ("atmega8hva",       ARCH_AVR4, AVR_ISA_NONE,  "__AVR_ATmega8HVA__",       0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("at90pwm1",         ARCH_AVR4, AVR_ISA_NONE,  "__AVR_AT90PWM1__",         0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("at90pwm2",         ARCH_AVR4, AVR_ISA_NONE,  "__AVR_AT90PWM2__",         0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("at90pwm2b",        ARCH_AVR4, AVR_ISA_NONE,  "__AVR_AT90PWM2B__",        0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("at90pwm3",         ARCH_AVR4, AVR_ISA_NONE,  "__AVR_AT90PWM3__",         0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("at90pwm3b",        ARCH_AVR4, AVR_ISA_NONE,  "__AVR_AT90PWM3B__",        0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("at90pwm81",        ARCH_AVR4, AVR_ISA_NONE,  "__AVR_AT90PWM81__",        0x0100, 0x0, 0x2000, 0)
  /* Enhanced, > 8K, <= 64K.  */
! AVR_MCU ("avr5",             ARCH_AVR5, AVR_ISA_NONE, NULL,                        0x0060, 0x0, 0x4000, 0)
! AVR_MCU ("ata5702m322",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA5702M322__",       0x0200, 0x0, 0x10000, 0)
! AVR_MCU ("ata5782",          ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA5782__",           0x0200, 0x8000, 0xd000, 0)
! AVR_MCU ("ata5790",          ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA5790__",           0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("ata5790n",         ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA5790N__",          0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("ata5791",          ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA5791__",           0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("ata5795",          ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA5795__",           0x0100, 0x0, 0x2000, 0)
! AVR_MCU ("ata5831",          ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA5831__",           0x0200, 0x8000, 0xd000, 0)
! AVR_MCU ("ata6613c",         ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA6613C__",          0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("ata6614q",         ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA6614Q__",          0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("ata8210",          ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA8210__",           0x0200, 0x8000, 0xd000, 0)
! AVR_MCU ("ata8510",          ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATA8510__",           0x0200, 0x8000, 0xd000, 0)
! AVR_MCU ("atmega16",         ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16__",          0x0060, 0x0, 0x4000, 0)
! AVR_MCU ("atmega16a",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16A__",         0x0060, 0x0, 0x4000, 0)
! AVR_MCU ("atmega161",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega161__",         0x0060, 0x0, 0x4000, 0)
! AVR_MCU ("atmega162",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega162__",         0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega163",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega163__",         0x0060, 0x0, 0x4000, 0)
! AVR_MCU ("atmega164a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega164A__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega164p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega164P__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega164pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega164PA__",       0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega165",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega165__",         0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega165a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega165A__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega165p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega165P__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega165pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega165PA__",       0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega168",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega168__",         0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega168a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega168A__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega168p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega168P__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega168pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega168PA__",       0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega168pb",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega168PB__",       0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega169",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega169__",         0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega169a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega169A__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega169p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega169P__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega169pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega169PA__",       0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega16hvb",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16HVB__",       0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega16hvbrevb",  ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16HVBREVB__",   0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega16m1",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16M1__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega16u4",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16U4__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega32a",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32A__",         0x0060, 0x0, 0x8000, 0)
! AVR_MCU ("atmega32",         ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32__",          0x0060, 0x0, 0x8000, 0)
! AVR_MCU ("atmega323",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega323__",         0x0060, 0x0, 0x8000, 0)
! AVR_MCU ("atmega324a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega324A__",        0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega324p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega324P__",        0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega324pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega324PA__",       0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega325",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega325__",         0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega325a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega325A__",        0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega325p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega325P__",        0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega325pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega325PA__",       0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega3250",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3250__",        0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega3250a",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3250A__",       0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega3250p",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3250P__",       0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega3250pa",     ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3250PA__",      0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega328",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega328__",         0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega328p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega328P__",        0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega328pb",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega328PB__",       0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega329",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega329__",         0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega329a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega329A__",        0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega329p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega329P__",        0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega329pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega329PA__",       0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega3290",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3290__",        0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega3290a",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3290A__",       0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega3290p",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3290P__",       0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega3290pa",     ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega3290PA__",      0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega32c1",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32C1__",        0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega32m1",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32M1__",        0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega32u4",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32U4__",        0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega32u6",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32U6__",        0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega406",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega406__",         0x0100, 0x0, 0xa000, 0)
! AVR_MCU ("atmega64",         ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega64__",          0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega64a",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega64A__",         0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega640",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega640__",         0x0200, 0x0, 0x10000, 0)
! AVR_MCU ("atmega644",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega644__",         0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega644a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega644A__",        0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega644p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega644P__",        0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega644pa",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega644PA__",       0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega645",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega645__",         0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega645a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega645A__",        0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega645p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega645P__",        0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega6450",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega6450__",        0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega6450a",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega6450A__",       0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega6450p",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega6450P__",       0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega649",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega649__",         0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega649a",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega649A__",        0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega649p",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega649P__",        0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega6490",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega6490__",        0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega16hva",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16HVA__",       0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega16hva2",     ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega16HVA2__",      0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("atmega32hvb",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32HVB__",       0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("atmega6490a",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega6490A__",       0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega6490p",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega6490P__",       0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega64c1",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega64C1__",        0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega64m1",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega64M1__",        0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega64hve",      ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega64HVE__",       0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega64hve2",     ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega64HVE2__",      0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("atmega64rfr2",     ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega64RFR2__",      0x0200, 0x0, 0x10000, 0)
! AVR_MCU ("atmega644rfr2",    ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega644RFR2__",     0x0200, 0x0, 0x10000, 0)
! AVR_MCU ("atmega32hvbrevb",  ARCH_AVR5, AVR_ISA_NONE, "__AVR_ATmega32HVBREVB__",   0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("at90can32",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90CAN32__",         0x0100, 0x0, 0x8000, 0)
! AVR_MCU ("at90can64",        ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90CAN64__",         0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("at90pwm161",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90PWM161__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("at90pwm216",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90PWM216__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("at90pwm316",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90PWM316__",        0x0100, 0x0, 0x4000, 0)
! AVR_MCU ("at90scr100",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90SCR100__",        0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("at90usb646",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90USB646__",        0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("at90usb647",       ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT90USB647__",        0x0100, 0x0, 0x10000, 0)
! AVR_MCU ("at94k",            ARCH_AVR5, AVR_ISA_NONE, "__AVR_AT94K__",             0x0060, 0x0, 0x8000, 0)
! AVR_MCU ("m3000",            ARCH_AVR5, AVR_ISA_NONE, "__AVR_M3000__",             0x1000, 0x0, 0x10000, 0)
  /* Enhanced, == 128K.  */
! AVR_MCU ("avr51",            ARCH_AVR51, AVR_ISA_NONE, NULL,                       0x0100, 0x0, 0x20000, 0)
! AVR_MCU ("atmega128",        ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega128__",        0x0100, 0x0, 0x20000, 0)
! AVR_MCU ("atmega128a",       ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega128A__",       0x0100, 0x0, 0x20000, 0)
! AVR_MCU ("atmega1280",       ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega1280__",       0x0200, 0x0, 0x20000, 0)
! AVR_MCU ("atmega1281",       ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega1281__",       0x0200, 0x0, 0x20000, 0)
! AVR_MCU ("atmega1284",       ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega1284__",       0x0100, 0x0, 0x20000, 0)
! AVR_MCU ("atmega1284p",      ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega1284P__",      0x0100, 0x0, 0x20000, 0)
! AVR_MCU ("atmega128rfa1",    ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega128RFA1__",    0x0200, 0x0, 0x20000, 0)
! AVR_MCU ("atmega128rfr2",    ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega128RFR2__",    0x0200, 0x0, 0x20000, 0)
! AVR_MCU ("atmega1284rfr2",   ARCH_AVR51, AVR_ISA_NONE, "__AVR_ATmega1284RFR2__",   0x0200, 0x0, 0x20000, 0)
! AVR_MCU ("at90can128",       ARCH_AVR51, AVR_ISA_NONE, "__AVR_AT90CAN128__",       0x0100, 0x0, 0x20000, 0)
! AVR_MCU ("at90usb1286",      ARCH_AVR51, AVR_ISA_NONE, "__AVR_AT90USB1286__",      0x0100, 0x0, 0x20000, 0)
! AVR_MCU ("at90usb1287",      ARCH_AVR51, AVR_ISA_NONE, "__AVR_AT90USB1287__",      0x0100, 0x0, 0x20000, 0)
  /* 3-Byte PC.  */
! AVR_MCU ("avr6",             ARCH_AVR6, AVR_ISA_NONE, NULL,                        0x0200, 0x0, 0x40000, 0)
! AVR_MCU ("atmega2560",       ARCH_AVR6, AVR_ISA_NONE, "__AVR_ATmega2560__",        0x0200, 0x0, 0x40000, 0)
! AVR_MCU ("atmega2561",       ARCH_AVR6, AVR_ISA_NONE, "__AVR_ATmega2561__",        0x0200, 0x0, 0x40000, 0)
! AVR_MCU ("atmega256rfr2",    ARCH_AVR6, AVR_ISA_NONE, "__AVR_ATmega256RFR2__",     0x0200, 0x0, 0x40000, 0)
! AVR_MCU ("atmega2564rfr2",   ARCH_AVR6, AVR_ISA_NONE, "__AVR_ATmega2564RFR2__",    0x0200, 0x0, 0x40000, 0)
  /* Xmega, 16K <= Flash < 64K, RAM <= 64K */
! AVR_MCU ("avrxmega2",        ARCH_AVRXMEGA2, AVR_ISA_NONE, NULL,                   0x2000, 0x0, 0x9000, 0)
! AVR_MCU ("atxmega8e5",       ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega8E5__",   0x2000, 0x0, 0x2800, 0)
! AVR_MCU ("atxmega16a4",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega16A4__",  0x2000, 0x0, 0x5000, 0)
! AVR_MCU ("atxmega16d4",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega16D4__",  0x2000, 0x0, 0x5000, 0)
! AVR_MCU ("atxmega16e5",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega16E5__",  0x2000, 0x0, 0x5000, 0)
! AVR_MCU ("atxmega32a4",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega32A4__",  0x2000, 0x0, 0x9000, 0)
! AVR_MCU ("atxmega32c3",      ARCH_AVRXMEGA2, AVR_ISA_RMW,  "__AVR_ATxmega32C3__",  0x2000, 0x0, 0x9000, 0)
! AVR_MCU ("atxmega32d3",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega32D3__",  0x2000, 0x0, 0x9000, 0)
! AVR_MCU ("atxmega32d4",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega32D4__",  0x2000, 0x0, 0x9000, 0)
! AVR_MCU ("atxmega16a4u",     ARCH_AVRXMEGA2, AVR_ISA_RMW,  "__AVR_ATxmega16A4U__", 0x2000, 0x0, 0x5000, 0)
! AVR_MCU ("atxmega16c4",      ARCH_AVRXMEGA2, AVR_ISA_RMW,  "__AVR_ATxmega16C4__",  0x2000, 0x0, 0x5000, 0)
! AVR_MCU ("atxmega32a4u",     ARCH_AVRXMEGA2, AVR_ISA_RMW,  "__AVR_ATxmega32A4U__", 0x2000, 0x0, 0x9000, 0)
! AVR_MCU ("atxmega32c4",      ARCH_AVRXMEGA2, AVR_ISA_RMW,  "__AVR_ATxmega32C4__",  0x2000, 0x0, 0x9000, 0)
! AVR_MCU ("atxmega32e5",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega32E5__",  0x2000, 0x0, 0x9000, 0)
  /* Xmega, Flash + RAM < 64K, flash visible in RAM address space */
! AVR_MCU ("avrxmega3",        ARCH_AVRXMEGA3, AVR_ISA_NONE,  NULL,                  0x3f00, 0x0, 0x8000, 0)
! AVR_MCU ("attiny202",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny202__",   0x3f80, 0x0, 0x800,  0x8000)
! AVR_MCU ("attiny204",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny204__",   0x3f80, 0x0, 0x800,  0x8000)
! AVR_MCU ("attiny402",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny402__",   0x3f00, 0x0, 0x1000, 0x8000)
! AVR_MCU ("attiny404",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny404__",   0x3f00, 0x0, 0x1000, 0x8000)
! AVR_MCU ("attiny406",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny406__",   0x3f00, 0x0, 0x1000, 0x8000)
! AVR_MCU ("attiny804",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny804__",   0x3e00, 0x0, 0x2000, 0x8000)
! AVR_MCU ("attiny806",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny806__",   0x3e00, 0x0, 0x2000, 0x8000)
! AVR_MCU ("attiny807",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny807__",   0x3e00, 0x0, 0x2000, 0x8000)
! AVR_MCU ("attiny1604",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny1604__",  0x3c00, 0x0, 0x4000, 0x8000)
! AVR_MCU ("attiny1606",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny1606__",  0x3c00, 0x0, 0x4000, 0x8000)
! AVR_MCU ("attiny1607",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny1607__",  0x3c00, 0x0, 0x4000, 0x8000)
! AVR_MCU ("attiny212",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny212__",   0x3f80, 0x0, 0x800,  0x8000)
! AVR_MCU ("attiny214",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny214__",   0x3f80, 0x0, 0x800,  0x8000)
! AVR_MCU ("attiny412",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny412__",   0x3f00, 0x0, 0x1000, 0x8000)
! AVR_MCU ("attiny414",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny414__",   0x3f00, 0x0, 0x1000, 0x8000)
! AVR_MCU ("attiny416",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny416__",   0x3f00, 0x0, 0x1000, 0x8000)
! AVR_MCU ("attiny417",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny417__",   0x3f00, 0x0, 0x1000, 0x8000)
! AVR_MCU ("attiny814",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny814__",   0x3e00, 0x0, 0x2000, 0x8000)
! AVR_MCU ("attiny816",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny816__",   0x3e00, 0x0, 0x2000, 0x8000)
! AVR_MCU ("attiny817",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny817__",   0x3e00, 0x0, 0x2000, 0x8000)
! AVR_MCU ("attiny1614",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny1614__",  0x3800, 0x0, 0x4000, 0x8000)
! AVR_MCU ("attiny1616",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny1616__",  0x3800, 0x0, 0x4000, 0x8000)
! AVR_MCU ("attiny1617",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny1617__",  0x3800, 0x0, 0x4000, 0x8000)
! AVR_MCU ("attiny3214",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny3214__",  0x3800, 0x0, 0x8000, 0x8000)
! AVR_MCU ("attiny3216",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny3216__",  0x3800, 0x0, 0x8000, 0x8000)
! AVR_MCU ("attiny3217",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATtiny3217__",  0x3800, 0x0, 0x8000, 0x8000)
! AVR_MCU ("atmega808",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATmega808__",   0x3c00, 0x0, 0x2000, 0x4000)
! AVR_MCU ("atmega809",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATmega809__",   0x3c00, 0x0, 0x2000, 0x4000)
! AVR_MCU ("atmega1608",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATmega1608__",  0x3800, 0x0, 0x4000, 0x4000)
! AVR_MCU ("atmega1609",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATmega1609__",  0x3800, 0x0, 0x4000, 0x4000)
! AVR_MCU ("atmega3208",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATmega3208__",  0x3800, 0x0, 0x8000, 0x4000)
! AVR_MCU ("atmega3209",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATmega3209__",  0x3800, 0x0, 0x8000, 0x4000)
! AVR_MCU ("atmega4808",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATmega4808__",  0x2800, 0x0, 0xc000, 0x4000)
! AVR_MCU ("atmega4809",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATmega4809__",  0x2800, 0x0, 0xc000, 0x4000)
  /* Xmega, 64K < Flash <= 128K, RAM <= 64K */
! AVR_MCU ("avrxmega4",        ARCH_AVRXMEGA4, AVR_ISA_NONE, NULL,                   0x2000, 0x0, 0x11000, 0)
! AVR_MCU ("atxmega64a3",      ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_ATxmega64A3__",  0x2000, 0x0, 0x11000, 0)
! AVR_MCU ("atxmega64d3",      ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_ATxmega64D3__",  0x2000, 0x0, 0x11000, 0)
! AVR_MCU ("atxmega64a3u",     ARCH_AVRXMEGA4, AVR_ISA_RMW,  "__AVR_ATxmega64A3U__", 0x2000, 0x0, 0x11000, 0)
! AVR_MCU ("atxmega64a4u",     ARCH_AVRXMEGA4, AVR_ISA_RMW,  "__AVR_ATxmega64A4U__", 0x2000, 0x0, 0x11000, 0)
! AVR_MCU ("atxmega64b1",      ARCH_AVRXMEGA4, AVR_ISA_RMW,  "__AVR_ATxmega64B1__",  0x2000, 0x0, 0x11000, 0)
! AVR_MCU ("atxmega64b3",      ARCH_AVRXMEGA4, AVR_ISA_RMW,  "__AVR_ATxmega64B3__",  0x2000, 0x0, 0x11000, 0)
! AVR_MCU ("atxmega64c3",      ARCH_AVRXMEGA4, AVR_ISA_RMW,  "__AVR_ATxmega64C3__",  0x2000, 0x0, 0x11000, 0)
! AVR_MCU ("atxmega64d4",      ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_ATxmega64D4__",  0x2000, 0x0, 0x11000, 0)
  /* Xmega, 64K < Flash <= 128K, RAM > 64K */
! AVR_MCU ("avrxmega5",        ARCH_AVRXMEGA5, AVR_ISA_NONE, NULL,                   0x2000, 0x0, 0x11000, 0)
! AVR_MCU ("atxmega64a1",      ARCH_AVRXMEGA5, AVR_ISA_NONE, "__AVR_ATxmega64A1__",  0x2000, 0x0, 0x11000, 0)
! AVR_MCU ("atxmega64a1u",     ARCH_AVRXMEGA5, AVR_ISA_RMW,  "__AVR_ATxmega64A1U__", 0x2000, 0x0, 0x11000, 0)
  /* Xmega, 128K < Flash, RAM <= 64K */
! AVR_MCU ("avrxmega6",        ARCH_AVRXMEGA6, AVR_ISA_NONE, NULL,                       0x2000, 0x0, 0x60000, 0)
! AVR_MCU ("atxmega128a3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega128A3__",     0x2000, 0x0, 0x22000, 0)
! AVR_MCU ("atxmega128d3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega128D3__",     0x2000, 0x0, 0x22000, 0)
! AVR_MCU ("atxmega192a3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega192A3__",     0x2000, 0x0, 0x32000, 0)
! AVR_MCU ("atxmega192d3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega192D3__",     0x2000, 0x0, 0x32000, 0)
! AVR_MCU ("atxmega256a3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256A3__",     0x2000, 0x0, 0x42000, 0)
! AVR_MCU ("atxmega256a3b",    ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256A3B__",    0x2000, 0x0, 0x42000, 0)
! AVR_MCU ("atxmega256a3bu",   ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256A3BU__",   0x2000, 0x0, 0x42000, 0)
! AVR_MCU ("atxmega256d3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256D3__",     0x2000, 0x0, 0x42000, 0)
! AVR_MCU ("atxmega128a3u",    ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega128A3U__",    0x2000, 0x0, 0x22000, 0)
! AVR_MCU ("atxmega128b1",     ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega128B1__",     0x2000, 0x0, 0x22000, 0)
! AVR_MCU ("atxmega128b3",     ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega128B3__",     0x2000, 0x0, 0x22000, 0)
! AVR_MCU ("atxmega128c3",     ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega128C3__",     0x2000, 0x0, 0x22000, 0)
! AVR_MCU ("atxmega128d4",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega128D4__",     0x2000, 0x0, 0x22000, 0)
! AVR_MCU ("atxmega192a3u",    ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega192A3U__",    0x2000, 0x0, 0x32000, 0)
! AVR_MCU ("atxmega192c3",     ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega192C3__",     0x2000, 0x0, 0x32000, 0)
! AVR_MCU ("atxmega256a3u",    ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega256A3U__",    0x2000, 0x0, 0x42000, 0)
! AVR_MCU ("atxmega256c3",     ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega256C3__",     0x2000, 0x0, 0x42000, 0)
! AVR_MCU ("atxmega384c3",     ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega384C3__",     0x2000, 0x0, 0x62000, 0)
! AVR_MCU ("atxmega384d3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega384D3__",     0x2000, 0x0, 0x62000, 0)
  /* Xmega, 128K < Flash, RAM > 64K RAM.  */
! AVR_MCU ("avrxmega7",        ARCH_AVRXMEGA7, AVR_ISA_NONE, NULL,                       0x2000, 0x0, 0x22000, 0)
! AVR_MCU ("atxmega128a1",     ARCH_AVRXMEGA7, AVR_ISA_NONE, "__AVR_ATxmega128A1__",     0x2000, 0x0, 0x22000, 0)
! AVR_MCU ("atxmega128a1u",    ARCH_AVRXMEGA7, AVR_ISA_RMW,  "__AVR_ATxmega128A1U__",    0x2000, 0x0, 0x22000, 0)
! AVR_MCU ("atxmega128a4u",    ARCH_AVRXMEGA7, AVR_ISA_RMW,  "__AVR_ATxmega128A4U__",    0x2000, 0x0, 0x22000, 0)
  /* Tiny family */
! AVR_MCU ("avrtiny",          ARCH_AVRTINY, AVR_ISA_NONE, NULL,                     0x0040, 0x0, 0x400, 0)
! AVR_MCU ("attiny4",          ARCH_AVRTINY, AVR_ISA_LDS,  "__AVR_ATtiny4__",        0x0040, 0x0, 0x200, 0)
! AVR_MCU ("attiny5",          ARCH_AVRTINY, AVR_ISA_LDS,  "__AVR_ATtiny5__",        0x0040, 0x0, 0x200, 0)
! AVR_MCU ("attiny9",          ARCH_AVRTINY, AVR_ISA_LDS,  "__AVR_ATtiny9__",        0x0040, 0x0, 0x400, 0)
! AVR_MCU ("attiny10",         ARCH_AVRTINY, AVR_ISA_LDS,  "__AVR_ATtiny10__",       0x0040, 0x0, 0x400, 0)
! AVR_MCU ("attiny20",         ARCH_AVRTINY, AVR_ISA_LDS,  "__AVR_ATtiny20__",       0x0040, 0x0, 0x800, 0)
! AVR_MCU ("attiny40",         ARCH_AVRTINY, AVR_ISA_NONE, "__AVR_ATtiny40__",       0x0040, 0x0, 0x1000, 0)
  /* Assembler only.  */
! AVR_MCU ("avr1",             ARCH_AVR1, AVR_ISA_NONE, NULL,                        0x0060, 0x0, 0x400, 0)
! AVR_MCU ("at90s1200",        ARCH_AVR1, AVR_ISA_NONE, "__AVR_AT90S1200__",         0x0060, 0x0, 0x400, 0)
! AVR_MCU ("attiny11",         ARCH_AVR1, AVR_ISA_NONE, "__AVR_ATtiny11__",          0x0060, 0x0, 0x400, 0)
! AVR_MCU ("attiny12",         ARCH_AVR1, AVR_ISA_NONE, "__AVR_ATtiny12__",          0x0060, 0x0, 0x400, 0)
! AVR_MCU ("attiny15",         ARCH_AVR1, AVR_ISA_NONE, "__AVR_ATtiny15__",          0x0060, 0x0, 0x400, 0)
! AVR_MCU ("attiny28",         ARCH_AVR1, AVR_ISA_NONE, "__AVR_ATtiny28__",          0x0060, 0x0, 0x800, 0)
diff -Nrcpad gcc-8.3.0/gcc/config/avr/avr.c gcc-8.4.0/gcc/config/avr/avr.c
*** gcc-8.3.0/gcc/config/avr/avr.c	Thu Feb  1 15:54:20 2018
--- gcc-8.4.0/gcc/config/avr/avr.c	Wed Mar  4 08:30:00 2020
*************** avr_out_lpm (rtx_insn *insn, rtx *op, in
*** 3797,3809 ****
            gcc_unreachable();
  
          case 1:
!           return avr_asm_len ("%4lpm %0,%a2", xop, plen, 1);
  
          case 2:
            if (REGNO (dest) == REG_Z)
!             return avr_asm_len ("%4lpm %5,%a2+" CR_TAB
!                                 "%4lpm %B0,%a2" CR_TAB
!                                 "mov %A0,%5", xop, plen, 3);
            else
              {
                avr_asm_len ("%4lpm %A0,%a2+" CR_TAB
--- 3797,3810 ----
            gcc_unreachable();
  
          case 1:
!           avr_asm_len ("%4lpm %0,%a2", xop, plen, 1);
!           break;
  
          case 2:
            if (REGNO (dest) == REG_Z)
!             avr_asm_len ("%4lpm %5,%a2+" CR_TAB
!                          "%4lpm %B0,%a2" CR_TAB
!                          "mov %A0,%5", xop, plen, 3);
            else
              {
                avr_asm_len ("%4lpm %A0,%a2+" CR_TAB
*************** avr_out_lpm (rtx_insn *insn, rtx *op, in
*** 3832,3840 ****
                         "%4lpm %B0,%a2+", xop, plen, 2);
  
            if (REGNO (dest) == REG_Z - 2)
!             return avr_asm_len ("%4lpm %5,%a2+" CR_TAB
!                                 "%4lpm %C0,%a2" CR_TAB
!                                 "mov %D0,%5", xop, plen, 3);
            else
              {
                avr_asm_len ("%4lpm %C0,%a2+" CR_TAB
--- 3833,3841 ----
                         "%4lpm %B0,%a2+", xop, plen, 2);
  
            if (REGNO (dest) == REG_Z - 2)
!             avr_asm_len ("%4lpm %5,%a2+" CR_TAB
!                          "%4lpm %C0,%a2" CR_TAB
!                          "mov %D0,%5", xop, plen, 3);
            else
              {
                avr_asm_len ("%4lpm %C0,%a2+" CR_TAB
diff -Nrcpad gcc-8.3.0/gcc/config/avr/avr.opt gcc-8.4.0/gcc/config/avr/avr.opt
*** gcc-8.3.0/gcc/config/avr/avr.opt	Tue Jan  9 10:38:45 2018
--- gcc-8.4.0/gcc/config/avr/avr.opt	Wed Mar  4 08:30:00 2020
*************** Assume that all data in static storage c
*** 118,120 ****
--- 118,124 ----
  nodevicelib
  Driver Target Report RejectNegative
  Do not link against the device-specific library lib<MCU>.a.
+ 
+ nodevicespecs
+ Driver Target Report RejectNegative
+ Do not use the device-specific specs file device-specs/specs-<MCU>.
diff -Nrcpad gcc-8.3.0/gcc/config/avr/driver-avr.c gcc-8.4.0/gcc/config/avr/driver-avr.c
*** gcc-8.3.0/gcc/config/avr/driver-avr.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/avr/driver-avr.c	Wed Mar  4 08:30:00 2020
*************** along with GCC; see the file COPYING3.
*** 26,33 ****
  #include "diagnostic.h"
  #include "tm.h"
  
! // Remove -nodevicelib from the command line if not needed
! #define X_NODEVLIB "%<nodevicelib"
  
  static const char dir_separator_str[] = { DIR_SEPARATOR, 0 };
  
--- 26,33 ----
  #include "diagnostic.h"
  #include "tm.h"
  
! // Remove -nodevicelib and -nodevicespecs from the command line if not needed.
! #define X_NODEVLIB "%<nodevicelib %<nodevicespecs"
  
  static const char dir_separator_str[] = { DIR_SEPARATOR, 0 };
  
*************** avr_devicespecs_file (int argc, const ch
*** 102,109 ****
          return X_NODEVLIB;
        }
  
!   return concat ("-specs=device-specs", dir_separator_str, "specs-",
!                  mmcu, "%s"
  #if defined (WITH_AVRLIBC)
                   " %{mmcu=avr*:" X_NODEVLIB "} %{!mmcu=*:" X_NODEVLIB "}",
  #else
--- 102,109 ----
          return X_NODEVLIB;
        }
  
!   return concat ("%{!nodevicespecs:-specs=device-specs", dir_separator_str,
! 				 "specs-", mmcu, "%s} %<nodevicespecs"
  #if defined (WITH_AVRLIBC)
                   " %{mmcu=avr*:" X_NODEVLIB "} %{!mmcu=*:" X_NODEVLIB "}",
  #else
diff -Nrcpad gcc-8.3.0/gcc/config/avr/gen-avr-mmcu-specs.c gcc-8.4.0/gcc/config/avr/gen-avr-mmcu-specs.c
*** gcc-8.3.0/gcc/config/avr/gen-avr-mmcu-specs.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/avr/gen-avr-mmcu-specs.c	Wed Mar  4 08:30:00 2020
***************
*** 50,63 ****
  #define SPECFILE_USAGE_URL                              \
    "https://gcc.gnu.org/gcc-5/changes.html"
  
- /* Return true iff STR starts with PREFIX.  */
- 
- static bool
- str_prefix_p (const char *str, const char *prefix)
- {
-   return strncmp (str, prefix, strlen (prefix)) == 0;
- }
- 
  
  static const char header[] =
    "#\n"
--- 50,55 ----
*************** static const char help_dev_lib_name[] =
*** 105,111 ****
    "#     #include <avr/io.h>\n"
    "#\n"
    "# will include the desired device header.  For ATmega8A the supplement\n"
!   "# to *cpp would read\n"
    "#\n"
    "#     -D__AVR_DEV_LIB_NAME__=m8a\n"
    "\n";
--- 97,103 ----
    "#     #include <avr/io.h>\n"
    "#\n"
    "# will include the desired device header.  For ATmega8A the supplement\n"
!   "# to *cpp_avrlibc would read\n"
    "#\n"
    "#     -D__AVR_DEV_LIB_NAME__=m8a\n"
    "\n";
*************** print_mcu (const avr_mcu_t *mcu)
*** 140,145 ****
--- 132,145 ----
    bool rcall = (mcu->dev_attribute & AVR_ISA_RCALL);
    bool is_arch = mcu->macro == NULL;
    bool is_device = ! is_arch;
+   int flash_pm_offset = 0;
+ 
+   if (arch->flash_pm_offset
+       && mcu->flash_pm_offset
+       && mcu->flash_pm_offset != arch->flash_pm_offset)
+     {
+       flash_pm_offset = mcu->flash_pm_offset;
+     }
  
    if (is_arch
        && (ARCH_AVR2 == arch_id
*************** print_mcu (const avr_mcu_t *mcu)
*** 253,259 ****
  
    fprintf (f, "*link_relax:\n\t%s\n\n", LINK_RELAX_SPEC);
  
!   fprintf (f, "*link_arch:\n\t%s\n\n", LINK_ARCH_SPEC);
  
    if (is_device)
      {
--- 253,263 ----
  
    fprintf (f, "*link_relax:\n\t%s\n\n", LINK_RELAX_SPEC);
  
!   fprintf (f, "*link_arch:\n\t%s", LINK_ARCH_SPEC);
!   if (is_device
!       && flash_pm_offset)
!     fprintf (f, " --defsym=__RODATA_PM_OFFSET__=0x%x", flash_pm_offset);
!   fprintf (f, "\n\n");
  
    if (is_device)
      {
*************** print_mcu (const avr_mcu_t *mcu)
*** 281,290 ****
  
  #if defined (WITH_AVRLIBC)
        fprintf (f, "%s\n", help_dev_lib_name);
  #endif // WITH_AVRLIBC
  
        fprintf (f, "*cpp:\n");
!       fprintf (f, "\t-D%s -D__AVR_DEVICE_NAME__=%s", mcu->macro, mcu->name);
        fprintf (f, "\n\n");
      }
  
--- 285,310 ----
  
  #if defined (WITH_AVRLIBC)
        fprintf (f, "%s\n", help_dev_lib_name);
+ 
+       fprintf (f, "*cpp_avrlibc:\n");
+       fprintf (f, "\t-D__AVR_DEVICE_NAME__=%s", mcu->name);
+       fprintf (f, "\n\n");
  #endif // WITH_AVRLIBC
  
+       fprintf (f, "*cpp_mcu:\n");
+       fprintf (f, "\t-D%s", mcu->macro);
+       if (flash_pm_offset)
+ 	{
+ 	  fprintf (f, " -U__AVR_PM_BASE_ADDRESS__");
+ 	  fprintf (f, " -D__AVR_PM_BASE_ADDRESS__=0x%x", flash_pm_offset);
+ 	}
+       fprintf (f, "\n\n");
+ 
        fprintf (f, "*cpp:\n");
!       fprintf (f, "\t%%(cpp_mcu)");
! #if defined (WITH_AVRLIBC)
!       fprintf (f, " %%(cpp_avrlibc)");
! #endif // WITH_AVRLIBC
        fprintf (f, "\n\n");
      }
  
diff -Nrcpad gcc-8.3.0/gcc/config/avr/gen-avr-mmcu-texi.c gcc-8.4.0/gcc/config/avr/gen-avr-mmcu-texi.c
*** gcc-8.3.0/gcc/config/avr/gen-avr-mmcu-texi.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/avr/gen-avr-mmcu-texi.c	Wed Mar  4 08:30:00 2020
***************
*** 25,32 ****
  
  #include "avr-devices.c"
  
! static const char*
! mcu_name[sizeof avr_mcu_types / sizeof avr_mcu_types[0]];
  
  static int letter (char c)
  {
--- 25,32 ----
  
  #include "avr-devices.c"
  
! static const avr_mcu_t*
! mcus[sizeof avr_mcu_types / sizeof avr_mcu_types[0]];
  
  static int letter (char c)
  {
*************** static int digit (char c)
*** 39,62 ****
  }
  
  static int
  comparator (const void *va, const void *vb)
  {
!   const char *a = *(const char* const*) va;
!   const char *b = *(const char* const*) vb;
  
    while (*a && *b)
      {
!       /* Make letters smaller than digits so that `atmega16a' follows
!          `atmega16' without `atmega161' etc. between them.  */
!       
!       if (letter (*a) && digit (*b))
!         return -1;
! 
!       if (digit (*a) && letter (*b))
!         return 1;
  
        if (*a != *b)
!         return *a - *b;
        
        a++;
        b++;
--- 39,121 ----
  }
  
  static int
+ str_prefix_p (const char *str, const char *prefix)
+ {
+   return strncmp (str, prefix, strlen (prefix)) == 0;
+ }
+ 
+ 
+ /* Used by string comparator to group MCUs by their
+    name prefix like "attiny" or "atmega".  */
+ 
+ static int
+ c_prefix (const char *str)
+ {
+   static const char *const prefixes[] =
+     {
+       "attiny", "atmega", "atxmega", "ata", "at90"
+     };
+ 
+   int i, n = (int) (sizeof (prefixes) / sizeof (*prefixes));
+ 
+   for (i = 0; i < n; i++)
+     if (str_prefix_p (str, prefixes[i]))
+       return i;
+ 
+   return n;
+ }
+ 
+ 
+ /* If A starts a group of digits, return their value as a number.  */
+ 
+ static int
+ c_number (const char *a)
+ {
+   int val = 0;
+ 
+   if (digit (*a) && ! digit (*(a-1)))
+     {
+       while (digit (*a))
+ 	val = 10 * val + (*a++) - '0';
+     }
+ 
+   return val;
+ }
+ 
+ 
+ /* Compare two MCUs and order them for easy lookup.  */
+ 
+ static int
  comparator (const void *va, const void *vb)
  {
!   const avr_mcu_t *mcu_a = *(const avr_mcu_t* const*) va;
!   const avr_mcu_t *mcu_b = *(const avr_mcu_t* const*) vb;
!   const char *a = mcu_a->name;
!   const char *b = mcu_b->name;
! 
!   // First, group MCUs according to their pure-letter prefix.
! 
!   int c = c_prefix (a) - c_prefix (b);
!   if (c)
!     return c;
! 
!   // Second, if their prefixes are the same, group according to
!   // their flash size.
! 
!   c = (int) mcu_a->flash_size - (int) mcu_b->flash_size;
!   if (c)
!     return c;
! 
!   // Third, group according to aligned groups of digits.
  
    while (*a && *b)
      {
!       c = c_number (a) - c_number (b);
!       if (c)
! 	return c;
  
        if (*a != *b)
! 	return *a - *b;
        
        a++;
        b++;
*************** print_mcus (size_t n_mcus)
*** 74,94 ****
    if (!n_mcus)
      return;
      
!   qsort (mcu_name, n_mcus, sizeof (char*), comparator);
  
    printf ("@*@var{mcu}@tie{}=");
  
    for (i = 0; i < n_mcus; i++)
      {
!       printf (" @code{%s}%s", mcu_name[i], i == n_mcus-1 ? ".\n\n" : ",");
  
!       if (i && !strcmp (mcu_name[i], mcu_name[i-1]))
!         {
!           /* Sanity-check: Fail on devices that are present more than once.  */
  
!           duplicate = 1;
!           fprintf (stderr, "error: duplicate device: %s\n", mcu_name[i]);
!         }
      }
  
    if (duplicate)
--- 133,153 ----
    if (!n_mcus)
      return;
      
!   qsort (mcus, n_mcus, sizeof (avr_mcu_t*), comparator);
  
    printf ("@*@var{mcu}@tie{}=");
  
    for (i = 0; i < n_mcus; i++)
      {
!       printf (" @code{%s}%s", mcus[i]->name, i == n_mcus-1 ? ".\n\n" : ",");
  
!       if (i && !strcmp (mcus[i]->name, mcus[i-1]->name))
! 	{
! 	  // Sanity-check: Fail on devices that are present more than once.
  
! 	  duplicate = 1;
! 	  fprintf (stderr, "error: duplicate device: %s\n", mcus[i]->name);
! 	}
      }
  
    if (duplicate)
*************** int main (void)
*** 104,116 ****
    printf ("@c Copyright (C) 2012-2018 Free Software Foundation, Inc.\n");
    printf ("@c This is part of the GCC manual.\n");
    printf ("@c For copying conditions, see the file "
!           "gcc/doc/include/fdl.texi.\n\n");
  
    printf ("@c This file is generated automatically using\n");
    printf ("@c gcc/config/avr/gen-avr-mmcu-texi.c from:\n");
!   printf ("@c    gcc/config/avr/avr-arch.h\n");
!   printf ("@c    gcc/config/avr/avr-devices.c\n");
!   printf ("@c    gcc/config/avr/avr-mcus.def\n\n");
  
    printf ("@c Please do not edit manually.\n\n");
  
--- 163,175 ----
    printf ("@c Copyright (C) 2012-2018 Free Software Foundation, Inc.\n");
    printf ("@c This is part of the GCC manual.\n");
    printf ("@c For copying conditions, see the file "
! 	  "gcc/doc/include/fdl.texi.\n\n");
  
    printf ("@c This file is generated automatically using\n");
    printf ("@c gcc/config/avr/gen-avr-mmcu-texi.c from:\n");
!   printf ("@c	 gcc/config/avr/avr-arch.h\n");
!   printf ("@c	 gcc/config/avr/avr-devices.c\n");
!   printf ("@c	 gcc/config/avr/avr-mcus.def\n\n");
  
    printf ("@c Please do not edit manually.\n\n");
  
*************** int main (void)
*** 119,140 ****
    for (mcu = avr_mcu_types; mcu->name; mcu++)
      {
        if (mcu->macro == NULL)
!         {
!           arch_id = mcu->arch_id;
! 
!           /* Start a new architecture:  Flush the MCUs collected so far.  */
  
!           print_mcus (n_mcus);
!           n_mcus = 0;
  
!           for (i = 0; i < sizeof (avr_texinfo) / sizeof (*avr_texinfo); i++)
!             if (arch_id == avr_texinfo[i].arch_id)
!               printf ("@item %s\n%s\n", mcu->name, avr_texinfo[i].texinfo);
!         }
        else if (arch_id == (enum avr_arch_id) mcu->arch_id)
!         {
!           mcu_name[n_mcus++] = mcu->name;
!         }
      }
  
    print_mcus (n_mcus);
--- 178,198 ----
    for (mcu = avr_mcu_types; mcu->name; mcu++)
      {
        if (mcu->macro == NULL)
! 	{
! 	  arch_id = mcu->arch_id;
  
! 	  // Start a new architecture:	Flush the MCUs collected so far.
! 	  print_mcus (n_mcus);
! 	  n_mcus = 0;
  
! 	  for (i = 0; i < sizeof (avr_texinfo) / sizeof (*avr_texinfo); i++)
! 	    if (arch_id == avr_texinfo[i].arch_id)
! 	      printf ("@item %s\n%s\n", mcu->name, avr_texinfo[i].texinfo);
! 	}
        else if (arch_id == (enum avr_arch_id) mcu->arch_id)
! 	{
! 	  mcus[n_mcus++] = mcu;
! 	}
      }
  
    print_mcus (n_mcus);
diff -Nrcpad gcc-8.3.0/gcc/config/darwin-c.c gcc-8.4.0/gcc/config/darwin-c.c
*** gcc-8.3.0/gcc/config/darwin-c.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/darwin-c.c	Wed Mar  4 08:30:00 2020
*************** static const char *framework_defaults []
*** 463,503 ****
  /* Register the GNU objective-C runtime include path if STDINC.  */
  
  void
! darwin_register_objc_includes (const char *sysroot, const char *iprefix,
! 			       int stdinc)
  {
!   const char *fname;
!   size_t len;
!   /* We do not do anything if we do not want the standard includes. */
!   if (!stdinc)
!     return;
! 
!   fname = GCC_INCLUDE_DIR "-gnu-runtime";
! 
!   /* Register the GNU OBJC runtime include path if we are compiling  OBJC
!     with GNU-runtime.  */
  
!   if (c_dialect_objc () && !flag_next_runtime)
      {
        char *str;
!       /* See if our directory starts with the standard prefix.
  	 "Translate" them, i.e. replace /usr/local/lib/gcc... with
  	 IPREFIX and search them first.  */
!       if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0 && !sysroot
  	  && !strncmp (fname, cpp_GCC_INCLUDE_DIR, len))
  	{
  	  str = concat (iprefix, fname + len, NULL);
!           /* FIXME: wrap the headers for C++awareness.  */
! 	  add_path (str, INC_SYSTEM, /*c++aware=*/false, false);
  	}
  
!       /* Should this directory start with the sysroot?  */
!       if (sysroot)
! 	str = concat (sysroot, fname, NULL);
!       else
! 	str = update_path (fname, "");
! 
!       add_path (str, INC_SYSTEM, /*c++aware=*/false, false);
      }
  }
  
--- 463,494 ----
  /* Register the GNU objective-C runtime include path if STDINC.  */
  
  void
! darwin_register_objc_includes (const char *sysroot ATTRIBUTE_UNUSED,
! 			       const char *iprefix, int stdinc)
  {
!   /* If we want standard includes;  Register the GNU OBJC runtime include
!      path if we are compiling OBJC with GNU-runtime.
!      This path is compiler-relative, we don't want to prepend the sysroot
!      since it's not expected to find the headers there.  */
  
!   if (stdinc && c_dialect_objc () && !flag_next_runtime)
      {
+       const char *fname = GCC_INCLUDE_DIR "-gnu-runtime";
        char *str;
!       size_t len;
! 
!      /* See if our directory starts with the standard prefix.
  	 "Translate" them, i.e. replace /usr/local/lib/gcc... with
  	 IPREFIX and search them first.  */
!       if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0
  	  && !strncmp (fname, cpp_GCC_INCLUDE_DIR, len))
  	{
  	  str = concat (iprefix, fname + len, NULL);
! 	  add_path (str, INC_SYSTEM, /*c++aware=*/true, false);
  	}
  
!       str = update_path (fname, "");
!       add_path (str, INC_SYSTEM, /*c++aware=*/true, false);
      }
  }
  
diff -Nrcpad gcc-8.3.0/gcc/config/darwin-driver.c gcc-8.4.0/gcc/config/darwin-driver.c
*** gcc-8.3.0/gcc/config/darwin-driver.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/darwin-driver.c	Wed Mar  4 08:30:00 2020
*************** along with GCC; see the file COPYING3.
*** 26,31 ****
--- 26,116 ----
  #include "opts.h"
  #include "diagnostic-core.h"
  
+ /* Validate a version string (either given on the command line or, perhaps
+    as MACOSX_DEPLOYMENT_TARGET).
+ 
+    The specs %version-compare() function doesn't accept leading '0' on
+    numbers so strip them out.  Do sanity checking here too.
+ 
+    Return:
+      * original string means it was OK and we didn't want to change it.
+      * new string means it was OK but we rewrote it to avoid possible format
+      problems.
+      * NULL means we didn't like what we saw.
+ */
+ 
+ static const char *
+ validate_macosx_version_min (const char *version_str)
+ {
+   size_t version_len;
+   unsigned long major, minor, tiny = 0;
+   char *end;
+   const char *old_version = version_str;
+   bool need_rewrite = false;
+ 
+   version_len = strlen (version_str);
+   if (version_len < 4) /* The minimum would be 10.x  */
+     return NULL;
+ 
+   /* Version string must consist of digits and periods only.  */
+   if (strspn (version_str, "0123456789.") != version_len)
+     return NULL;
+ 
+   if (!ISDIGIT (version_str[0]) || !ISDIGIT (version_str[version_len - 1]))
+     return NULL;
+ 
+   if (version_str[0] == '0')
+     need_rewrite = true;
+ 
+   major = strtoul (version_str, &end, 10);
+   version_str = end + ((*end == '.') ? 1 : 0);
+ 
+   if (major != 10) /* So far .. all MacOS 10 ... */
+     return NULL;
+ 
+   /* Version string components must be present and numeric.  */
+   if (!ISDIGIT (version_str[0]))
+     return NULL;
+ 
+   /* If we have one or more leading zeros on a component, then rewrite the
+      version string.  */
+   if (version_str[0] == '0' && version_str[1] != '\0'
+       && version_str[1] != '.')
+     need_rewrite = true;
+ 
+   minor = strtoul (version_str, &end, 10);
+   version_str = end + ((*end == '.') ? 1 : 0);
+   if (minor > 99)
+     return NULL;
+ 
+   /* If 'tiny' is present it must be numeric.  */
+   if (*end != '\0' && !ISDIGIT (version_str[0]))
+     return NULL;
+ 
+   /* If we have one or more leading zeros on a component, then rewrite the
+      version string.  */
+   if (*end != '\0' && version_str[0] == '0'
+       && version_str[1] != '\0')
+     need_rewrite = true;
+ 
+   tiny = strtoul (version_str, &end, 10);
+   if (tiny > 99)
+     return NULL;
+ 
+   /* Version string must contain no more than three tokens.  */
+   if (*end != '\0')
+     return NULL;
+ 
+   if (need_rewrite)
+     {
+       char *new_version;
+       asprintf (&new_version, "10.%lu.%lu", minor, tiny);
+       return new_version;
+     }
+ 
+   return old_version;
+ }
+ 
  #ifndef CROSS_DIRECTORY_STRUCTURE
  #include <sys/sysctl.h>
  #include "xregex.h"
*************** darwin_default_min_version (void)
*** 114,129 ****
  
    if (new_flag != NULL)
      {
!       size_t len = strlen (new_flag);
!       if (len > 128) { /* Arbitrary limit, number should be like xx.yy.zz */
! 	warning (0, "couldn%'t understand version %s\n", new_flag);
! 	return NULL;
!       }
!       new_flag = xstrndup (new_flag, len);
      }
    return new_flag;
  }
  
  /* 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
--- 199,237 ----
  
    if (new_flag != NULL)
      {
!       const char *checked = validate_macosx_version_min (new_flag);
!       if (checked == NULL)
! 	{
! 	  warning (0, "couldn%'t understand version %s\n", new_flag);
! 	  return NULL;
! 	}
!       new_flag = xstrndup (checked, strlen (checked));
      }
    return new_flag;
  }
  
+ /* See if we can find the sysroot from the SDKROOT environment variable.  */
+ 
+ static const char *
+ maybe_get_sysroot_from_sdkroot ()
+ {
+   const char *maybe_sysroot = getenv ("SDKROOT");
+ 
+   /* We'll use the same rules as the clang driver, for compatibility.
+      1) The path must be absolute
+      2) Ignore "/", that is the default anyway and we do not want the
+ 	sysroot semantics to be applied to it.
+      3) It must exist (actually, we'll check it's readable too).  */
+ 
+    if (maybe_sysroot  == NULL
+        || *maybe_sysroot != '/'
+        || strlen (maybe_sysroot) == 1
+        || access (maybe_sysroot, R_OK) == -1)
+     return NULL;
+ 
+   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
*************** darwin_driver_init (unsigned int *decode
*** 148,153 ****
--- 256,262 ----
    bool appendM64 = false;
    const char *vers_string = NULL;
    bool seen_version_min = false;
+   bool seen_sysroot_p = false;
  
    for (i = 1; i < *decoded_options_count; i++)
      {
*************** darwin_driver_init (unsigned int *decode
*** 175,181 ****
  	  if (*decoded_options_count > i) {
  	    memmove (*decoded_options + i,
  		     *decoded_options + i + 1,
! 		     ((*decoded_options_count - i)
  		      * sizeof (struct cl_decoded_option)));
  	  }
  	  --i;
--- 284,290 ----
  	  if (*decoded_options_count > i) {
  	    memmove (*decoded_options + i,
  		     *decoded_options + i + 1,
! 		     ((*decoded_options_count - i - 1)
  		      * sizeof (struct cl_decoded_option)));
  	  }
  	  --i;
*************** darwin_driver_init (unsigned int *decode
*** 209,215 ****
  
  	case OPT_mmacosx_version_min_:
  	  seen_version_min = true;
! 	  vers_string = xstrndup ((*decoded_options)[i].arg, 32);
  
  	default:
  	  break;
--- 318,346 ----
  
  	case OPT_mmacosx_version_min_:
  	  seen_version_min = true;
! 	  vers_string =
! 	    validate_macosx_version_min ((*decoded_options)[i].arg);
! 	  if (vers_string == NULL)
! 	    warning (0, "%qs is not valid for %<mmacosx-version-min%>\n",
! 		     (*decoded_options)[i].arg);
! 	  else if (vers_string == (*decoded_options)[i].arg)
! 	    vers_string = xstrndup ((*decoded_options)[i].arg, 32);
! 	  /* Now we've examined it, and verified/re-written, put it to
! 	     one side and append later.  */
! 	  if (*decoded_options_count > i) {
! 	    memmove (*decoded_options + i,
! 		     *decoded_options + i + 1,
! 		     ((*decoded_options_count - i - 1)
! 		      * sizeof (struct cl_decoded_option)));
! 	  }
! 	  --i;
! 	  --*decoded_options_count;
! 	  break;
! 
! 	case OPT__sysroot_:
! 	case OPT_isysroot:
! 	  seen_sysroot_p = true;
! 	  break;
  
  	default:
  	  break;
*************** darwin_driver_init (unsigned int *decode
*** 272,297 ****
  		       &(*decoded_options)[*decoded_options_count - 1]);
      }
  
!   /* 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 ();
!       if (vers_string != NULL)
  	{
  	  ++*decoded_options_count;
  	  *decoded_options = XRESIZEVEC (struct cl_decoded_option,
  					 *decoded_options,
  					 *decoded_options_count);
! 	  generate_option (OPT_mmacosx_version_min_, vers_string, 1, CL_DRIVER,
! 			  &(*decoded_options)[*decoded_options_count - 1]);
  	}
      }
!   /* Create and push the major version for assemblers that need it.  */
    if (vers_string != NULL)
      {
        char *asm_major = NULL;
        const char *first_period = strchr(vers_string, '.');
        if (first_period != NULL)
--- 403,442 ----
  		       &(*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.  */
!        const char *sdkroot = maybe_get_sysroot_from_sdkroot ();
!        if (sdkroot)
  	{
  	  ++*decoded_options_count;
  	  *decoded_options = XRESIZEVEC (struct cl_decoded_option,
  					 *decoded_options,
  					 *decoded_options_count);
! 	  generate_option (OPT__sysroot_, sdkroot, 1, CL_DRIVER,
! 			   &(*decoded_options)[*decoded_options_count - 1]);
  	}
      }
! 
!   /* 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 ();
! 
!   /* Create and push a cleaned up version, plus the major version for
!      assemblers and other cases that need it.  */
    if (vers_string != NULL)
      {
+        ++*decoded_options_count;
+        *decoded_options = XRESIZEVEC (struct cl_decoded_option,
+ 				      *decoded_options,
+ 				      *decoded_options_count);
+       generate_option (OPT_mmacosx_version_min_, vers_string, 1, CL_DRIVER,
+ 		       &(*decoded_options)[*decoded_options_count - 1]);
+ 
        char *asm_major = NULL;
        const char *first_period = strchr(vers_string, '.');
        if (first_period != NULL)
diff -Nrcpad gcc-8.3.0/gcc/config/darwin-protos.h gcc-8.4.0/gcc/config/darwin-protos.h
*** gcc-8.3.0/gcc/config/darwin-protos.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/darwin-protos.h	Wed Mar  4 08:30:00 2020
*************** extern void darwin_set_default_type_attr
*** 53,60 ****
  
  #endif /* TREE_CODE */
  
- extern void machopic_finish (FILE *);
- 
  extern int machopic_reloc_rw_mask (void);
  extern section *machopic_select_section (tree, int, unsigned HOST_WIDE_INT);
  
--- 53,58 ----
diff -Nrcpad gcc-8.3.0/gcc/config/darwin.c gcc-8.4.0/gcc/config/darwin.c
*** gcc-8.3.0/gcc/config/darwin.c	Wed Dec  5 10:36:34 2018
--- gcc-8.4.0/gcc/config/darwin.c	Wed Mar  4 08:30:00 2020
*************** along with GCC; see the file COPYING3.
*** 74,88 ****
     setting the second word in the .non_lazy_symbol_pointer data
     structure to symbol.  See indirect_data for the code that handles
     the extra indirection, and machopic_output_indirection and its use
!    of MACHO_SYMBOL_STATIC for the code that handles @code{static}
     symbol indirection.  */
  
- /* For darwin >= 9  (OSX 10.5) the linker is capable of making the necessary
-    branch islands and we no longer need to emit darwin stubs.
-    However, if we are generating code for earlier systems (or for use in the 
-    kernel) the stubs might still be required, and this will be set true.  */
- int darwin_emit_branch_islands = false;
- 
  typedef struct GTY(()) cdtor_record {
    rtx symbol;
    int priority;		/* [con/de]structor priority */
--- 74,82 ----
     setting the second word in the .non_lazy_symbol_pointer data
     structure to symbol.  See indirect_data for the code that handles
     the extra indirection, and machopic_output_indirection and its use
!    of MACHO_SYMBOL_FLAG_STATIC for the code that handles @code{static}
     symbol indirection.  */
  
  typedef struct GTY(()) cdtor_record {
    rtx symbol;
    int priority;		/* [con/de]structor priority */
*************** int generating_for_darwin_version ;
*** 104,109 ****
--- 98,107 ----
     for weak or single-definition items.  */
  static bool ld_uses_coal_sects = false;
  
+ /* Very old (ld_classic) linkers need a symbol to mark the start of
+    each FDE.  */
+ static bool ld_needs_eh_markers = false;
+ 
  /* Section names.  */
  section * darwin_sections[NUM_DARWIN_SECTIONS];
  
*************** name_needs_quotes (const char *name)
*** 249,255 ****
  int
  machopic_symbol_defined_p (rtx sym_ref)
  {
!   if (SYMBOL_REF_FLAGS (sym_ref) & MACHO_SYMBOL_FLAG_DEFINED)
      return true;
  
    /* If a symbol references local and is not an extern to this
--- 247,253 ----
  int
  machopic_symbol_defined_p (rtx sym_ref)
  {
!   if (MACHO_SYMBOL_DEFINED_P (sym_ref))
      return true;
  
    /* If a symbol references local and is not an extern to this
*************** machopic_symbol_defined_p (rtx sym_ref)
*** 258,264 ****
      {
        /* If the symbol references a variable and the variable is a
  	 common symbol, then this symbol is not defined.  */
!       if (SYMBOL_REF_FLAGS (sym_ref) & MACHO_SYMBOL_FLAG_VARIABLE)
  	{
  	  tree decl = SYMBOL_REF_DECL (sym_ref);
  	  if (!decl)
--- 256,262 ----
      {
        /* If the symbol references a variable and the variable is a
  	 common symbol, then this symbol is not defined.  */
!       if (MACHO_SYMBOL_VARIABLE_P (sym_ref))
  	{
  	  tree decl = SYMBOL_REF_DECL (sym_ref);
  	  if (!decl)
*************** typedef struct GTY ((for_user)) machopic
*** 454,459 ****
--- 452,464 ----
    bool stub_p;
    /* True iff this stub or pointer has been referenced.  */
    bool used;
+   /* True iff a non-lazy symbol pointer should be emitted into the .data
+      section, rather than the non-lazy symbol pointers section.  The cases
+      for which this occurred seem to have been unintentional, and later
+      toolchains emit all of the indirections to the 'usual' section.  We
+      are keeping this in case it is necessary to preserve compatibility with
+      older toolchains.  */
+   bool nlsp_in_data_section;
  } machopic_indirection;
  
  struct indirection_hasher : ggc_ptr_hash<machopic_indirection>
*************** indirection_hasher::equal (machopic_indi
*** 488,494 ****
  /* Return the name of the non-lazy pointer (if STUB_P is false) or
     stub (if STUB_B is true) corresponding to the given name.
  
!   If we have a situation like:
  
  global_weak_symbol:
    ....
--- 493,499 ----
  /* Return the name of the non-lazy pointer (if STUB_P is false) or
     stub (if STUB_B is true) corresponding to the given name.
  
!   PR71767 - If we have a situation like:
  
  global_weak_symbol:
    ....
*************** Lnon_weak_local:
*** 497,532 ****
  
    ld64 will be unable to split this into two atoms (because the "L" makes
    the second symbol 'invisible').  This means that legitimate direct accesses
!   to the second symbol will appear to be non-allowed direct accesses to an
!   atom of type weak, global which are not allowed.
! 
!   To avoid this, we make the indirections have a leading 'l' (lower-case L)
!   which has a special meaning: linker can see this and use it to determine
!   atoms, but it is not placed into the final symbol table.
  
!   The implementation here is somewhat heavy-handed in that it will also mark
!   indirections to the __IMPORT,__pointers section the same way which is
!   really unnecessary, since ld64 _can_ split those into atoms as they are
!   fixed size.  FIXME: determine if this is a penalty worth extra code to
!   fix.
  
  */
  
  const char *
  machopic_indirection_name (rtx sym_ref, bool stub_p)
  {
-   char *buffer;
    const char *name = XSTR (sym_ref, 0);
!   size_t namelen = strlen (name);
!   machopic_indirection *p;
!   bool needs_quotes;
!   const char *suffix;
!   char L_or_l = 'L';
!   const char *prefix = user_label_prefix;
!   const char *quote = "";
!   tree id;
! 
!   id = maybe_get_identifier (name);
    if (id)
      {
        tree id_orig = id;
--- 502,523 ----
  
    ld64 will be unable to split this into two atoms (because the "L" makes
    the second symbol 'invisible').  This means that legitimate direct accesses
!   to the second symbol will appear to be direct accesses to an atom of type
!   weak, global which are not allowed.
  
!   To avoid this, we make any data-section indirections have a leading 'l'
!   (lower-case L) which has a special meaning: linker can see this and use
!   it to determine  atoms, but it is not placed into the final symbol table.
  
+   Symbols in the non-lazy symbol pointers section (or stubs) do not have this
+   problem because ld64 already knows the size of each entry.
  */
  
  const char *
  machopic_indirection_name (rtx sym_ref, bool stub_p)
  {
    const char *name = XSTR (sym_ref, 0);
!   tree id = maybe_get_identifier (name);
    if (id)
      {
        tree id_orig = id;
*************** machopic_indirection_name (rtx sym_ref,
*** 534,576 ****
        while (IDENTIFIER_TRANSPARENT_ALIAS (id))
  	id = TREE_CHAIN (id);
        if (id != id_orig)
! 	{
! 	  name = IDENTIFIER_POINTER (id);
! 	  namelen = strlen (name);
! 	}
      }
  
    if (name[0] == '*')
      {
        prefix = "";
        ++name;
-       --namelen;
-     }
- 
-   needs_quotes = name_needs_quotes (name);
-   if (needs_quotes)
-     {
-       quote = "\"";
      }
  
!   if (stub_p)
!     suffix = STUB_SUFFIX;
!   else
!     {
!       suffix = NON_LAZY_POINTER_SUFFIX;
!       /* Let the linker see this.  */
!       L_or_l = 'l';
!     }
  
!   buffer = XALLOCAVEC (char, 2  /* strlen ("&L") or ("&l") */
! 		   + strlen (prefix)
! 		   + namelen
! 		   + strlen (suffix)
! 		   + 2 * strlen (quote)
! 		   + 1 /* '\0' */);
  
    /* Construct the name of the non-lazy pointer or stub.  */
!   sprintf (buffer, "&%s%c%s%s%s%s", quote, L_or_l, prefix, name, suffix, quote);
  
    if (!machopic_indirections)
      machopic_indirections = hash_table<indirection_hasher>::create_ggc (37);
--- 525,571 ----
        while (IDENTIFIER_TRANSPARENT_ALIAS (id))
  	id = TREE_CHAIN (id);
        if (id != id_orig)
! 	name = IDENTIFIER_POINTER (id);
      }
  
+   const char *prefix = user_label_prefix;
+   /* If we are emitting the label 'verbatim' then omit the U_L_P and count
+      the name without the leading '*'.  */
    if (name[0] == '*')
      {
        prefix = "";
        ++name;
      }
  
!   /* Here we are undoing a number of causes that placed some indirections
!      (apparently erroneously) into the .data section.  Specifically, some
!      symbols that are ABI mandated indirections and some hidden symbols
!      were being placed there - which cause difficulties with later
!      versions of ld64.  Iff (after these checks) some symbol still gets an
!      indirection in the data section, we want to adjust the indirection
!      name to be linker visible to deal with PR71767 (notes above).  */
!   bool nlsp_in_data_section =
!        ! MACHO_SYMBOL_MUST_INDIRECT_P (sym_ref)
!     && ! MACHO_SYMBOL_HIDDEN_VIS_P (sym_ref)
!     && (machopic_symbol_defined_p (sym_ref) || SYMBOL_REF_LOCAL_P (sym_ref))
!     && ! indirect_data (sym_ref);
  
!   const char *suffix = stub_p ? STUB_SUFFIX : NON_LAZY_POINTER_SUFFIX;
!   /* If the indirection is in the data section, let the linker see it.  */
!   char L_or_l = (!stub_p && nlsp_in_data_section) ? 'l' : 'L';
!   /* We have mangled symbols with spaces and punctuation which typically
!      need surrounding in quotes for the assembler to consume them.  */
!   const char *quote = name_needs_quotes (name) ? "\"" : "";
!   char *buffer = XALLOCAVEC (char, 2  /* strlen ("&L") or ("&l") */
! 			     + strlen (prefix)
! 			     + strlen (name)
! 			     + strlen (suffix)
! 			     + 2 * strlen (quote)
! 			     + 1 /* '\0' */);
  
    /* Construct the name of the non-lazy pointer or stub.  */
!   sprintf (buffer, "&%s%c%s%s%s%s", quote, L_or_l, prefix, name,
! 	   suffix, quote);
  
    if (!machopic_indirections)
      machopic_indirections = hash_table<indirection_hasher>::create_ggc (37);
*************** machopic_indirection_name (rtx sym_ref,
*** 579,588 ****
      = machopic_indirections->find_slot_with_hash (buffer,
  						  htab_hash_string (buffer),
  						  INSERT);
    if (*slot)
!     {
!       p = *slot;
!     }
    else
      {
        p = ggc_alloc<machopic_indirection> ();
--- 574,582 ----
      = machopic_indirections->find_slot_with_hash (buffer,
  						  htab_hash_string (buffer),
  						  INSERT);
+   machopic_indirection *p;
    if (*slot)
!     p = *slot;
    else
      {
        p = ggc_alloc<machopic_indirection> ();
*************** machopic_indirection_name (rtx sym_ref,
*** 590,595 ****
--- 584,590 ----
        p->ptr_name = xstrdup (buffer);
        p->stub_p = stub_p;
        p->used = false;
+       p->nlsp_in_data_section = nlsp_in_data_section;
        *slot = p;
      }
  
*************** machopic_indirect_data_reference (rtx or
*** 665,671 ****
  	   /* some other cpu -- writeme!  */
  	   gcc_unreachable ();
  	}
!       else if (defined)
  	{
  	  rtx offset = NULL;
  	  if (DARWIN_PPC || HAVE_lo_sum)
--- 660,666 ----
  	   /* some other cpu -- writeme!  */
  	   gcc_unreachable ();
  	}
!       else if (defined && ! MACHO_SYMBOL_MUST_INDIRECT_P (orig))
  	{
  	  rtx offset = NULL;
  	  if (DARWIN_PPC || HAVE_lo_sum)
*************** machopic_indirect_data_reference (rtx or
*** 707,712 ****
--- 702,708 ----
  		  machopic_indirection_name (orig, /*stub_p=*/false)));
  
        SYMBOL_REF_DATA (ptr_ref) = SYMBOL_REF_DATA (orig);
+       SYMBOL_REF_FLAGS (ptr_ref) |= MACHO_SYMBOL_FLAG_INDIRECTION;
  
        ptr_ref = gen_const_mem (Pmode, ptr_ref);
        machopic_define_symbol (ptr_ref);
*************** machopic_indirect_data_reference (rtx or
*** 789,795 ****
  rtx
  machopic_indirect_call_target (rtx target)
  {
!   if (! darwin_emit_branch_islands)
      return target;
  
    if (GET_CODE (target) != MEM)
--- 785,791 ----
  rtx
  machopic_indirect_call_target (rtx target)
  {
!   if (! darwin_symbol_stubs)
      return target;
  
    if (GET_CODE (target) != MEM)
*************** machopic_indirect_call_target (rtx targe
*** 797,804 ****
  
    if (MACHOPIC_INDIRECT
        && GET_CODE (XEXP (target, 0)) == SYMBOL_REF
!       && !(SYMBOL_REF_FLAGS (XEXP (target, 0))
! 	   & MACHO_SYMBOL_FLAG_DEFINED))
      {
        rtx sym_ref = XEXP (target, 0);
        const char *stub_name = machopic_indirection_name (sym_ref,
--- 793,799 ----
  
    if (MACHOPIC_INDIRECT
        && GET_CODE (XEXP (target, 0)) == SYMBOL_REF
!       && ! MACHO_SYMBOL_DEFINED_P (XEXP (target, 0)))
      {
        rtx sym_ref = XEXP (target, 0);
        const char *stub_name = machopic_indirection_name (sym_ref,
*************** machopic_indirect_call_target (rtx targe
*** 807,812 ****
--- 802,808 ----
  
        XEXP (target, 0) = gen_rtx_SYMBOL_REF (mode, stub_name);
        SYMBOL_REF_DATA (XEXP (target, 0)) = SYMBOL_REF_DATA (sym_ref);
+       SYMBOL_REF_FLAGS (XEXP (target, 0)) |= MACHO_SYMBOL_FLAG_INDIRECTION;
        MEM_READONLY_P (target) = 1;
        MEM_NOTRAP_P (target) = 1;
      }
*************** machopic_legitimize_pic_address (rtx ori
*** 844,850 ****
  	{
  	  if (reg == 0)
  	    {
! 	      gcc_assert (!reload_in_progress);
  	      reg = gen_reg_rtx (Pmode);
  	    }
  
--- 840,846 ----
  	{
  	  if (reg == 0)
  	    {
! 	      gcc_assert (!lra_in_progress);
  	      reg = gen_reg_rtx (Pmode);
  	    }
  
*************** machopic_legitimize_pic_address (rtx ori
*** 928,934 ****
  	      emit_use (gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM));
  #endif
  
! 	      if (reload_in_progress)
  		df_set_regs_ever_live (REGNO (pic), true);
  	      pic_ref = gen_rtx_PLUS (Pmode, pic,
  				      machopic_gen_offset (XEXP (orig, 0)));
--- 924,930 ----
  	      emit_use (gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM));
  #endif
  
! 	      if (lra_in_progress)
  		df_set_regs_ever_live (REGNO (pic), true);
  	      pic_ref = gen_rtx_PLUS (Pmode, pic,
  				      machopic_gen_offset (XEXP (orig, 0)));
*************** machopic_legitimize_pic_address (rtx ori
*** 952,958 ****
  
  	      if (reg == 0)
  		{
! 		  gcc_assert (!reload_in_progress);
  		  reg = gen_reg_rtx (Pmode);
  		}
  
--- 948,954 ----
  
  	      if (reg == 0)
  		{
! 		  gcc_assert (!lra_in_progress);
  		  reg = gen_reg_rtx (Pmode);
  		}
  
*************** machopic_legitimize_pic_address (rtx ori
*** 998,1004 ****
  #if 0
  		  emit_use (pic_offset_table_rtx);
  #endif
! 		  if (reload_in_progress)
  		    df_set_regs_ever_live (REGNO (pic), true);
  		  pic_ref = gen_rtx_PLUS (Pmode,
  					  pic,
--- 994,1000 ----
  #if 0
  		  emit_use (pic_offset_table_rtx);
  #endif
! 		  if (lra_in_progress)
  		    df_set_regs_ever_live (REGNO (pic), true);
  		  pic_ref = gen_rtx_PLUS (Pmode,
  					  pic,
*************** machopic_legitimize_pic_address (rtx ori
*** 1075,1203 ****
    return pic_ref;
  }
  
! /* Output the stub or non-lazy pointer in *SLOT, if it has been used.
!    DATA is the FILE* for assembly output.  Called from
!    htab_traverse.  */
  
  int
! machopic_output_indirection (machopic_indirection **slot, FILE *asm_out_file)
  {
    machopic_indirection *p = *slot;
-   rtx symbol;
-   const char *sym_name;
-   const char *ptr_name;
  
!   if (!p->used)
      return 1;
  
!   symbol = p->symbol;
!   sym_name = XSTR (symbol, 0);
!   ptr_name = p->ptr_name;
  
!   if (p->stub_p)
!     {
!       char *sym;
!       char *stub;
!       tree id;
  
!       id = maybe_get_identifier (sym_name);
!       if (id)
! 	{
! 	  tree id_orig = id;
  
! 	  while (IDENTIFIER_TRANSPARENT_ALIAS (id))
! 	    id = TREE_CHAIN (id);
! 	  if (id != id_orig)
! 	    sym_name = IDENTIFIER_POINTER (id);
! 	}
  
!       sym = XALLOCAVEC (char, strlen (sym_name) + 2);
!       if (sym_name[0] == '*' || sym_name[0] == '&')
! 	strcpy (sym, sym_name + 1);
!       else if (sym_name[0] == '-' || sym_name[0] == '+')
! 	strcpy (sym, sym_name);
!       else
! 	sprintf (sym, "%s%s", user_label_prefix, sym_name);
  
!       stub = XALLOCAVEC (char, strlen (ptr_name) + 2);
!       if (ptr_name[0] == '*' || ptr_name[0] == '&')
! 	strcpy (stub, ptr_name + 1);
!       else
! 	sprintf (stub, "%s%s", user_label_prefix, ptr_name);
  
!       machopic_output_stub (asm_out_file, sym, stub);
!     }
!   else if (! indirect_data (symbol)
! 	   && (machopic_symbol_defined_p (symbol)
! 	       || SYMBOL_REF_LOCAL_P (symbol)))
      {
!       switch_to_section (data_section);
!       assemble_align (GET_MODE_ALIGNMENT (Pmode));
!       assemble_label (asm_out_file, ptr_name);
!       assemble_integer (gen_rtx_SYMBOL_REF (Pmode, sym_name),
! 			GET_MODE_SIZE (Pmode),
! 			GET_MODE_ALIGNMENT (Pmode), 1);
      }
    else
!     {
!       rtx init = const0_rtx;
  
!       switch_to_section (darwin_sections[machopic_nl_symbol_ptr_section]);
  
!       /* Mach-O symbols are passed around in code through indirect
! 	 references and the original symbol_ref hasn't passed through
! 	 the generic handling and reference-catching in
! 	 output_operand, so we need to manually mark weak references
! 	 as such.  */
!       if (SYMBOL_REF_WEAK (symbol))
! 	{
! 	  tree decl = SYMBOL_REF_DECL (symbol);
! 	  gcc_assert (DECL_P (decl));
  
! 	  if (decl != NULL_TREE
! 	      && DECL_EXTERNAL (decl) && TREE_PUBLIC (decl)
! 	      /* Handle only actual external-only definitions, not
! 		 e.g. extern inline code or variables for which
! 		 storage has been allocated.  */
! 	      && !TREE_STATIC (decl))
! 	    {
! 	      fputs ("\t.weak_reference ", asm_out_file);
! 	      assemble_name (asm_out_file, sym_name);
! 	      fputc ('\n', asm_out_file);
! 	    }
! 	}
  
!       assemble_name (asm_out_file, ptr_name);
!       fprintf (asm_out_file, ":\n");
  
!       fprintf (asm_out_file, "\t.indirect_symbol ");
!       assemble_name (asm_out_file, sym_name);
!       fprintf (asm_out_file, "\n");
  
!       /* Variables that are marked with MACHO_SYMBOL_STATIC need to
! 	 have their symbol name instead of 0 in the second entry of
! 	 the non-lazy symbol pointer data structure when they are
! 	 defined.  This allows the runtime to rebind newer instances
! 	 of the translation unit with the original instance of the
! 	 symbol.  */
  
!       if ((SYMBOL_REF_FLAGS (symbol) & MACHO_SYMBOL_STATIC)
! 	  && machopic_symbol_defined_p (symbol))
! 	init = gen_rtx_SYMBOL_REF (Pmode, sym_name);
  
!       assemble_integer (init, GET_MODE_SIZE (Pmode),
! 			GET_MODE_ALIGNMENT (Pmode), 1);
      }
  
    return 1;
  }
  
! void
  machopic_finish (FILE *asm_out_file)
  {
!   if (machopic_indirections)
!     machopic_indirections
!       ->traverse_noresize<FILE *, machopic_output_indirection> (asm_out_file);
  }
  
  int
--- 1071,1230 ----
    return pic_ref;
  }
  
! /* Callbacks to output the stub or non-lazy pointers.
!    Each works on the item in *SLOT,if it has been used.
!    DATA is the FILE* for assembly output.
!    Called from htab_traverses, invoked from machopic_finish().  */
  
  int
! machopic_output_data_section_indirection (machopic_indirection **slot,
! 					  FILE *asm_out_file)
  {
    machopic_indirection *p = *slot;
  
!   if (!p->used || !p->nlsp_in_data_section)
      return 1;
  
!   rtx symbol = p->symbol;
!   /* The original symbol name.  */
!   const char *sym_name = XSTR (symbol, 0);
!   /* The name of the indirection symbol.  */
!   const char *ptr_name = p->ptr_name;
  
!   switch_to_section (data_section);
!   assemble_align (GET_MODE_ALIGNMENT (Pmode));
!   assemble_label (asm_out_file, ptr_name);
!   assemble_integer (gen_rtx_SYMBOL_REF (Pmode, sym_name),
! 		    GET_MODE_SIZE (Pmode),
! 		    GET_MODE_ALIGNMENT (Pmode), 1);
  
!   return 1;
! }
  
! int
! machopic_output_stub_indirection (machopic_indirection **slot,
! 				  FILE *asm_out_file)
! {
!   machopic_indirection *p = *slot;
  
!   if (!p->used || !p->stub_p)
!     return 1;
  
!   rtx symbol = p->symbol;
!   /* The original symbol name.  */
!   const char *sym_name = XSTR (symbol, 0);
!   /* The name of the stub symbol.  */
!   const char *ptr_name = p->ptr_name;
  
!   tree id = maybe_get_identifier (sym_name);
!   if (id)
      {
!       tree id_orig = id;
! 
!       while (IDENTIFIER_TRANSPARENT_ALIAS (id))
! 	id = TREE_CHAIN (id);
!       if (id != id_orig)
! 	sym_name = IDENTIFIER_POINTER (id);
      }
+ 
+   char *sym = XALLOCAVEC (char, strlen (sym_name) + 2);
+   if (sym_name[0] == '*' || sym_name[0] == '&')
+     strcpy (sym, sym_name + 1);
+   else if (sym_name[0] == '-' || sym_name[0] == '+')
+     strcpy (sym, sym_name);
    else
!     sprintf (sym, "%s%s", user_label_prefix, sym_name);
  
!   char *stub = XALLOCAVEC (char, strlen (ptr_name) + 2);
!   if (ptr_name[0] == '*' || ptr_name[0] == '&')
!     strcpy (stub, ptr_name + 1);
!   else
!     sprintf (stub, "%s%s", user_label_prefix, ptr_name);
  
!   machopic_output_stub (asm_out_file, sym, stub);
  
!   return 1;
! }
  
! int
! machopic_output_indirection (machopic_indirection **slot, FILE *asm_out_file)
! {
!   machopic_indirection *p = *slot;
  
!   if (!p->used || p->stub_p || p->nlsp_in_data_section)
!     return 1;
  
!   rtx symbol = p->symbol;
!   /* The original symbol name.  */
!   const char *sym_name = XSTR (symbol, 0);
!   /* The nonlazy-stub symbol name.  */
!   const char *ptr_name = p->ptr_name;
  
!   switch_to_section (darwin_sections[machopic_nl_symbol_ptr_section]);
  
!   /* Mach-O symbols are passed around in code through indirect references and
!      the original symbol_ref hasn't passed through the generic handling and
!      reference-catching in output_operand, so we need to manually mark weak
!      references as such.  */
! 
!   if (SYMBOL_REF_WEAK (symbol))
!     {
!       tree decl = SYMBOL_REF_DECL (symbol);
!       gcc_checking_assert (DECL_P (decl));
! 
!       if (decl != NULL_TREE
! 	  && DECL_EXTERNAL (decl) && TREE_PUBLIC (decl)
! 	  /* Handle only actual external-only definitions, not
! 	     e.g. extern inline code or variables for which
! 	     storage has been allocated.  */
! 	  && !TREE_STATIC (decl))
! 	{
! 	  fputs ("\t.weak_reference ", asm_out_file);
! 	  assemble_name (asm_out_file, sym_name);
! 	  fputc ('\n', asm_out_file);
! 	}
      }
  
+   assemble_name (asm_out_file, ptr_name);
+   fprintf (asm_out_file, ":\n");
+ 
+   fprintf (asm_out_file, "\t.indirect_symbol ");
+   assemble_name (asm_out_file, sym_name);
+   fprintf (asm_out_file, "\n");
+ 
+   /* Variables that are marked with MACHO_SYMBOL_FLAG_STATIC need to
+      have their symbol name instead of 0 in the second entry of
+      the non-lazy symbol pointer data structure when they are
+      defined.  This allows the runtime to rebind newer instances
+      of the translation unit with the original instance of the
+      symbol.  */
+ 
+   rtx init = const0_rtx;
+   if (MACHO_SYMBOL_STATIC_P (symbol) && machopic_symbol_defined_p (symbol))
+     init = gen_rtx_SYMBOL_REF (Pmode, sym_name);
+ 
+   assemble_integer (init, GET_MODE_SIZE (Pmode),
+ 		    GET_MODE_ALIGNMENT (Pmode), 1);
+ 
    return 1;
  }
  
! static void
  machopic_finish (FILE *asm_out_file)
  {
!   if (!machopic_indirections)
!     return;
! 
!   /* First output an symbol indirections that have been placed into .data
!      (we don't expect these now).  */
!   machopic_indirections->traverse_noresize
!     <FILE *, machopic_output_data_section_indirection> (asm_out_file);
! 
!   machopic_indirections->traverse_noresize
!     <FILE *, machopic_output_stub_indirection> (asm_out_file);
! 
!   machopic_indirections->traverse_noresize
!     <FILE *, machopic_output_indirection> (asm_out_file);
  }
  
  int
*************** machopic_operand_p (rtx op)
*** 1212,1236 ****
  	    && XINT (XEXP (op, 0), 1) == UNSPEC_MACHOPIC_OFFSET);
  }
  
! /* This function records whether a given name corresponds to a defined
!    or undefined function or variable, for machopic_classify_ident to
!    use later.  */
  
  void
! darwin_encode_section_info (tree decl, rtx rtl, int first ATTRIBUTE_UNUSED)
  {
!   rtx sym_ref;
  
!   /* Do the standard encoding things first.  */
    default_encode_section_info (decl, rtl, first);
  
!   if (TREE_CODE (decl) != FUNCTION_DECL && TREE_CODE (decl) != VAR_DECL)
      return;
  
!   sym_ref = XEXP (rtl, 0);
!   if (TREE_CODE (decl) == VAR_DECL)
      SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_VARIABLE;
  
    if (!DECL_EXTERNAL (decl)
        && (!TREE_PUBLIC (decl) || !DECL_WEAK (decl))
        && ! lookup_attribute ("weakref", DECL_ATTRIBUTES (decl))
--- 1239,1289 ----
  	    && XINT (XEXP (op, 0), 1) == UNSPEC_MACHOPIC_OFFSET);
  }
  
! /* This function:
!    computes and caches a series of flags that characterise the symbol's
!    properties that affect Mach-O code gen (including accidental cases
!    from older toolchains).
! 
!    TODO:
!    Here we also need to do enough analysis to determine if a symbol's
!    name needs to be made linker-visible.  This is more tricky - since
!    it depends on whether we've previously seen a global weak definition
!    in the same section.
!    */
  
  void
! darwin_encode_section_info (tree decl, rtx rtl, int first)
  {
!   /* Careful not to prod global register variables.  */
!   if (!MEM_P (rtl))
!     return;
  
!   /* Do the standard encoding things first; this sets:
!      SYMBOL_FLAG_FUNCTION,
!      SYMBOL_FLAG_LOCAL, (binds_local_p)
!      TLS_MODEL, SYMBOL_FLAG_SMALL
!      SYMBOL_FLAG_EXTERNAL.  */
    default_encode_section_info (decl, rtl, first);
  
!   if (! VAR_OR_FUNCTION_DECL_P (decl))
      return;
  
!   rtx sym_ref = XEXP (rtl, 0);
!   if (VAR_P (decl))
      SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_VARIABLE;
  
+   /* Only really common if there's no initialiser.  */
+   bool really_common_p = (DECL_COMMON (decl)
+ 			  && (DECL_INITIAL (decl) == NULL
+ 			      || (!in_lto_p
+ 				  && DECL_INITIAL (decl) == error_mark_node)));
+ 
+   /* For Darwin, if we have specified visibility and it's not the default
+      that's counted 'hidden'.  */
+   if (DECL_VISIBILITY_SPECIFIED (decl)
+       && DECL_VISIBILITY (decl) != VISIBILITY_DEFAULT)
+     SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_HIDDEN_VIS;
+ 
    if (!DECL_EXTERNAL (decl)
        && (!TREE_PUBLIC (decl) || !DECL_WEAK (decl))
        && ! lookup_attribute ("weakref", DECL_ATTRIBUTES (decl))
*************** darwin_encode_section_info (tree decl, r
*** 1241,1247 ****
      SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_DEFINED;
  
    if (! TREE_PUBLIC (decl))
!     SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_STATIC;
  }
  
  void
--- 1294,1306 ----
      SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_DEFINED;
  
    if (! TREE_PUBLIC (decl))
!     SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_STATIC;
! 
!   /* Short cut check for Darwin 'must indirect' rules.  */
!   if (really_common_p
!       || (DECL_WEAK (decl) && ! MACHO_SYMBOL_HIDDEN_VIS_P (sym_ref))
!       || lookup_attribute ("weakref", DECL_ATTRIBUTES (decl)))
!      SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_MUST_INDIRECT;
  }
  
  void
*************** darwin_mark_decl_preserved (const char *
*** 1258,1269 ****
  }
  
  static section *
! darwin_rodata_section (int use_coal, bool zsize)
  {
    return (use_coal
  	  ? darwin_sections[const_coal_section]
  	  : (zsize ? darwin_sections[zobj_const_section]
! 		   : darwin_sections[const_section]));
  }
  
  static section *
--- 1317,1329 ----
  }
  
  static section *
! darwin_rodata_section (int use_coal, bool zsize, int reloc)
  {
    return (use_coal
  	  ? darwin_sections[const_coal_section]
  	  : (zsize ? darwin_sections[zobj_const_section]
! 		   : reloc ? darwin_sections[const_data_section]
! 			   : darwin_sections[const_section]));
  }
  
  static section *
*************** machopic_select_section (tree decl,
*** 1556,1562 ****
  
      case SECCAT_RODATA:
      case SECCAT_SRODATA:
!       base_section = darwin_rodata_section (use_coal, zsize);
        break;
  
      case SECCAT_RODATA_MERGE_STR:
--- 1616,1622 ----
  
      case SECCAT_RODATA:
      case SECCAT_SRODATA:
!       base_section = darwin_rodata_section (use_coal, zsize, reloc);
        break;
  
      case SECCAT_RODATA_MERGE_STR:
*************** darwin_emit_unwind_label (FILE *file, tr
*** 2092,2102 ****
    static int invok_count = 0;
    static tree last_fun_decl = NULL_TREE;
    
!   /* We use the linker to emit the .eh labels for Darwin 9 and above.  */
!   if (! for_eh || generating_for_darwin_version >= 9)
      return;
  
!   /* FIXME: This only works when the eh for all sections of a function is 
       emitted at the same time.  If that changes, we would need to use a lookup
       table of some form to determine what to do.  Also, we should emit the
       unadorned label for the partition containing the public label for a
--- 2152,2162 ----
    static int invok_count = 0;
    static tree last_fun_decl = NULL_TREE;
    
!   /* Modern linkers can produce distinct FDEs without compiler support.  */
!   if (! for_eh || ! ld_needs_eh_markers)
      return;
  
!   /* FIXME: This only works when the eh for all sections of a function are
       emitted at the same time.  If that changes, we would need to use a lookup
       table of some form to determine what to do.  Also, we should emit the
       unadorned label for the partition containing the public label for a
*************** darwin_file_end (void)
*** 2945,2956 ****
        if (flag_objc_abi >= 2)
  	{
  	  flags = 16;
! 	  output_section_asm_op
! 	    (darwin_sections[objc2_image_info_section]->unnamed.data);
  	}
        else
! 	output_section_asm_op
! 	  (darwin_sections[objc_image_info_section]->unnamed.data);
  
        ASM_OUTPUT_ALIGN (asm_out_file, 2);
        fputs ("L_OBJC_ImageInfo:\n", asm_out_file);
--- 3005,3014 ----
        if (flag_objc_abi >= 2)
  	{
  	  flags = 16;
!           switch_to_section (darwin_sections[objc2_image_info_section]);
  	}
        else
! 	switch_to_section (darwin_sections[objc_image_info_section]);
  
        ASM_OUTPUT_ALIGN (asm_out_file, 2);
        fputs ("L_OBJC_ImageInfo:\n", asm_out_file);
*************** darwin_override_options (void)
*** 3156,3172 ****
  				: (generating_for_darwin_version >= 9) ? 1
  								       : 0);
  
-   /* Objective-C family ABI 2 is only valid for next/m64 at present.  */
    if (global_options_set.x_flag_objc_abi && flag_next_runtime)
      {
!       if (TARGET_64BIT && global_options.x_flag_objc_abi < 2)
! 	error_at (UNKNOWN_LOCATION, "%<-fobjc-abi-version%> >= 2 must be"
! 				    " used for %<-m64%> targets with"
! 				    " %<-fnext-runtime%>");
!       if (!TARGET_64BIT && global_options.x_flag_objc_abi >= 2)
! 	error_at (UNKNOWN_LOCATION, "%<-fobjc-abi-version%> >= 2 is not"
! 				    " supported on %<-m32%> targets with"
! 				    " %<-fnext-runtime%>");
      }
  
    /* Don't emit DWARF3/4 unless specifically selected.  This is a 
--- 3214,3232 ----
  				: (generating_for_darwin_version >= 9) ? 1
  								       : 0);
  
    if (global_options_set.x_flag_objc_abi && flag_next_runtime)
      {
!       if (TARGET_64BIT && global_options.x_flag_objc_abi != 2)
! 	/* The Objective-C family ABI 2 is the only valid version NeXT/m64.  */
! 	error_at (UNKNOWN_LOCATION,
! 		  "%<-fobjc-abi-version%> 2 must be used for 64 bit targets"
! 		  " with %<-fnext-runtime%>");
!       else if (!TARGET_64BIT && global_options.x_flag_objc_abi >= 2)
! 	/* ABI versions 0 and 1 are the only valid versions NeXT/m32.  */
! 	error_at (UNKNOWN_LOCATION,
! 		  "%<-fobjc-abi-version%> %d is not supported for 32 bit"
! 		  " targets with %<-fnext-runtime%>",
! 		  global_options.x_flag_objc_abi);
      }
  
    /* Don't emit DWARF3/4 unless specifically selected.  This is a 
*************** darwin_override_options (void)
*** 3242,3249 ****
        /* so no tables either.. */
        flag_unwind_tables = 0;
        flag_asynchronous_unwind_tables = 0;
-       /* We still need to emit branch islands for kernel context.  */
-       darwin_emit_branch_islands = true;
      }
  
    if (flag_var_tracking_uninit == 0
--- 3302,3307 ----
*************** darwin_override_options (void)
*** 3253,3258 ****
--- 3311,3318 ----
        && write_symbols == DWARF2_DEBUG)
      flag_var_tracking_uninit = flag_var_tracking;
  
+   /* Final check on PCI options; for Darwin these are not dependent on the PIE
+      ones, although PIE does require PIC to support it.  */
    if (MACHO_DYNAMIC_NO_PIC_P)
      {
        if (flag_pic)
*************** darwin_override_options (void)
*** 3261,3277 ****
  		 " %<-fpie%> or %<-fPIE%>");
        flag_pic = 0;
      }
!   else if (flag_pic == 1)
      {
!       /* Darwin's -fpic is -fPIC.  */
        flag_pic = 2;
      }
  
!   /* It is assumed that branch island stubs are needed for earlier systems.  */
!   if (generating_for_darwin_version < 9)
!     darwin_emit_branch_islands = true;
!   else
!     emit_aligned_common = true; /* Later systems can support aligned common.  */
  
    /* The c_dialect...() macros are not available to us here.  */
    darwin_running_cxx = (strstr (lang_hooks.name, "C++") != 0);
--- 3321,3372 ----
  		 " %<-fpie%> or %<-fPIE%>");
        flag_pic = 0;
      }
!   else if (flag_pic == 1
! 	   || (flag_pic == 0 && !(flag_mkernel || flag_apple_kext)))
      {
!       /* Darwin's -fpic is -fPIC.
! 	 We only support "static" code in the kernel and kernel exts.  */
        flag_pic = 2;
      }
  
!   /* Linkers >= ld64-62.1 (at least) are capable of making the necessary PIC
!      indirections and we no longer need to emit pic symbol stubs.
!      However, if we are generating code for earlier ones (or for use in the
!      kernel) the stubs might still be required, and this will be set true.
!      If the user sets it on or off - then that takes precedence.
! 
!      Linkers that don't need stubs, don't need the EH symbol markers either.
!   */
! 
!   if (!global_options_set.x_darwin_symbol_stubs)
!     {
!       if (darwin_target_linker)
! 	{
! 	  if (strverscmp (darwin_target_linker, MIN_LD64_OMIT_STUBS) < 0)
! 	    {
! 	      darwin_symbol_stubs = true;
! 	      ld_needs_eh_markers = true;
! 	    }
! 	}
!       else if (generating_for_darwin_version < 9)
! 	{
! 	  /* If we don't know the linker version and we're targeting an old
! 	     system, we know no better than to assume the use of an earlier
! 	     linker.  */
! 	  darwin_symbol_stubs = true;
! 	  ld_needs_eh_markers = true;
! 	}
!     }
!   else if (DARWIN_X86 && darwin_symbol_stubs && TARGET_64BIT)
!     {
!       inform (input_location,
! 	      "%<-msymbol-stubs%> is not required for 64b code (ignored)");
!       darwin_symbol_stubs = false;
!     }
! 
!   if (generating_for_darwin_version >= 9)
!     /* Later systems can support aligned common.  */
!     emit_aligned_common = true;
  
    /* The c_dialect...() macros are not available to us here.  */
    darwin_running_cxx = (strstr (lang_hooks.name, "C++") != 0);
diff -Nrcpad gcc-8.3.0/gcc/config/darwin.h gcc-8.4.0/gcc/config/darwin.h
*** gcc-8.3.0/gcc/config/darwin.h	Sun Dec 23 20:55:39 2018
--- gcc-8.4.0/gcc/config/darwin.h	Wed Mar  4 08:30:00 2020
*************** extern GTY(()) int darwin_ms_struct;
*** 129,134 ****
--- 129,152 ----
    "%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform } \
       %<gsplit-dwarf"
  
+ #if LD64_HAS_EXPORT_DYNAMIC
+ #define DARWIN_RDYNAMIC "%{rdynamic:-export_dynamic}"
+ #else
+ #define DARWIN_RDYNAMIC "%{rdynamic:%nrdynamic is not supported}"
+ #endif
+ 
+ /* FIXME: we should check that the linker supports the -pie and -no_pie.
+    options.  */
+ #define DARWIN_PIE_SPEC \
+ "%{pie|fpie|fPIE:\
+    %{mdynamic-no-pic: \
+      %n'-mdynamic-no-pic' overrides '-pie', '-fpie' or '-fPIE'; \
+      :%:version-compare(>= 10.5 mmacosx-version-min= -pie) }} "
+ 
+ #define DARWIN_NOPIE_SPEC \
+ "%{no-pie|fno-pie|fno-PIE: \
+    %: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 "		\
*************** extern GTY(()) int darwin_ms_struct;
*** 159,184 ****
  #define CPP_SPEC "%{static:%{!dynamic:-D__STATIC__}}%{!static:-D__DYNAMIC__}" \
  	" %{pthread:-D_REENTRANT}"
  
! /* This is mostly a clone of the standard LINK_COMMAND_SPEC, plus
!    precomp, libtool, and fat build additions.
  
     In general, random Darwin linker flags should go into LINK_SPEC
     instead of LINK_COMMAND_SPEC.  The command spec is better for
     specifying the handling of options understood by generic Unix
     linkers, and for positional arguments like libraries.  */
  
- #if LD64_HAS_EXPORT_DYNAMIC
- #define DARWIN_EXPORT_DYNAMIC " %{rdynamic:-export_dynamic}"
- #else
- #define DARWIN_EXPORT_DYNAMIC " %{rdynamic: %nrdynamic is not supported}"
- #endif
- 
  #define LINK_COMMAND_SPEC_A \
     "%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\
      %(linker)" \
      LINK_PLUGIN_SPEC \
      "%{flto*:%<fcompare-debug*} \
!     %{flto*} \
      %l " LINK_COMPRESS_DEBUG_SPEC \
     "%X %{s} %{t} %{Z} %{u*} \
      %{e*} %{r} \
--- 177,213 ----
  #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
!    output from GCC.
! 
!    FIXME: we should check that the linker supports the option.
! */
! 
! #define DARWIN_NOCOMPACT_UNWIND \
! " %:version-compare(>= 10.6 mmacosx-version-min= -no_compact_unwind) "
! 
! /* In Darwin linker specs we can put -lcrt0.o and ld will search the library
!    path for crt0.o or -lcrtx.a and it will search for for libcrtx.a.  As for
!    other ports, we can also put xxx.{o,a}%s and get the appropriate complete
!    startfile absolute directory.  This latter point is important when we want
!    to override ld's rule of .dylib being found ahead of .a and the user wants
!    the convenience library to be linked.  */
! 
! /* The LINK_COMMAND spec is mostly a clone of the standard LINK_COMMAND_SPEC,
!    plus precomp, libtool, and fat build additions.
  
     In general, random Darwin linker flags should go into LINK_SPEC
     instead of LINK_COMMAND_SPEC.  The command spec is better for
     specifying the handling of options understood by generic Unix
     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*} \
!      %{flto} %{fno-lto} %{flto=*} \
      %l " LINK_COMPRESS_DEBUG_SPEC \
     "%X %{s} %{t} %{Z} %{u*} \
      %{e*} %{r} \
*************** extern GTY(()) int darwin_ms_struct;
*** 193,202 ****
        %{%:sanitize(address): -lasan } \
        %{%:sanitize(undefined): -lubsan } \
        %(link_ssp) \
-       " DARWIN_EXPORT_DYNAMIC " %<rdynamic \
        %(link_gcc_c_sequence) \
      }}\
!     %{!nostdlib:%{!nostartfiles:%E}} %{T*} %{F*} }}}}}}}"
  
  #define DSYMUTIL "\ndsymutil"
  
--- 222,235 ----
        %{%:sanitize(address): -lasan } \
        %{%:sanitize(undefined): -lubsan } \
        %(link_ssp) \
        %(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"
  
*************** extern GTY(()) int darwin_ms_struct;
*** 233,240 ****
  #define STANDARD_STARTFILE_PREFIX_1 ""
  #define STANDARD_STARTFILE_PREFIX_2 ""
  
- #define DARWIN_PIE_SPEC "%{fpie|pie|fPIE:}"
- 
  /* 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,
--- 266,271 ----
*************** extern GTY(()) int darwin_ms_struct;
*** 298,304 ****
       %:version-compare(< 10.5 mmacosx-version-min= -multiply_defined) \
       %:version-compare(< 10.5 mmacosx-version-min= suppress)}} \
     %{Zmultiplydefinedunused*:-multiply_defined_unused %*} \
-    " DARWIN_PIE_SPEC " \
     %{prebind} %{noprebind} %{nofixprebinding} %{prebind_all_twolevel_modules} \
     %{read_only_relocs} \
     %{sectcreate*} %{sectorder*} %{seg1addr*} %{segprot*} \
--- 329,334 ----
*************** extern GTY(()) int darwin_ms_struct;
*** 330,374 ****
  
  /* 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.
  
!    Note that by default, -lgcc_eh is not linked against!  This is
!    because in a future version of Darwin the EH frame information may
!    be in a new format, or the fallback routine might be changed; if
!    you want to explicitly link against the static version of those
!    routines, because you know you don't need to unwind through system
!    libraries, you need to explicitly say -static-libgcc.
  
!    If it is linked against, it has to be before -lgcc, because it may
     need symbols from -lgcc.  */
  #undef REAL_LIBGCC_SPEC
  #define REAL_LIBGCC_SPEC						   \
     "%{static-libgcc|static: -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 }"
  
! /* We specify crt0.o as -lcrt0.o so that ld will search the library path.
! 
!    crt3.o provides __cxa_atexit on systems that don't have it.  Since
!    it's only used with C++, which requires passing -shared-libgcc, key
!    off that to avoid unnecessarily adding a destructor to every
!    powerpc program built.  */
  
  #undef  STARTFILE_SPEC
  #define STARTFILE_SPEC							    \
!   "%{Zdynamiclib: %(darwin_dylib1) %{fgnu-tm: -lcrttms.o}}		    \
!    %{!Zdynamiclib:%{Zbundle:%{!static:					    \
! 	%:version-compare(< 10.6 mmacosx-version-min= -lbundle1.o)	    \
! 	%{fgnu-tm: -lcrttms.o}}}					    \
       %{!Zbundle:%{pg:%{static:-lgcrt0.o}				    \
                       %{!static:%{object:-lgcrt0.o}			    \
                                 %{!object:%{preload:-lgcrt0.o}		    \
--- 360,401 ----
  
  /* 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}		    \
*************** extern GTY(()) int darwin_ms_struct;
*** 380,386 ****
                                  %{!object:%{preload:-lcrt0.o}		    \
                                    %{!preload: %(darwin_crt1)		    \
  					      %(darwin_crt2)}}}}}}	    \
!   %{shared-libgcc:%:version-compare(< 10.5 mmacosx-version-min= crt3.o%s)}"
  
  /* We want a destructor last in the list.  */
  #define TM_DESTRUCTOR "%{fgnu-tm: -lcrttme.o}"
--- 407,413 ----
                                  %{!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}"
*************** extern GTY(()) int darwin_ms_struct;
*** 388,398 ****
  
  #define DARWIN_EXTRA_SPECS						\
    { "darwin_crt1", DARWIN_CRT1_SPEC },					\
!   { "darwin_dylib1", DARWIN_DYLIB1_SPEC },
! 
! #define DARWIN_DYLIB1_SPEC						\
!   "%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o)		\
!    %:version-compare(>< 10.5 10.6 mmacosx-version-min= -ldylib1.10.5.o)"
  
  #define DARWIN_CRT1_SPEC						\
    "%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o)		\
--- 415,424 ----
  
  #define DARWIN_EXTRA_SPECS						\
    { "darwin_crt1", DARWIN_CRT1_SPEC },					\
!   { "darwin_crt2", DARWIN_CRT2_SPEC },					\
!   { "darwin_crt3", DARWIN_CRT3_SPEC },					\
!   { "darwin_dylib1", DARWIN_DYLIB1_SPEC },				\
!   { "darwin_bundle1", DARWIN_BUNDLE1_SPEC },
  
  #define DARWIN_CRT1_SPEC						\
    "%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o)		\
*************** extern GTY(()) int darwin_ms_struct;
*** 400,405 ****
--- 426,449 ----
     %:version-compare(>< 10.6 10.8 mmacosx-version-min= -lcrt1.10.6.o)	\
     %{fgnu-tm: -lcrttms.o}"
  
+ #define DARWIN_CRT2_SPEC ""
+ 
+ /* crt3.o provides __cxa_atexit on systems that don't have it (and a fix
+    up for faulty versions on 10.4).  Since it's only used with C++, which
+    requires passing -shared-libgcc, key off that to avoid unnecessarily
+    adding a destructor to every program built for 10.4 or earlier.  */
+ 
+ #define DARWIN_CRT3_SPEC \
+ "%{shared-libgcc:%:version-compare(< 10.5 mmacosx-version-min= crt3.o%s)}"
+ 
+ #define DARWIN_DYLIB1_SPEC						\
+   "%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o)		\
+    %:version-compare(>< 10.5 10.6 mmacosx-version-min= -ldylib1.10.5.o)"
+ 
+ #define DARWIN_BUNDLE1_SPEC \
+ "%{!static:%:version-compare(< 10.6 mmacosx-version-min= -lbundle1.o)	\
+ 	   %{fgnu-tm: -lcrttms.o}}"
+ 
  #ifdef HAVE_AS_MMACOSX_VERSION_MIN_OPTION
  /* Emit macosx version (but only major).  */
  #define ASM_MMACOSX_VERSION_MIN_SPEC \
*************** extern GTY(()) section * darwin_sections
*** 765,785 ****
  #undef TARGET_ASM_MARK_DECL_PRESERVED
  #define TARGET_ASM_MARK_DECL_PRESERVED darwin_mark_decl_preserved
  
! /* Set on a symbol with SYMBOL_FLAG_FUNCTION or
!    MACHO_SYMBOL_FLAG_VARIABLE to indicate that the function or
!    variable has been defined in this translation unit.
!    When porting Mach-O to new architectures you need to make
!    sure these aren't clobbered by the backend.  */
  
! #define MACHO_SYMBOL_FLAG_VARIABLE (SYMBOL_FLAG_MACH_DEP)
! #define MACHO_SYMBOL_FLAG_DEFINED ((SYMBOL_FLAG_MACH_DEP) << 1)
  
  /* Set on a symbol to indicate when fix-and-continue style code
     generation is being used and the symbol refers to a static symbol
     that should be rebound from new instances of a translation unit to
     the original instance of the data.  */
  
! #define MACHO_SYMBOL_STATIC ((SYMBOL_FLAG_MACH_DEP) << 2)
  
  /* Symbolic names for various things we might know about a symbol.  */
  
--- 809,860 ----
  #undef TARGET_ASM_MARK_DECL_PRESERVED
  #define TARGET_ASM_MARK_DECL_PRESERVED darwin_mark_decl_preserved
  
! /* Any port using this header needs to define the first available
!    subtarget symbol bit: SYMBOL_FLAG_SUBT_DEP.  */
  
! /* Is a variable. */
! #define MACHO_SYMBOL_FLAG_VARIABLE (SYMBOL_FLAG_SUBT_DEP)
! #define MACHO_SYMBOL_VARIABLE_P(RTX) \
!   ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_VARIABLE) != 0)
! 
! /* Set on a symbol that must be indirected, even when there is a
!    definition in the TU.  The ABI mandates that common symbols are so
!    indirected, as are weak.  If 'fix-and-continue' is operational then
!    data symbols might also be.  */
! 
! #define MACHO_SYMBOL_FLAG_MUST_INDIRECT ((SYMBOL_FLAG_SUBT_DEP) << 1)
! #define MACHO_SYMBOL_MUST_INDIRECT_P(RTX) \
!   ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_MUST_INDIRECT) != 0)
! 
! /* Set on a symbol with SYMBOL_FLAG_FUNCTION or MACHO_SYMBOL_FLAG_VARIABLE
!    to indicate that the function or variable is considered defined in this
!    translation unit.  */
! 
! #define MACHO_SYMBOL_FLAG_DEFINED ((SYMBOL_FLAG_SUBT_DEP) << 2)
! #define MACHO_SYMBOL_DEFINED_P(RTX) \
!   ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_DEFINED) != 0)
! 
! /* Set on a symbol that has specified non-default visibility.  */
! 
! #define MACHO_SYMBOL_FLAG_HIDDEN_VIS ((SYMBOL_FLAG_SUBT_DEP) << 3)
! #define MACHO_SYMBOL_HIDDEN_VIS_P(RTX) \
!   ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_HIDDEN_VIS) != 0)
! 
! /* Set on a symbol that is a pic stub or symbol indirection (i.e. the
!    L_xxxxx${stub,non_lazy_ptr,lazy_ptr}.  */
! 
! #define MACHO_SYMBOL_FLAG_INDIRECTION ((SYMBOL_FLAG_SUBT_DEP) << 5)
! #define MACHO_SYMBOL_INDIRECTION_P(RTX) \
!   ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_INDIRECTION) != 0)
  
  /* Set on a symbol to indicate when fix-and-continue style code
     generation is being used and the symbol refers to a static symbol
     that should be rebound from new instances of a translation unit to
     the original instance of the data.  */
  
! #define MACHO_SYMBOL_FLAG_STATIC ((SYMBOL_FLAG_SUBT_DEP) << 6)
! #define MACHO_SYMBOL_STATIC_P(RTX) \
!   ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_STATIC) != 0)
  
  /* Symbolic names for various things we might know about a symbol.  */
  
*************** extern void darwin_driver_init (unsigned
*** 972,979 ****
     _tested_ version known to support this so far.  */
  #define MIN_LD64_NO_COAL_SECTS "236.4"
  
  #ifndef LD64_VERSION
! #define LD64_VERSION "85.2"
  #else
  #define DEF_LD64 LD64_VERSION
  #endif
--- 1047,1058 ----
     _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 "85.2"
+ 
  #ifndef LD64_VERSION
! #define LD64_VERSION "62.1"
  #else
  #define DEF_LD64 LD64_VERSION
  #endif
diff -Nrcpad gcc-8.3.0/gcc/config/darwin.opt gcc-8.4.0/gcc/config/darwin.opt
*** gcc-8.3.0/gcc/config/darwin.opt	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/darwin.opt	Wed Mar  4 08:30:00 2020
***************
*** 18,257 ****
  ; along with GCC; see the file COPYING3.  If not see
  ; <http://www.gnu.org/licenses/>.
  
! ; Various linker options have a -Z added so that they can get to specs
! ; processing without interference.  Note that an option name with a
! ; prefix that matches another option name, that also takes an
! ; argument, being mapped to a -Z linker option, needs to be modified
! ; so the prefix is different, otherwise a '*' after the shorter option
! ; will match with the longer one.
  
  all_load
! Driver Alias(Zall_load)
  
  allowable_client
! Driver Separate Alias(Zallowable_client)
  
  arch
  Driver RejectNegative Separate
  
  arch_errors_fatal
! Driver Alias(Zarch_errors_fatal)
  
  asm_macosx_version_min=
  Driver RejectNegative Joined
  
  bind_at_load
! Driver Alias(Zbind_at_load)
  
  bundle
! Driver Alias(Zbundle)
  
  bundle_loader
! Driver Separate Alias(Zbundle_loader)
  
! dead_strip
! Driver Alias(Zdead_strip)
  
! dependency-file
! C ObjC C++ ObjC++ Separate Alias(MF) MissingArgError(missing filename after %qs)
  
  dylib_file
  Driver Separate Alias(Zdylib_file)
  
  dylinker
! Driver
  
  dynamic
! Driver Alias(Zdynamic)
  
  dynamiclib
! Driver Alias(Zdynamiclib)
  
  exported_symbols_list
! Driver Separate Alias(Zexported_symbols_list)
  
  filelist
  Driver RejectNegative Separate
  
  findirect-virtual-calls
  Driver RejectNegative
  
  flat_namespace
  Driver RejectNegative Alias(Zflat_namespace)
  
  force_cpusubtype_ALL
  Driver RejectNegative Alias(Zforce_cpusubtype_ALL)
  
  force_flat_namespace
  Driver RejectNegative Alias(Zforce_flat_namespace)
  
  framework
  Driver RejectNegative Separate
  
  fterminated-vtables
  Driver RejectNegative
  
  gfull
  Driver RejectNegative
  
  gused
  Driver RejectNegative
  
  headerpad_max_install_names
! Driver
  
  image_base
! Driver Separate Alias(Zimage_base)
  
  init
! Driver Separate Alias(Zinit)
  
  install_name
! Driver Separate Alias(Zinstall_name)
  
  keep_private_externs
! Driver
! 
! mconstant-cfstrings
! Target Report Var(darwin_constant_cfstrings) Init(1)
! Generate compile-time CFString objects.
  
  multi_module
  Driver RejectNegative Alias(Zmulti_module)
  
  multiply_defined
  Driver RejectNegative Separate Alias(Zmultiply_defined)
  
  multiply_defined_unused
  Driver RejectNegative Separate Alias(Zmultiplydefinedunused)
  
  no_dead_strip_inits_and_terms
! Driver Alias(Zno_dead_strip_inits_and_terms)
  
  nofixprebinding
! Driver
  
  nomultidefs
! Driver
  
  noprebind
! Driver
  
  noseglinkedit
! Driver
  
  object
! Driver
  
  prebind
! Driver
  
  prebind_all_twolevel_modules
! Driver
  
  preload
! Driver
  
  private_bundle
! Driver
  
  pthread
! Driver
  
  rdynamic
! Driver
  
  seg_addr_table
! Driver Separate Alias(Zseg_addr_table)
  
  seg_addr_table_filename
! Driver Separate Alias(Zfn_seg_addr_table_filename)
  
  segaddr
! Driver Separate Args(2) Alias(Zsegaddr)
  
  seglinkedit
! Driver
  
  segs_read_only_addr
! Driver Separate Alias(Zsegs_read_only_addr)
  
  segs_read_write_addr
! Driver Separate Alias(Zsegs_read_write_addr)
  
  single_module
! Driver Alias(Zsingle_module)
  
  twolevel_namespace
! Driver
  
  twolevel_namespace_hints
! Driver
  
  umbrella
! Driver Separate Alias(Zumbrella)
  
  unexported_symbols_list
! Driver Separate Alias(Zunexported_symbols_list)
  
  weak_reference_mismatches
! Driver Separate Alias(Zweak_reference_mismatches)
  
  whatsloaded
! Driver
  
  whyload
! Driver
  
  y
! Driver Joined
  
  Mach
! Driver
! 
! Wnonportable-cfstrings
! Target Report Var(darwin_warn_nonportable_cfstrings) Init(1) Warning
! Warn if constant CFString objects contain non-portable characters.
! 
! ; Use new-style pic stubs if this is true, x86 only so far.
! matt-stubs
! Target Report Var(darwin_macho_att_stub) Init(1)
! Generate AT&T-style stubs for Mach-O.
! 
! mdynamic-no-pic
! Target Common Report Mask(MACHO_DYNAMIC_NO_PIC)
! Generate code suitable for executables (NOT shared libs).
! 
! mfix-and-continue
! Target Report Var(darwin_fix_and_continue)
! Generate code suitable for fast turn around debugging.
! 
! ; The Init here is for the convenience of GCC developers, so that cc1
! ; and cc1plus don't crash if no -mmacosx-version-min is passed.  The
! ; driver will always pass a -mmacosx-version-min, so in normal use the
! ; Init is never used.
! mmacosx-version-min=
! Target Joined Report Var(darwin_macosx_version_min) Init(DEF_MIN_OSX_VERSION)
! The earliest MacOS X version on which this program will run.
! 
! mone-byte-bool
! Target RejectNegative Report Var(darwin_one_byte_bool)
! Set sizeof(bool) to 1.
! 
! fapple-kext
! Target Report C++ Var(flag_apple_kext)
! Generate code for darwin loadable kernel extensions.
! 
! mkernel
! Target Report Var(flag_mkernel)
! Generate code for the kernel or loadable kernel extensions.
! 
! iframework
! Target RejectNegative C ObjC C++ ObjC++ Joined Separate 
! -iframework <dir>	Add <dir> to the end of the system framework include path.
  
! X
! Driver
  
  Zall_load
  Driver
--- 18,399 ----
  ; along with GCC; see the file COPYING3.  If not see
  ; <http://www.gnu.org/licenses/>.
  
! ; We have a lot of Driver options, many of which are obsolete or very very
! ; rarely used so, to keep this file easier to manage:
! 
! ; Please place all Non-driver options first (in alphabetical order), followed
! ; by Driver-only options.
! 
! ; Non-driver options.
! 
! dependency-file
! C ObjC C++ ObjC++ Separate Alias(MF) MissingArgError(missing filename after %qs)
! 
! fapple-kext
! Target Report C++ Var(flag_apple_kext)
! Generate code for darwin loadable kernel extensions.
! 
! iframework
! Target RejectNegative C ObjC C++ ObjC++ Joined Separate
! -iframework <dir>	Add <dir> to the end of the system framework include path.
! 
! mconstant-cfstrings
! Target Report Var(darwin_constant_cfstrings) Init(1)
! Generate compile-time CFString objects.
! 
! Wnonportable-cfstrings
! Target Report Var(darwin_warn_nonportable_cfstrings) Init(1) Warning
! Warn if constant CFString objects contain non-portable characters.
! 
! ; Use new-style pic stubs if this is true, x86 only so far.
! matt-stubs
! Target Report Var(darwin_macho_att_stub) Init(1)
! Generate AT&T-style stubs for Mach-O.
! 
! mdynamic-no-pic
! Target Common Report Mask(MACHO_DYNAMIC_NO_PIC)
! Generate code suitable for executables (NOT shared libs).
! 
! mfix-and-continue
! Target Report Var(darwin_fix_and_continue)
! Generate code suitable for fast turn around debugging.
! 
! mkernel
! Target Report Var(flag_mkernel)
! Generate code for the kernel or loadable kernel extensions.
! 
! ; The Init here is for the convenience of GCC developers, so that cc1
! ; and cc1plus don't crash if no -mmacosx-version-min is passed.  The
! ; driver will always pass a -mmacosx-version-min, so in normal use the
! ; Init is never used.
! mmacosx-version-min=
! Target RejectNegative Joined Report Var(darwin_macosx_version_min) Init(DEF_MIN_OSX_VERSION)
! The earliest MacOS X version on which this program will run.
! 
! ; Really, only relevant to PowerPC which has a 4 byte bool by default.
! mone-byte-bool
! Target RejectNegative Report Var(darwin_one_byte_bool)
! Set sizeof(bool) to 1.
! 
! msymbol-stubs
! Target Report Var(darwin_symbol_stubs) Init(0)
! Force generation of external symbol indirection stubs.
! 
! ; Some code-gen may be improved / adjusted if the linker is sufficiently modern.
! mtarget-linker=
! Target RejectNegative Joined Report Alias(mtarget-linker)
! 
! mtarget-linker
! Target RejectNegative Joined Separate Report Var(darwin_target_linker) Init(LD64_VERSION)
! The version of ld64 in use for this toolchain.
! 
! ; Driver options.
  
  all_load
! Driver RejectNegative Alias(Zall_load)
! Loads all members of archive libraries
  
  allowable_client
! Driver RejectNegative Separate Alias(Zallowable_client)
! -allowable_client <name>	The output dylib is private to the client(s) named
  
  arch
  Driver RejectNegative Separate
+ -arch <name>	Specify that the output file should be generated for architecture  \"name\"
  
  arch_errors_fatal
! Driver RejectNegative Alias(Zarch_errors_fatal)
! Mismatches between file architecture and the \"-arch\" are errors instead of warnings
  
  asm_macosx_version_min=
  Driver RejectNegative Joined
+ The earliest MacOS X version on which this program will run (formatted for the assembler)
  
  bind_at_load
! Driver RejectNegative Alias(Zbind_at_load)
! Produce an output file that will bind symbols on load, rather than lazily.
  
  bundle
! Driver RejectNegative Alias(Zbundle)
! Produce 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
! Driver RejectNegative Separate
! -client_name <name>	Enable the executable being built to link against a private dylib (using allowable_client)
  
! compatibility_version
! Driver RejectNegative Separate
! -compatibility_version <number>	Set the minimum version for the client interface.  Clients must record a greater number than this or the binding will fail at runtime
! 
! current_version
! Driver RejectNegative Separate
! -current_version <number>	Set the current version for the library.
! 
! 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
! Produce a Mach-O dylinker (file type MH_DYLINKER), only used for building dyld.
! 
! dylinker_install_name
! Driver RejectNegative Separate
! -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>	Global symbols in \"filename\" will be exported from the linked output file, any symbols not mentioned will be treated as hidden.
  
  filelist
  Driver RejectNegative Separate
+ Supply a list of objects to be linked from a file, rather than the command line
  
  findirect-virtual-calls
  Driver RejectNegative
+ 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 information and resolve symbols in the discovery order for loaded libs.
  
  framework
  Driver RejectNegative Separate
+ -framework <name>	The linker should search for the named framework in the framework search path.
  
  fterminated-vtables
  Driver RejectNegative
+ Used for generating code for some older kernel revisions.
  
  gfull
  Driver RejectNegative
+ Abbreviation for \"-g -fno-eliminate-unused-debug-symbols\"
  
  gused
  Driver RejectNegative
+ Abbreviation for \"-g -feliminate-unused-debug-symbols\"
  
  headerpad_max_install_names
! Driver RejectNegative
! Automatically adds space for longer path names in load commands (up to MAXPATHLEN)
  
  image_base
! Driver RejectNegative Separate Alias(Zimage_base)
! -image_base <address>	Choose a 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
! Driver RejectNegative
! 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) The linker never dead strips these items, so the option is not needed.
  
  nofixprebinding
! Driver RejectNegative
! (Obsolete after 10.3.9) Set MH_NOPREFIXBINDING, in an exectuable.
  
  nomultidefs
! Driver RejectNegative
! (Obsolete after 10.4)	Set MH_NOMULTIDEFS in an umbrella framework.
  
  noprebind
! Driver RejectNegative Negative(prebind)
! (Obsolete) LD_PREBIND is no longer supported.
  
  noseglinkedit
! Driver RejectNegative Negative(seglinkedit)
! (Obsolete) This is the default.
  
  object
! Driver RejectNegative
! 
! pagezero_size
! Driver RejectNegative Separate
! -pagezero_size size	Allows setting the page 0 size to 4kb for certain special cases.
  
  prebind
! Driver RejectNegative Negative(noprebind)
! (Obsolete) LD_PREBIND is no longer supported.
  
  prebind_all_twolevel_modules
! Driver RejectNegative
! (Obsolete) LD_PREBIND is no longer supported.
  
  preload
! Driver RejectNegative
! Produces a Mach-O file suitable for embedded/ROM use.
  
  private_bundle
! Driver RejectNegative
! (Obsolete) Allowed linking to proceed with \"-flat_namespace\" when a linked bundle contained a symbol also exported from the main executable.
  
  pthread
! Driver RejectNegative
  
  rdynamic
! Driver RejectNegative
! Synonym for \"-export-dynamic\" for linker versions that support it.
! 
! read_only_relocs
! Driver RejectNegative Separate
! -read_only_relocs <treatment>	This will allow relocs in read-only pages (not advisable).
! 
! sectalign
! Driver RejectNegative Separate Args(3)
! -sectalign <segname> <sectname> <value>	Set section \"sectname\" in segment \"segname\" to have alignment \"value\" which must be an integral power of two expressed in hexadecimal form.
! 
! sectcreate
! Driver RejectNegative Separate Args(3)
! -sectcreate <segname> <sectname> <file>	Create section \"sectname\" in segment \"segname\" from the contents of \"file\".
! 
! sectobjectsymbols
! Driver RejectNegative Separate Args(2)
! (Obsolete) -sectobjectsymbols <segname> <sectname>	Setting a local symbol at the start of a section is no longer supported.
! 
! sectorder
! Driver RejectNegative Separate Args(3)
! (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
! Driver RejectNegative Separate
! 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.
! segcreate
! Driver RejectNegative Separate Args(3)
! (Obsolete, ld_classic only) -sectcreate segname sectname file
  
  seglinkedit
! Driver RejectNegative Negative(noseglinkedit)
! (Obsolete) Object files with LINKEDIT sections are no longer supported.
! 
! segprot
! Driver RejectNegative Separate Args(3)
! -segprot <segname> max_prot init_prot	The protection values are \"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 	Allows specifying the address of the read only portion of a dylib.
  
  segs_read_write_addr
! Driver RejectNegative Separate Alias(Zsegs_read_write_addr)
! -segs_read_write_addr address 	Allows specifying the address of the read/write portion of a dylib.
  
  single_module
! Driver RejectNegative Alias(Zsingle_module)
! (Obsolete)	This is the default.
! 
! sub_library
! Driver RejectNegative Separate
! -sub_library <name>	Library named \"name\" will be re-exported (only useful for dylibs).
! 
! sub_umbrella
! Driver RejectNegative Separate
! -sub_umbrella <name>	Framework named \"name\" will be re-exported (only useful for dylibs).
  
  twolevel_namespace
! Driver RejectNegative
! This is the default
  
  twolevel_namespace_hints
! Driver RejectNegative
! Specifies content that can speed up dynamic loading when the binaries are unchanged.
  
  umbrella
! Driver RejectNegative Separate Alias(Zumbrella)
! -umbrella <framework>	The specified framework will be re-exported.
! 
! undefined
! Driver RejectNegative Separate
! -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>	Don't export 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
! Driver RejectNegative
! Logs the object files the linker loads
  
  whyload
! Driver RejectNegative
! Logs which symbol(s) caused an object to be loaded.
! 
! ;(Obsolete, ignored)	Strip symbols starting with "L", this is the default.
! X
! Driver RejectNegative
  
  y
! Driver RejectNegative Joined
! (Obsolete, ignored)	Old support similar to whyload.
  
  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
*************** Driver Separate
*** 343,404 ****
  Zweak_reference_mismatches
  Driver Separate
  
- client_name
- Driver Separate
- 
- compatibility_version
- Driver Separate
- 
- current_version
- Driver Separate
- 
- dylinker_install_name
- Driver Separate
- 
- pagezero_size
- Driver Separate
- 
- read_only_relocs
- Driver Separate
- 
- sectalign
- Driver Separate Args(3)
- 
- sectcreate
- Driver Separate Args(3)
- 
- sectobjectsymbols
- Driver Separate Args(2)
- 
- sectorder
- Driver Separate Args(3)
- 
- seg1addr
- Driver Separate
- 
- segcreate
- Driver Separate Args(3)
- 
- segprot
- Driver Separate Args(3)
- 
- segs_read_only_addr
- Driver Separate
- 
- segs_read_write_addr
- Driver Separate
- 
- sub_library
- Driver Separate
- 
- sub_umbrella
- Driver Separate
- 
- ; Certain aspects of code-gen may be improved / adjusted if the version of ld64
- ; is sufficiently modern.
- mtarget-linker
- Target RejectNegative Joined Separate Report Var(darwin_target_linker) Init(LD64_VERSION)
- The version of ld64 in use for this toolchain.
- 
- undefined
- Driver Separate
--- 485,487 ----
diff -Nrcpad gcc-8.3.0/gcc/config/darwin10.h gcc-8.4.0/gcc/config/darwin10.h
*** gcc-8.3.0/gcc/config/darwin10.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/darwin10.h	Wed Mar  4 08:30:00 2020
*************** You should have received a copy of the G
*** 18,34 ****
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  
! /* Fix PR41260 by passing -no_compact_unwind on darwin10 and later until
!    unwinder in libSystem is fixed to digest new epilog unwinding notes.
  
-    Fix PR47558 by linking against libSystem ahead of libgcc_ext. */
  #undef  LINK_GCC_C_SEQUENCE_SPEC
  #define LINK_GCC_C_SEQUENCE_SPEC \
! "%:version-compare(>= 10.6 mmacosx-version-min= -no_compact_unwind) \
!    %{!static:%{!static-libgcc: \
!       %:version-compare(>= 10.6 mmacosx-version-min= -lSystem) } } \
!    %{fno-pic|fno-PIC|fno-pie|fno-PIE|fapple-kext|mkernel|static|mdynamic-no-pic: \
!       %:version-compare(>= 10.7 mmacosx-version-min= -no_pie) } %G %L"
  
  #undef DEF_MIN_OSX_VERSION
  #define DEF_MIN_OSX_VERSION "10.6"
--- 18,30 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  
! /* Fix PR47558 by linking against libSystem ahead of libgcc_ext. */
  
  #undef  LINK_GCC_C_SEQUENCE_SPEC
  #define LINK_GCC_C_SEQUENCE_SPEC \
! "%{!static:%{!static-libgcc: \
!    %:version-compare(>= 10.6 mmacosx-version-min= -lSystem) } } \
!  %G %L"
  
  #undef DEF_MIN_OSX_VERSION
  #define DEF_MIN_OSX_VERSION "10.6"
diff -Nrcpad gcc-8.3.0/gcc/config/darwin9.h gcc-8.4.0/gcc/config/darwin9.h
*** gcc-8.3.0/gcc/config/darwin9.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/darwin9.h	Wed Mar  4 08:30:00 2020
*************** along with GCC; see the file COPYING3.
*** 35,46 ****
  /* Tell collect2 to run dsymutil for us as necessary.  */
  #define COLLECT_RUN_DSYMUTIL 1
  
- #undef DARWIN_PIE_SPEC
- #define DARWIN_PIE_SPEC \
-   "%{fpie|pie|fPIE: \
-      %{mdynamic-no-pic: %n'-mdynamic-no-pic' overrides '-pie', '-fpie' or '-fPIE'; \
-       :-pie}}"
- 
  /* Only ask as for debug data if the debug style is stabs (since as doesn't
     yet generate dwarf.)  */
  
--- 35,40 ----
diff -Nrcpad gcc-8.3.0/gcc/config/i386/avx2intrin.h gcc-8.4.0/gcc/config/i386/avx2intrin.h
*** gcc-8.3.0/gcc/config/i386/avx2intrin.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/i386/avx2intrin.h	Wed Mar  4 08:30:00 2020
*************** extern __inline __m256i
*** 258,264 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_cmpgt_epi8 (__m256i __A, __m256i __B)
  {
!   return (__m256i) ((__v32qi)__A > (__v32qi)__B);
  }
  
  extern __inline __m256i
--- 258,264 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_cmpgt_epi8 (__m256i __A, __m256i __B)
  {
!   return (__m256i) ((__v32qs)__A > (__v32qs)__B);
  }
  
  extern __inline __m256i
diff -Nrcpad gcc-8.3.0/gcc/config/i386/avx512bitalgintrin.h gcc-8.4.0/gcc/config/i386/avx512bitalgintrin.h
*** gcc-8.3.0/gcc/config/i386/avx512bitalgintrin.h	Wed Jul 11 21:02:54 2018
--- gcc-8.4.0/gcc/config/i386/avx512bitalgintrin.h	Wed Mar  4 08:30:00 2020
*************** _mm512_popcnt_epi16 (__m512i __A)
*** 61,70 ****
  
  extern __inline __m512i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_popcnt_epi8 (__m512i __A, __mmask64 __U, __m512i __B)
  {
    return (__m512i) __builtin_ia32_vpopcountb_v64qi_mask ((__v64qi) __A,
! 							 (__v64qi) __B,
  							 (__mmask64) __U);
  }
  
--- 61,70 ----
  
  extern __inline __m512i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_popcnt_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
  {
    return (__m512i) __builtin_ia32_vpopcountb_v64qi_mask ((__v64qi) __A,
! 							 (__v64qi) __W,
  							 (__mmask64) __U);
  }
  
*************** _mm512_maskz_popcnt_epi8 (__mmask64 __U,
*** 79,88 ****
  }
  extern __inline __m512i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_popcnt_epi16 (__m512i __A, __mmask32 __U, __m512i __B)
  {
    return (__m512i) __builtin_ia32_vpopcountw_v32hi_mask ((__v32hi) __A,
! 							(__v32hi) __B,
  							(__mmask32) __U);
  }
  
--- 79,88 ----
  }
  extern __inline __m512i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_popcnt_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
  {
    return (__m512i) __builtin_ia32_vpopcountw_v32hi_mask ((__v32hi) __A,
! 							(__v32hi) __W,
  							(__mmask32) __U);
  }
  
*************** _mm512_mask_bitshuffle_epi64_mask (__mma
*** 127,136 ****
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_popcnt_epi8 (__m256i __A, __mmask32 __U, __m256i __B)
  {
    return (__m256i) __builtin_ia32_vpopcountb_v32qi_mask ((__v32qi) __A,
! 							 (__v32qi) __B,
  							 (__mmask32) __U);
  }
  
--- 127,136 ----
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_popcnt_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
  {
    return (__m256i) __builtin_ia32_vpopcountb_v32qi_mask ((__v32qi) __A,
! 							 (__v32qi) __W,
  							 (__mmask32) __U);
  }
  
*************** _mm_popcnt_epi16 (__m128i __A)
*** 222,231 ****
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_popcnt_epi16 (__m256i __A, __mmask16 __U, __m256i __B)
  {
    return (__m256i) __builtin_ia32_vpopcountw_v16hi_mask ((__v16hi) __A,
! 							(__v16hi) __B,
  							(__mmask16) __U);
  }
  
--- 222,231 ----
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_popcnt_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
  {
    return (__m256i) __builtin_ia32_vpopcountw_v16hi_mask ((__v16hi) __A,
! 							(__v16hi) __W,
  							(__mmask16) __U);
  }
  
*************** _mm256_maskz_popcnt_epi16 (__mmask16 __U
*** 241,250 ****
  
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_popcnt_epi8 (__m128i __A, __mmask16 __U, __m128i __B)
  {
    return (__m128i) __builtin_ia32_vpopcountb_v16qi_mask ((__v16qi) __A,
! 							 (__v16qi) __B,
  							 (__mmask16) __U);
  }
  
--- 241,250 ----
  
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_popcnt_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
  {
    return (__m128i) __builtin_ia32_vpopcountb_v16qi_mask ((__v16qi) __A,
! 							 (__v16qi) __W,
  							 (__mmask16) __U);
  }
  
*************** _mm_maskz_popcnt_epi8 (__mmask16 __U, __
*** 259,268 ****
  }
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_popcnt_epi16 (__m128i __A, __mmask8 __U, __m128i __B)
  {
    return (__m128i) __builtin_ia32_vpopcountw_v8hi_mask ((__v8hi) __A,
! 							(__v8hi) __B,
  							(__mmask8) __U);
  }
  
--- 259,268 ----
  }
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_popcnt_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
  {
    return (__m128i) __builtin_ia32_vpopcountw_v8hi_mask ((__v8hi) __A,
! 							(__v8hi) __W,
  							(__mmask8) __U);
  }
  
diff -Nrcpad gcc-8.3.0/gcc/config/i386/avx512vbmi2intrin.h gcc-8.4.0/gcc/config/i386/avx512vbmi2intrin.h
*** gcc-8.3.0/gcc/config/i386/avx512vbmi2intrin.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/i386/avx512vbmi2intrin.h	Wed Mar  4 08:30:00 2020
*************** _mm512_maskz_shldi_epi64 (__mmask8 __A,
*** 151,200 ****
  #else
  #define _mm512_shrdi_epi16(A, B, C) \
    ((__m512i) __builtin_ia32_vpshrd_v32hi ((__v32hi)(__m512i)(A), \
! 						(__v32hi)(__m512i)(B),(int)(C))
  #define _mm512_shrdi_epi32(A, B, C) \
    ((__m512i) __builtin_ia32_vpshrd_v16si ((__v16si)(__m512i)(A), \
! 	(__v16si)(__m512i)(B),(int)(C))
  #define _mm512_mask_shrdi_epi32(A, B, C, D, E) \
    ((__m512i) __builtin_ia32_vpshrd_v16si_mask ((__v16si)(__m512i)(C), \
! 	(__v16si)(__m512i)(D), (int)(E), (__v16si)(__m512i)(A),(__mmask16)(B))
  #define _mm512_maskz_shrdi_epi32(A, B, C, D) \
!   ((__m512i) __builtin_ia32_vpshrd_v16si_mask ((__v16si)(__m512i)(B), \
! 	(__v16si)(__m512i)(C),(int)(D), \
! 	(__v16si)(__m512i)_mm512_setzero_si512 (), (__mmask16)(A))
  #define _mm512_shrdi_epi64(A, B, C) \
    ((__m512i) __builtin_ia32_vpshrd_v8di ((__v8di)(__m512i)(A), \
! 	(__v8di)(__m512i)(B),(int)(C))
  #define _mm512_mask_shrdi_epi64(A, B, C, D, E) \
    ((__m512i) __builtin_ia32_vpshrd_v8di_mask ((__v8di)(__m512i)(C), \
! 	(__v8di)(__m512i)(D), (int)(E), (__v8di)(__m512i)(A),(__mmask8)(B))
  #define _mm512_maskz_shrdi_epi64(A, B, C, D) \
!   ((__m512i) __builtin_ia32_vpshrd_v8di_mask ((__v8di)(__m512i)(B), \
! 	(__v8di)(__m512i)(C),(int)(D), \
! 	(__v8di)(__m512i)_mm512_setzero_si512 (), (__mmask8)(A))
  #define _mm512_shldi_epi16(A, B, C) \
    ((__m512i) __builtin_ia32_vpshld_v32hi ((__v32hi)(__m512i)(A), \
! 						(__v32hi)(__m512i)(B),(int)(C))
  #define _mm512_shldi_epi32(A, B, C) \
!   ((__m512i) __builtin_ia32_vpshld_v16si ((__v16si)(__m512i)(A), 	\
! 				(__v16si)(__m512i)(B),(int)(C))
  #define _mm512_mask_shldi_epi32(A, B, C, D, E) \
    ((__m512i) __builtin_ia32_vpshld_v16si_mask ((__v16si)(__m512i)(C), \
! 	(__v16si)(__m512i)(D), (int)(E), (__v16si)(__m512i)(A),(__mmask16)(B))
  #define _mm512_maskz_shldi_epi32(A, B, C, D) \
!   ((__m512i) __builtin_ia32_vpshld_v16si_mask ((__v16si)(__m512i)(B), \
! 	(__v16si)(__m512i)(C),(int)(D), \
! 	(__v16si)(__m512i)_mm512_setzero_si512 (), (__mmask16)(A))
  #define _mm512_shldi_epi64(A, B, C) \
    ((__m512i) __builtin_ia32_vpshld_v8di ((__v8di)(__m512i)(A), \
! 	(__v8di)(__m512i)(B),(int)(C))
  #define _mm512_mask_shldi_epi64(A, B, C, D, E) \
    ((__m512i) __builtin_ia32_vpshld_v8di_mask ((__v8di)(__m512i)(C), \
! 	(__v8di)(__m512i)(D), (int)(E), (__v8di)(__m512i)(A),(__mmask8)(B))
  #define _mm512_maskz_shldi_epi64(A, B, C, D) \
!   ((__m512i) __builtin_ia32_vpshld_v8di_mask ((__v8di)(__m512i)(B), \
! 	(__v8di)(__m512i)(C),(int)(D), \
! 	(__v8di)(__m512i)_mm512_setzero_si512 (), (__mmask8)(A))
  #endif
  
  extern __inline __m512i
--- 151,218 ----
  #else
  #define _mm512_shrdi_epi16(A, B, C) \
    ((__m512i) __builtin_ia32_vpshrd_v32hi ((__v32hi)(__m512i)(A), \
! 					  (__v32hi)(__m512i)(B),(int)(C)))
  #define _mm512_shrdi_epi32(A, B, C) \
    ((__m512i) __builtin_ia32_vpshrd_v16si ((__v16si)(__m512i)(A), \
! 					  (__v16si)(__m512i)(B),(int)(C)))
  #define _mm512_mask_shrdi_epi32(A, B, C, D, E) \
    ((__m512i) __builtin_ia32_vpshrd_v16si_mask ((__v16si)(__m512i)(C), \
! 					       (__v16si)(__m512i)(D), \
! 					       (int)(E),		\
! 					       (__v16si)(__m512i)(A),	\
! 					       (__mmask16)(B)))
  #define _mm512_maskz_shrdi_epi32(A, B, C, D) \
!   ((__m512i) \
!    __builtin_ia32_vpshrd_v16si_mask ((__v16si)(__m512i)(B),		\
! 				     (__v16si)(__m512i)(C),(int)(D),	\
! 				     (__v16si)(__m512i)_mm512_setzero_si512 (), \
! 				     (__mmask16)(A)))
  #define _mm512_shrdi_epi64(A, B, C) \
    ((__m512i) __builtin_ia32_vpshrd_v8di ((__v8di)(__m512i)(A), \
! 					 (__v8di)(__m512i)(B),(int)(C)))
  #define _mm512_mask_shrdi_epi64(A, B, C, D, E) \
    ((__m512i) __builtin_ia32_vpshrd_v8di_mask ((__v8di)(__m512i)(C), \
! 					      (__v8di)(__m512i)(D), (int)(E), \
! 					      (__v8di)(__m512i)(A), \
! 					      (__mmask8)(B)))
  #define _mm512_maskz_shrdi_epi64(A, B, C, D) \
!   ((__m512i) \
!    __builtin_ia32_vpshrd_v8di_mask ((__v8di)(__m512i)(B),		\
! 				    (__v8di)(__m512i)(C),(int)(D),	\
! 				    (__v8di)(__m512i)_mm512_setzero_si512 (), \
! 				    (__mmask8)(A)))
  #define _mm512_shldi_epi16(A, B, C) \
    ((__m512i) __builtin_ia32_vpshld_v32hi ((__v32hi)(__m512i)(A), \
! 					  (__v32hi)(__m512i)(B),(int)(C)))
  #define _mm512_shldi_epi32(A, B, C) \
!   ((__m512i) __builtin_ia32_vpshld_v16si ((__v16si)(__m512i)(A),	\
! 					  (__v16si)(__m512i)(B),(int)(C)))
  #define _mm512_mask_shldi_epi32(A, B, C, D, E) \
    ((__m512i) __builtin_ia32_vpshld_v16si_mask ((__v16si)(__m512i)(C), \
! 					       (__v16si)(__m512i)(D), \
! 					       (int)(E),		\
! 					       (__v16si)(__m512i)(A), \
! 					       (__mmask16)(B)))
  #define _mm512_maskz_shldi_epi32(A, B, C, D) \
!   ((__m512i) \
!    __builtin_ia32_vpshld_v16si_mask ((__v16si)(__m512i)(B),		\
! 				     (__v16si)(__m512i)(C),(int)(D),	\
! 				     (__v16si)(__m512i)_mm512_setzero_si512 (), \
! 				     (__mmask16)(A)))
  #define _mm512_shldi_epi64(A, B, C) \
    ((__m512i) __builtin_ia32_vpshld_v8di ((__v8di)(__m512i)(A), \
! 					 (__v8di)(__m512i)(B), (int)(C)))
  #define _mm512_mask_shldi_epi64(A, B, C, D, E) \
    ((__m512i) __builtin_ia32_vpshld_v8di_mask ((__v8di)(__m512i)(C), \
! 					      (__v8di)(__m512i)(D), (int)(E), \
! 					      (__v8di)(__m512i)(A), \
! 					      (__mmask8)(B)))
  #define _mm512_maskz_shldi_epi64(A, B, C, D) \
!   ((__m512i) \
!    __builtin_ia32_vpshld_v8di_mask ((__v8di)(__m512i)(B),		\
! 				    (__v8di)(__m512i)(C),(int)(D),	\
! 				    (__v8di)(__m512i)_mm512_setzero_si512 (), \
! 				    (__mmask8)(A)))
  #endif
  
  extern __inline __m512i
*************** _mm512_maskz_shldi_epi16 (__mmask32 __A,
*** 474,491 ****
  #else
  #define _mm512_mask_shrdi_epi16(A, B, C, D, E) \
    ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(C), \
! 	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))
  #define _mm512_maskz_shrdi_epi16(A, B, C, D) \
!   ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(B), \
! 	(__v32hi)(__m512i)(C),(int)(D), \
! 	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))
  #define _mm512_mask_shldi_epi16(A, B, C, D, E) \
    ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(C), \
! 	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))
  #define _mm512_maskz_shldi_epi16(A, B, C, D) \
!   ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(B),   \
! 	(__v32hi)(__m512i)(C),(int)(D), 				\
! 	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))
  #endif
  
  extern __inline __m512i
--- 492,519 ----
  #else
  #define _mm512_mask_shrdi_epi16(A, B, C, D, E) \
    ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(C), \
! 					       (__v32hi)(__m512i)(D), \
! 					       (int)(E),		\
! 					       (__v32hi)(__m512i)(A),	\
! 					       (__mmask32)(B)))
  #define _mm512_maskz_shrdi_epi16(A, B, C, D) \
!   ((__m512i) \
!    __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(B),		\
! 				     (__v32hi)(__m512i)(C),(int)(D),	\
! 				     (__v32hi)(__m512i)_mm512_setzero_si512 (), \
! 				     (__mmask32)(A)))
  #define _mm512_mask_shldi_epi16(A, B, C, D, E) \
    ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(C), \
! 					       (__v32hi)(__m512i)(D), \
! 					       (int)(E), \
! 					       (__v32hi)(__m512i)(A),	\
! 					       (__mmask32)(B)))
  #define _mm512_maskz_shldi_epi16(A, B, C, D) \
!   ((__m512i) \
!    __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(B),		\
! 				     (__v32hi)(__m512i)(C),(int)(D),	\
! 				     (__v32hi)(__m512i)_mm512_setzero_si512 (), \
! 				     (__mmask32)(A)))
  #endif
  
  extern __inline __m512i
diff -Nrcpad gcc-8.3.0/gcc/config/i386/avx512vbmi2vlintrin.h gcc-8.4.0/gcc/config/i386/avx512vbmi2vlintrin.h
*** gcc-8.3.0/gcc/config/i386/avx512vbmi2vlintrin.h	Wed Jul 11 21:02:54 2018
--- gcc-8.4.0/gcc/config/i386/avx512vbmi2vlintrin.h	Wed Mar  4 08:30:00 2020
*************** _mm_shldi_epi64 (__m128i __A, __m128i __
*** 498,621 ****
  #else
  #define _mm256_shrdi_epi16(A, B, C) \
    ((__m256i) __builtin_ia32_vpshrd_v16hi ((__v16hi)(__m256i)(A), \
! 	(__v16hi)(__m256i)(B),(int)(C))
  #define _mm256_mask_shrdi_epi16(A, B, C, D, E) \
    ((__m256i) __builtin_ia32_vpshrd_v16hi_mask ((__v16hi)(__m256i)(C), \
! 	(__v16hi)(__m256i)(D), (int)(E), (__v16hi)(__m256i)(A),(__mmask16)(B))
  #define _mm256_maskz_shrdi_epi16(A, B, C, D) \
!   ((__m256i) __builtin_ia32_vpshrd_v16hi_mask ((__v16hi)(__m256i)(B), \
! 	(__v16hi)(__m256i)(C),(int)(D), \
! 	(__v16hi)(__m256i)_mm256_setzero_si256 (), (__mmask16)(A))
  #define _mm256_shrdi_epi32(A, B, C) \
    ((__m256i) __builtin_ia32_vpshrd_v8si ((__v8si)(__m256i)(A), \
! 	(__v8si)(__m256i)(B),(int)(C))
  #define _mm256_mask_shrdi_epi32(A, B, C, D, E) \
    ((__m256i) __builtin_ia32_vpshrd_v8si_mask ((__v8si)(__m256i)(C), \
! 	(__v8si)(__m256i)(D), (int)(E), (__v8si)(__m256i)(A),(__mmask8)(B))
  #define _mm256_maskz_shrdi_epi32(A, B, C, D) \
!   ((__m256i) __builtin_ia32_vpshrd_v8si_mask ((__v8si)(__m256i)(B), \
! 	(__v8si)(__m256i)(C),(int)(D), \
! 	(__v8si)(__m256i)_mm256_setzero_si256 (), (__mmask8)(A))
  #define _mm256_shrdi_epi64(A, B, C) \
    ((__m256i) __builtin_ia32_vpshrd_v4di ((__v4di)(__m256i)(A), \
! 	(__v4di)(__m256i)(B),(int)(C))
  #define _mm256_mask_shrdi_epi64(A, B, C, D, E) \
    ((__m256i) __builtin_ia32_vpshrd_v4di_mask ((__v4di)(__m256i)(C), \
! 	(__v4di)(__m256i)(D), (int)(E), (__v4di)(__m256i)(A),(__mmask8)(B))
  #define _mm256_maskz_shrdi_epi64(A, B, C, D) \
!   ((__m256i) __builtin_ia32_vpshrd_v4di_mask ((__v4di)(__m256i)(B), \
! 	(__v4di)(__m256i)(C),(int)(D), \
! 	(__v4di)(__m256i)_mm256_setzero_si256 (), (__mmask8)(A))
  #define _mm_shrdi_epi16(A, B, C) \
    ((__m128i) __builtin_ia32_vpshrd_v8hi ((__v8hi)(__m128i)(A), \
! 	(__v8hi)(__m128i)(B),(int)(C))
  #define _mm_mask_shrdi_epi16(A, B, C, D, E) \
    ((__m128i) __builtin_ia32_vpshrd_v8hi_mask ((__v8hi)(__m128i)(C), \
! 	(__v8hi)(__m128i)(D), (int)(E), (__v8hi)(__m128i)(A),(__mmask8)(B))
  #define _mm_maskz_shrdi_epi16(A, B, C, D) \
!   ((__m128i) __builtin_ia32_vpshrd_v8hi_mask ((__v8hi)(__m128i)(B), \
! 	(__v8hi)(__m128i)(C),(int)(D), \
! 	(__v8hi)(__m128i)_mm_setzero_si128 (), (__mmask8)(A))
  #define _mm_shrdi_epi32(A, B, C) \
    ((__m128i) __builtin_ia32_vpshrd_v4si ((__v4si)(__m128i)(A), \
! 	(__v4si)(__m128i)(B),(int)(C))
  #define _mm_mask_shrdi_epi32(A, B, C, D, E) \
!   ((__m128i) __builtin_ia32_vpshrd_v4si_mask ((__v4si)(__m128i)(C), \
! 	(__v4si)(__m128i)(D), (int)(E), (__v4si)(__m128i)(A),(__mmask8)(B))
  #define _mm_maskz_shrdi_epi32(A, B, C, D) \
!   ((__m128i) __builtin_ia32_vpshrd_v4si_mask ((__v4si)(__m128i)(B), \
! 	(__v4si)(__m128i)(C),(int)(D), \
! 	(__v4si)(__m128i)_mm_setzero_si128 (), (__mmask8)(A))
  #define _mm_shrdi_epi64(A, B, C) \
    ((__m128i) __builtin_ia32_vpshrd_v2di ((__v2di)(__m128i)(A), \
! 	(__v2di)(__m128i)(B),(int)(C))
  #define _mm_mask_shrdi_epi64(A, B, C, D, E) \
    ((__m128i) __builtin_ia32_vpshrd_v2di_mask ((__v2di)(__m128i)(C), \
! 	(__v2di)(__m128i)(D), (int)(E), (__v2di)(__m128i)(A),(__mmask8)(B))
  #define _mm_maskz_shrdi_epi64(A, B, C, D) \
!   ((__m128i) __builtin_ia32_vpshrd_v2di_mask ((__v2di)(__m128i)(B), \
! 	(__v2di)(__m128i)(C),(int)(D), \
! 	(__v2di)(__m128i)_mm_setzero_si128 (), (__mmask8)(A))
  #define _mm256_shldi_epi16(A, B, C) \
    ((__m256i) __builtin_ia32_vpshld_v16hi ((__v16hi)(__m256i)(A), \
! 						(__v16hi)(__m256i)(B),(int)(C))
  #define _mm256_mask_shldi_epi16(A, B, C, D, E) \
    ((__m256i) __builtin_ia32_vpshld_v16hi_mask ((__v16hi)(__m256i)(C), \
! 	(__v16hi)(__m256i)(D), (int)(E), (__v16hi)(__m256i)(A),(__mmask16)(B))
  #define _mm256_maskz_shldi_epi16(A, B, C, D) \
!   ((__m256i) __builtin_ia32_vpshld_v16hi_mask ((__v16hi)(__m256i)(B), \
! 	(__v16hi)(__m256i)(C),(int)(D), \
! 	(__v16hi)(__m256i)_mm256_setzero_si256 (), (__mmask16)(A))
  #define _mm256_shldi_epi32(A, B, C) \
    ((__m256i) __builtin_ia32_vpshld_v8si ((__v8si)(__m256i)(A), \
! 	(__v8si)(__m256i)(B),(int)(C))
  #define _mm256_mask_shldi_epi32(A, B, C, D, E) \
    ((__m256i) __builtin_ia32_vpshld_v8si_mask ((__v8si)(__m256i)(C), \
! 	(__v8si)(__m256i)(D), (int)(E), (__v8si)(__m256i)(A),(__mmask8)(B))
  #define _mm256_maskz_shldi_epi32(A, B, C, D) \
!   ((__m256i) __builtin_ia32_vpshld_v8si_mask ((__v8si)(__m256i)(B), \
! 	(__v8si)(__m256i)(C),(int)(D), \
! 	(__v8si)(__m256i)_mm256_setzero_si256 (), (__mmask8)(A))
  #define _mm256_shldi_epi64(A, B, C) \
    ((__m256i) __builtin_ia32_vpshld_v4di ((__v4di)(__m256i)(A), \
! 	(__v4di)(__m256i)(B),(int)(C))
  #define _mm256_mask_shldi_epi64(A, B, C, D, E) \
    ((__m256i) __builtin_ia32_vpshld_v4di_mask ((__v4di)(__m256i)(C), \
! 	(__v4di)(__m256i)(D), (int)(E), (__v4di)(__m256i)(A),(__mmask8)(B))
  #define _mm256_maskz_shldi_epi64(A, B, C, D) \
!   ((__m256i) __builtin_ia32_vpshld_v4di_mask ((__v4di)(__m256i)(B), \
! 	(__v4di)(__m256i)(C),(int)(D), \
! 	(__v4di)(__m256i)_mm256_setzero_si256 (), (__mmask8)(A))
  #define _mm_shldi_epi16(A, B, C) \
    ((__m128i) __builtin_ia32_vpshld_v8hi ((__v8hi)(__m128i)(A), \
! 	(__v8hi)(__m128i)(B),(int)(C))
  #define _mm_mask_shldi_epi16(A, B, C, D, E) \
    ((__m128i) __builtin_ia32_vpshld_v8hi_mask ((__v8hi)(__m128i)(C), \
! 	(__v8hi)(__m128i)(D), (int)(E), (__v8hi)(__m128i)(A),(__mmask8)(B))
  #define _mm_maskz_shldi_epi16(A, B, C, D) \
!   ((__m128i) __builtin_ia32_vpshld_v8hi_mask ((__v8hi)(__m128i)(B), \
! 	(__v8hi)(__m128i)(C),(int)(D), \
! 	(__v8hi)(__m128i)_mm_setzero_si128 (), (__mmask8)(A))
  #define _mm_shldi_epi32(A, B, C) \
    ((__m128i) __builtin_ia32_vpshld_v4si ((__v4si)(__m128i)(A), \
! 	(__v4si)(__m128i)(B),(int)(C))
  #define _mm_mask_shldi_epi32(A, B, C, D, E) \
    ((__m128i) __builtin_ia32_vpshld_v4si_mask ((__v4si)(__m128i)(C), \
! 	(__v4si)(__m128i)(D), (int)(E), (__v4si)(__m128i)(A),(__mmask8)(B))
  #define _mm_maskz_shldi_epi32(A, B, C, D) \
!   ((__m128i) __builtin_ia32_vpshld_v4si_mask ((__v4si)(__m128i)(B), \
! 	(__v4si)(__m128i)(C),(int)(D), \
! 	(__v4si)(__m128i)_mm_setzero_si128 (), (__mmask8)(A))
  #define _mm_shldi_epi64(A, B, C) \
    ((__m128i) __builtin_ia32_vpshld_v2di ((__v2di)(__m128i)(A), \
! 	(__v2di)(__m128i)(B),(int)(C))
  #define _mm_mask_shldi_epi64(A, B, C, D, E) \
    ((__m128i) __builtin_ia32_vpshld_v2di_mask ((__v2di)(__m128i)(C), \
! 	(__v2di)(__m128i)(D), (int)(E), (__v2di)(__m128i)(A),(__mmask8)(B))
  #define _mm_maskz_shldi_epi64(A, B, C, D) \
!   ((__m128i) __builtin_ia32_vpshld_v2di_mask ((__v2di)(__m128i)(B), \
! 	(__v2di)(__m128i)(C),(int)(D), \
! 	(__v2di)(__m128i)_mm_setzero_si128 (), (__mmask8)(A))
  #endif
  
  extern __inline __m256i
--- 498,672 ----
  #else
  #define _mm256_shrdi_epi16(A, B, C) \
    ((__m256i) __builtin_ia32_vpshrd_v16hi ((__v16hi)(__m256i)(A), \
! 					  (__v16hi)(__m256i)(B),(int)(C)))
  #define _mm256_mask_shrdi_epi16(A, B, C, D, E) \
    ((__m256i) __builtin_ia32_vpshrd_v16hi_mask ((__v16hi)(__m256i)(C), \
! 					       (__v16hi)(__m256i)(D), \
! 					       (int)(E),		\
! 					       (__v16hi)(__m256i)(A), \
! 					       (__mmask16)(B)))
  #define _mm256_maskz_shrdi_epi16(A, B, C, D) \
!   ((__m256i) \
!    __builtin_ia32_vpshrd_v16hi_mask ((__v16hi)(__m256i)(B),		\
! 				     (__v16hi)(__m256i)(C),(int)(D),	\
! 				     (__v16hi)(__m256i)_mm256_setzero_si256 (), \
! 				     (__mmask16)(A)))
  #define _mm256_shrdi_epi32(A, B, C) \
    ((__m256i) __builtin_ia32_vpshrd_v8si ((__v8si)(__m256i)(A), \
! 					 (__v8si)(__m256i)(B),(int)(C)))
  #define _mm256_mask_shrdi_epi32(A, B, C, D, E) \
    ((__m256i) __builtin_ia32_vpshrd_v8si_mask ((__v8si)(__m256i)(C), \
! 					      (__v8si)(__m256i)(D), \
! 					      (int)(E), \
! 					      (__v8si)(__m256i)(A), \
! 					      (__mmask8)(B)))
  #define _mm256_maskz_shrdi_epi32(A, B, C, D) \
!   ((__m256i) \
!    __builtin_ia32_vpshrd_v8si_mask ((__v8si)(__m256i)(B),		\
! 				    (__v8si)(__m256i)(C),(int)(D),	\
! 				    (__v8si)(__m256i)_mm256_setzero_si256 (), \
! 				    (__mmask8)(A)))
  #define _mm256_shrdi_epi64(A, B, C) \
    ((__m256i) __builtin_ia32_vpshrd_v4di ((__v4di)(__m256i)(A), \
! 					 (__v4di)(__m256i)(B),(int)(C)))
  #define _mm256_mask_shrdi_epi64(A, B, C, D, E) \
    ((__m256i) __builtin_ia32_vpshrd_v4di_mask ((__v4di)(__m256i)(C), \
! 					      (__v4di)(__m256i)(D), (int)(E), \
! 					      (__v4di)(__m256i)(A), \
! 					      (__mmask8)(B)))
  #define _mm256_maskz_shrdi_epi64(A, B, C, D) \
!   ((__m256i) \
!    __builtin_ia32_vpshrd_v4di_mask ((__v4di)(__m256i)(B),		\
! 				    (__v4di)(__m256i)(C),(int)(D),	\
! 				    (__v4di)(__m256i)_mm256_setzero_si256 (), \
! 				    (__mmask8)(A)))
  #define _mm_shrdi_epi16(A, B, C) \
    ((__m128i) __builtin_ia32_vpshrd_v8hi ((__v8hi)(__m128i)(A), \
! 					 (__v8hi)(__m128i)(B),(int)(C)))
  #define _mm_mask_shrdi_epi16(A, B, C, D, E) \
    ((__m128i) __builtin_ia32_vpshrd_v8hi_mask ((__v8hi)(__m128i)(C), \
! 					      (__v8hi)(__m128i)(D), (int)(E), \
! 					      (__v8hi)(__m128i)(A), \
! 					      (__mmask8)(B)))
  #define _mm_maskz_shrdi_epi16(A, B, C, D) \
!   ((__m128i) \
!    __builtin_ia32_vpshrd_v8hi_mask ((__v8hi)(__m128i)(B),		\
! 				    (__v8hi)(__m128i)(C),(int)(D),	\
! 				    (__v8hi)(__m128i)_mm_setzero_si128 (), \
! 				    (__mmask8)(A)))
  #define _mm_shrdi_epi32(A, B, C) \
    ((__m128i) __builtin_ia32_vpshrd_v4si ((__v4si)(__m128i)(A), \
! 					 (__v4si)(__m128i)(B),(int)(C)))
  #define _mm_mask_shrdi_epi32(A, B, C, D, E) \
!   ((__m128i) __builtin_ia32_vpshrd_v4si_mask ((__v4si)(__m128i)(C),	\
! 					      (__v4si)(__m128i)(D), (int)(E), \
! 					      (__v4si)(__m128i)(A), \
! 					      (__mmask8)(B)))
  #define _mm_maskz_shrdi_epi32(A, B, C, D) \
!   ((__m128i) \
!    __builtin_ia32_vpshrd_v4si_mask ((__v4si)(__m128i)(B),		\
! 				    (__v4si)(__m128i)(C),(int)(D),	\
! 				    (__v4si)(__m128i)_mm_setzero_si128 (), \
! 				    (__mmask8)(A)))
  #define _mm_shrdi_epi64(A, B, C) \
    ((__m128i) __builtin_ia32_vpshrd_v2di ((__v2di)(__m128i)(A), \
! 					 (__v2di)(__m128i)(B),(int)(C)))
  #define _mm_mask_shrdi_epi64(A, B, C, D, E) \
    ((__m128i) __builtin_ia32_vpshrd_v2di_mask ((__v2di)(__m128i)(C), \
! 					      (__v2di)(__m128i)(D), (int)(E), \
! 					      (__v2di)(__m128i)(A), \
! 					      (__mmask8)(B)))
  #define _mm_maskz_shrdi_epi64(A, B, C, D) \
!   ((__m128i) \
!    __builtin_ia32_vpshrd_v2di_mask ((__v2di)(__m128i)(B),		\
! 				    (__v2di)(__m128i)(C),(int)(D),	\
! 				    (__v2di)(__m128i)_mm_setzero_si128 (), \
! 				    (__mmask8)(A)))
  #define _mm256_shldi_epi16(A, B, C) \
    ((__m256i) __builtin_ia32_vpshld_v16hi ((__v16hi)(__m256i)(A), \
! 					  (__v16hi)(__m256i)(B),(int)(C)))
  #define _mm256_mask_shldi_epi16(A, B, C, D, E) \
    ((__m256i) __builtin_ia32_vpshld_v16hi_mask ((__v16hi)(__m256i)(C), \
! 					       (__v16hi)(__m256i)(D), \
! 					       (int)(E),		\
! 					       (__v16hi)(__m256i)(A), \
! 					       (__mmask16)(B)))
  #define _mm256_maskz_shldi_epi16(A, B, C, D) \
!   ((__m256i) \
!    __builtin_ia32_vpshld_v16hi_mask ((__v16hi)(__m256i)(B),		\
! 				     (__v16hi)(__m256i)(C),(int)(D),	\
! 				     (__v16hi)(__m256i)_mm256_setzero_si256 (), \
! 				     (__mmask16)(A)))
  #define _mm256_shldi_epi32(A, B, C) \
    ((__m256i) __builtin_ia32_vpshld_v8si ((__v8si)(__m256i)(A), \
! 					 (__v8si)(__m256i)(B),(int)(C)))
  #define _mm256_mask_shldi_epi32(A, B, C, D, E) \
    ((__m256i) __builtin_ia32_vpshld_v8si_mask ((__v8si)(__m256i)(C), \
! 					      (__v8si)(__m256i)(D), (int)(E), \
! 					      (__v8si)(__m256i)(A), \
! 					      (__mmask8)(B)))
  #define _mm256_maskz_shldi_epi32(A, B, C, D) \
!   ((__m256i) \
!    __builtin_ia32_vpshld_v8si_mask ((__v8si)(__m256i)(B),		\
! 				    (__v8si)(__m256i)(C),(int)(D),	\
! 				    (__v8si)(__m256i)_mm256_setzero_si256 (), \
! 				    (__mmask8)(A)))
  #define _mm256_shldi_epi64(A, B, C) \
    ((__m256i) __builtin_ia32_vpshld_v4di ((__v4di)(__m256i)(A), \
! 					 (__v4di)(__m256i)(B),(int)(C)))
  #define _mm256_mask_shldi_epi64(A, B, C, D, E) \
    ((__m256i) __builtin_ia32_vpshld_v4di_mask ((__v4di)(__m256i)(C), \
! 					      (__v4di)(__m256i)(D), (int)(E), \
! 					      (__v4di)(__m256i)(A), \
! 					      (__mmask8)(B)))
  #define _mm256_maskz_shldi_epi64(A, B, C, D) \
!   ((__m256i) \
!    __builtin_ia32_vpshld_v4di_mask ((__v4di)(__m256i)(B),		\
! 				    (__v4di)(__m256i)(C),(int)(D),	\
! 				    (__v4di)(__m256i)_mm256_setzero_si256 (), \
! 				    (__mmask8)(A)))
  #define _mm_shldi_epi16(A, B, C) \
    ((__m128i) __builtin_ia32_vpshld_v8hi ((__v8hi)(__m128i)(A), \
! 					 (__v8hi)(__m128i)(B),(int)(C)))
  #define _mm_mask_shldi_epi16(A, B, C, D, E) \
    ((__m128i) __builtin_ia32_vpshld_v8hi_mask ((__v8hi)(__m128i)(C), \
! 					      (__v8hi)(__m128i)(D), (int)(E), \
! 					      (__v8hi)(__m128i)(A), \
! 					      (__mmask8)(B)))
  #define _mm_maskz_shldi_epi16(A, B, C, D) \
!   ((__m128i) \
!    __builtin_ia32_vpshld_v8hi_mask ((__v8hi)(__m128i)(B),		\
! 				    (__v8hi)(__m128i)(C),(int)(D),	\
! 				    (__v8hi)(__m128i)_mm_setzero_si128 (), \
! 				    (__mmask8)(A)))
  #define _mm_shldi_epi32(A, B, C) \
    ((__m128i) __builtin_ia32_vpshld_v4si ((__v4si)(__m128i)(A), \
! 					 (__v4si)(__m128i)(B),(int)(C)))
  #define _mm_mask_shldi_epi32(A, B, C, D, E) \
    ((__m128i) __builtin_ia32_vpshld_v4si_mask ((__v4si)(__m128i)(C), \
! 					      (__v4si)(__m128i)(D), (int)(E), \
! 					      (__v4si)(__m128i)(A), \
! 					      (__mmask8)(B)))
  #define _mm_maskz_shldi_epi32(A, B, C, D) \
!   ((__m128i) \
!    __builtin_ia32_vpshld_v4si_mask ((__v4si)(__m128i)(B),		\
! 				    (__v4si)(__m128i)(C),(int)(D),	\
! 				    (__v4si)(__m128i)_mm_setzero_si128 (), \
! 				    (__mmask8)(A)))
  #define _mm_shldi_epi64(A, B, C) \
    ((__m128i) __builtin_ia32_vpshld_v2di ((__v2di)(__m128i)(A), \
! 					 (__v2di)(__m128i)(B),(int)(C)))
  #define _mm_mask_shldi_epi64(A, B, C, D, E) \
    ((__m128i) __builtin_ia32_vpshld_v2di_mask ((__v2di)(__m128i)(C), \
! 					      (__v2di)(__m128i)(D), (int)(E), \
! 					      (__v2di)(__m128i)(A), \
! 					      (__mmask8)(B)))
  #define _mm_maskz_shldi_epi64(A, B, C, D) \
!   ((__m128i) \
!    __builtin_ia32_vpshld_v2di_mask ((__v2di)(__m128i)(B),		\
! 				    (__v2di)(__m128i)(C),(int)(D),	\
! 				    (__v2di)(__m128i)_mm_setzero_si128 (), \
! 				    (__mmask8)(A)))
  #endif
  
  extern __inline __m256i
diff -Nrcpad gcc-8.3.0/gcc/config/i386/avx512vpopcntdqintrin.h gcc-8.4.0/gcc/config/i386/avx512vpopcntdqintrin.h
*** gcc-8.3.0/gcc/config/i386/avx512vpopcntdqintrin.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/i386/avx512vpopcntdqintrin.h	Wed Mar  4 08:30:00 2020
*************** _mm512_popcnt_epi32 (__m512i __A)
*** 43,52 ****
  
  extern __inline __m512i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_popcnt_epi32 (__m512i __A, __mmask16 __U, __m512i __B)
  {
    return (__m512i) __builtin_ia32_vpopcountd_v16si_mask ((__v16si) __A,
! 							 (__v16si) __B,
  							 (__mmask16) __U);
  }
  
--- 43,52 ----
  
  extern __inline __m512i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_popcnt_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
  {
    return (__m512i) __builtin_ia32_vpopcountd_v16si_mask ((__v16si) __A,
! 							 (__v16si) __W,
  							 (__mmask16) __U);
  }
  
*************** _mm512_popcnt_epi64 (__m512i __A)
*** 69,78 ****
  
  extern __inline __m512i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_popcnt_epi64 (__m512i __A, __mmask8 __U, __m512i __B)
  {
    return (__m512i) __builtin_ia32_vpopcountq_v8di_mask ((__v8di) __A,
! 							(__v8di) __B,
  							(__mmask8) __U);
  }
  
--- 69,78 ----
  
  extern __inline __m512i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_popcnt_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
  {
    return (__m512i) __builtin_ia32_vpopcountq_v8di_mask ((__v8di) __A,
! 							(__v8di) __W,
  							(__mmask8) __U);
  }
  
diff -Nrcpad gcc-8.3.0/gcc/config/i386/avx512vpopcntdqvlintrin.h gcc-8.4.0/gcc/config/i386/avx512vpopcntdqvlintrin.h
*** gcc-8.3.0/gcc/config/i386/avx512vpopcntdqvlintrin.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/i386/avx512vpopcntdqvlintrin.h	Wed Mar  4 08:30:00 2020
*************** _mm_popcnt_epi32 (__m128i __A)
*** 43,52 ****
  
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_popcnt_epi32 (__m128i __A, __mmask16 __U, __m128i __B)
  {
    return (__m128i) __builtin_ia32_vpopcountd_v4si_mask ((__v4si) __A,
! 							 (__v4si) __B,
  							 (__mmask16) __U);
  }
  
--- 43,52 ----
  
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_popcnt_epi32 (__m128i __W, __mmask16 __U, __m128i __A)
  {
    return (__m128i) __builtin_ia32_vpopcountd_v4si_mask ((__v4si) __A,
! 							 (__v4si) __W,
  							 (__mmask16) __U);
  }
  
*************** _mm256_popcnt_epi32 (__m256i __A)
*** 69,78 ****
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_popcnt_epi32 (__m256i __A, __mmask16 __U, __m256i __B)
  {
    return (__m256i) __builtin_ia32_vpopcountd_v8si_mask ((__v8si) __A,
! 							 (__v8si) __B,
  							 (__mmask16) __U);
  }
  
--- 69,78 ----
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_popcnt_epi32 (__m256i __W, __mmask16 __U, __m256i __A)
  {
    return (__m256i) __builtin_ia32_vpopcountd_v8si_mask ((__v8si) __A,
! 							 (__v8si) __W,
  							 (__mmask16) __U);
  }
  
*************** _mm_popcnt_epi64 (__m128i __A)
*** 95,104 ****
  
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_popcnt_epi64 (__m128i __A, __mmask8 __U, __m128i __B)
  {
    return (__m128i) __builtin_ia32_vpopcountq_v2di_mask ((__v2di) __A,
! 							(__v2di) __B,
  							(__mmask8) __U);
  }
  
--- 95,104 ----
  
  extern __inline __m128i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_popcnt_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
  {
    return (__m128i) __builtin_ia32_vpopcountq_v2di_mask ((__v2di) __A,
! 							(__v2di) __W,
  							(__mmask8) __U);
  }
  
*************** _mm256_popcnt_epi64 (__m256i __A)
*** 121,130 ****
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_popcnt_epi64 (__m256i __A, __mmask8 __U, __m256i __B)
  {
    return (__m256i) __builtin_ia32_vpopcountq_v4di_mask ((__v4di) __A,
! 							(__v4di) __B,
  							(__mmask8) __U);
  }
  
--- 121,130 ----
  
  extern __inline __m256i
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_popcnt_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
  {
    return (__m256i) __builtin_ia32_vpopcountq_v4di_mask ((__v4di) __A,
! 							(__v4di) __W,
  							(__mmask8) __U);
  }
  
*************** _mm256_maskz_popcnt_epi64 (__mmask8 __U,
*** 144,147 ****
  #endif /* __DISABLE_AVX512VPOPCNTDQVL__ */
  
  #endif /* _AVX512VPOPCNTDQVLINTRIN_H_INCLUDED */
- 
--- 144,146 ----
diff -Nrcpad gcc-8.3.0/gcc/config/i386/avxintrin.h gcc-8.4.0/gcc/config/i386/avxintrin.h
*** gcc-8.3.0/gcc/config/i386/avxintrin.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/i386/avxintrin.h	Wed Mar  4 08:30:00 2020
*************** typedef unsigned int __v8su __attribute_
*** 47,52 ****
--- 47,53 ----
  typedef short __v16hi __attribute__ ((__vector_size__ (32)));
  typedef unsigned short __v16hu __attribute__ ((__vector_size__ (32)));
  typedef char __v32qi __attribute__ ((__vector_size__ (32)));
+ typedef signed char __v32qs __attribute__ ((__vector_size__ (32)));
  typedef unsigned char __v32qu __attribute__ ((__vector_size__ (32)));
  
  /* The Intel API is flexible enough that we must allow aliasing with other
diff -Nrcpad gcc-8.3.0/gcc/config/i386/cpuid.h gcc-8.4.0/gcc/config/i386/cpuid.h
*** gcc-8.3.0/gcc/config/i386/cpuid.h	Thu Apr 19 15:08:02 2018
--- gcc-8.4.0/gcc/config/i386/cpuid.h	Wed Mar  4 08:30:00 2020
***************
*** 178,187 ****
--- 178,204 ----
  #define signature_VORTEX_ecx	0x436f5320
  #define signature_VORTEX_edx	0x36387865
  
+ #ifndef __x86_64__
+ /* At least one cpu (Winchip 2) does not set %ebx and %ecx
+    for cpuid leaf 1. Forcibly zero the two registers before
+    calling cpuid as a precaution.  */
+ #define __cpuid(level, a, b, c, d)			\
+   do {							\
+     if (__builtin_constant_p (level) && (level) != 1)	\
+       __asm__ ("cpuid\n\t"				\
+ 	      : "=a" (a), "=b" (b), "=c" (c), "=d" (d)	\
+ 	      : "0" (level));				\
+     else						\
+       __asm__ ("cpuid\n\t"				\
+ 	      : "=a" (a), "=b" (b), "=c" (c), "=d" (d)	\
+ 	      : "0" (level), "1" (0), "2" (0));		\
+   } while (0)
+ #else
  #define __cpuid(level, a, b, c, d)			\
    __asm__ ("cpuid\n\t"					\
  	   : "=a" (a), "=b" (b), "=c" (c), "=d" (d)	\
  	   : "0" (level))
+ #endif
  
  #define __cpuid_count(level, count, a, b, c, d)		\
    __asm__ ("cpuid\n\t"					\
diff -Nrcpad gcc-8.3.0/gcc/config/i386/darwin.h gcc-8.4.0/gcc/config/i386/darwin.h
*** gcc-8.3.0/gcc/config/i386/darwin.h	Sun Dec 23 20:34:13 2018
--- gcc-8.4.0/gcc/config/i386/darwin.h	Wed Mar  4 08:30:00 2020
*************** along with GCC; see the file COPYING3.
*** 47,58 ****
     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)   \
--- 47,59 ----
     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)   \
*************** along with GCC; see the file COPYING3.
*** 88,101 ****
  #undef WCHAR_TYPE_SIZE
  #define WCHAR_TYPE_SIZE 32
  
! /* Generate branch islands stubs if this is true.  */
! extern int darwin_emit_branch_islands;
! 
! #undef TARGET_MACHO_BRANCH_ISLANDS
! #define TARGET_MACHO_BRANCH_ISLANDS darwin_emit_branch_islands
  
  /* For compatibility with OSX system tools, use the new style of pic stub
!    if this is set.  */
  #undef  MACHOPIC_ATT_STUB
  #define MACHOPIC_ATT_STUB (darwin_macho_att_stub)
  
--- 89,100 ----
  #undef WCHAR_TYPE_SIZE
  #define WCHAR_TYPE_SIZE 32
  
! /* Generate pic symbol indirection stubs if this is true.  */
! #undef TARGET_MACHO_SYMBOL_STUBS
! #define TARGET_MACHO_SYMBOL_STUBS (darwin_symbol_stubs)
  
  /* For compatibility with OSX system tools, use the new style of pic stub
!    if this is set (default).  */
  #undef  MACHOPIC_ATT_STUB
  #define MACHOPIC_ATT_STUB (darwin_macho_att_stub)
  
*************** extern int darwin_emit_branch_islands;
*** 130,136 ****
  #undef CC1_SPEC
  #define CC1_SPEC "%(cc1_cpu) \
    %{!mkernel:%{!static:%{!mdynamic-no-pic:-fPIC}}} \
!   %{g: %{!fno-eliminate-unused-debug-symbols: -feliminate-unused-debug-symbols }} " \
    DARWIN_CC1_SPEC
  
  #undef ASM_SPEC
--- 129,136 ----
  #undef CC1_SPEC
  #define CC1_SPEC "%(cc1_cpu) \
    %{!mkernel:%{!static:%{!mdynamic-no-pic:-fPIC}}} \
!   %{g: %{!fno-eliminate-unused-debug-symbols: -feliminate-unused-debug-symbols }} \
!   %{mx32:%eDarwin is not an mx32 platform}" \
    DARWIN_CC1_SPEC
  
  #undef ASM_SPEC
*************** extern int darwin_emit_branch_islands;
*** 138,146 ****
    " ASM_OPTIONS " -force_cpusubtype_ALL \
    %{static}" ASM_MMACOSX_VERSION_MIN_SPEC
  
- #define DARWIN_ARCH_SPEC "%{m64:x86_64;:i386}"
- #define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC
- 
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
    "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
--- 138,143 ----
*************** extern int darwin_emit_branch_islands;
*** 148,159 ****
     %{mpc64:crtprec64.o%s} \
     %{mpc80:crtprec80.o%s}" TM_DESTRUCTOR
  
  #undef SUBTARGET_EXTRA_SPECS
  #define SUBTARGET_EXTRA_SPECS                                   \
    DARWIN_EXTRA_SPECS                                            \
!   { "darwin_arch", DARWIN_ARCH_SPEC },                          \
    { "darwin_crt2", "" },                                        \
!   { "darwin_subarch", DARWIN_SUBARCH_SPEC },
  
  /* The Darwin assembler mostly follows AT&T syntax.  */
  #undef ASSEMBLER_DIALECT
--- 145,159 ----
     %{mpc64:crtprec64.o%s} \
     %{mpc80:crtprec80.o%s}" TM_DESTRUCTOR
  
+ /* We default to x86_64 for single-arch builds, bi-arch overrides.  */
+ #define DARWIN_ARCH_SPEC "x86_64"
+ 
  #undef SUBTARGET_EXTRA_SPECS
  #define SUBTARGET_EXTRA_SPECS                                   \
    DARWIN_EXTRA_SPECS                                            \
!   { "darwin_arch", DARWIN_ARCH_SPEC },				\
    { "darwin_crt2", "" },                                        \
!   { "darwin_subarch", DARWIN_ARCH_SPEC },
  
  /* The Darwin assembler mostly follows AT&T syntax.  */
  #undef ASSEMBLER_DIALECT
*************** extern int darwin_emit_branch_islands;
*** 219,237 ****
          }				\
      } while (0)
  
  /* Darwin profiling -- call mcount.  */
  #undef FUNCTION_PROFILER
  #define FUNCTION_PROFILER(FILE, LABELNO)				\
!     do {								\
!       if (TARGET_MACHO_BRANCH_ISLANDS 					\
! 	   && MACHOPIC_INDIRECT && !TARGET_64BIT)			\
! 	{								\
! 	  const char *name = machopic_mcount_stub_name ();		\
! 	  fprintf (FILE, "\tcall %s\n", name+1);  /*  skip '&'  */	\
! 	  machopic_validate_stub_or_non_lazy_ptr (name);		\
! 	}								\
!       else fprintf (FILE, "\tcall mcount\n");				\
!     } while (0)
  
  #define C_COMMON_OVERRIDE_OPTIONS					\
    do {									\
--- 219,254 ----
          }				\
      } while (0)
  
+ #ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
+ #define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP)                    \
+   do {                                                                  \
+     if ((LOG) != 0) {                                                   \
+       if ((MAX_SKIP) == 0 || (MAX_SKIP) >= (1 << (LOG)) - 1)            \
+         fprintf ((FILE), "\t.p2align %d\n", (LOG));                     \
+       else                                                              \
+         fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP));     \
+     }                                                                   \
+   } while (0)
+ #endif
+ 
+ /* Darwin x86 assemblers support the .ident directive.  */
+ 
+ #undef TARGET_ASM_OUTPUT_IDENT
+ #define TARGET_ASM_OUTPUT_IDENT default_asm_output_ident_directive
+ 
  /* Darwin profiling -- call mcount.  */
  #undef FUNCTION_PROFILER
  #define FUNCTION_PROFILER(FILE, LABELNO)				\
!   do {									\
!     if (TARGET_MACHO_SYMBOL_STUBS 					\
! 	&& MACHOPIC_INDIRECT && !TARGET_64BIT)				\
!       {									\
! 	const char *name = machopic_mcount_stub_name ();		\
! 	fprintf (FILE, "\tcall %s\n", name+1);  /*  skip '&'  */	\
! 	machopic_validate_stub_or_non_lazy_ptr (name);			\
!       }									\
!     else fprintf (FILE, "\tcall mcount\n");				\
!   } while (0)
  
  #define C_COMMON_OVERRIDE_OPTIONS					\
    do {									\
*************** do {									\
*** 304,313 ****
          }                                                                       \
      }
  
! /* This needs to move since i386 uses the first flag and other flags are
!    used in Mach-O.  */
! #undef MACHO_SYMBOL_FLAG_VARIABLE
! #define MACHO_SYMBOL_FLAG_VARIABLE ((SYMBOL_FLAG_MACH_DEP) << 3)
  
  #undef MACHOPIC_NL_SYMBOL_PTR_SECTION
  #define MACHOPIC_NL_SYMBOL_PTR_SECTION \
--- 321,328 ----
          }                                                                       \
      }
  
! /* First available SYMBOL flag bit for use by subtargets.  */
! #define SYMBOL_FLAG_SUBT_DEP (SYMBOL_FLAG_MACH_DEP << 5)
  
  #undef MACHOPIC_NL_SYMBOL_PTR_SECTION
  #define MACHOPIC_NL_SYMBOL_PTR_SECTION \
diff -Nrcpad gcc-8.3.0/gcc/config/i386/darwin32-biarch.h gcc-8.4.0/gcc/config/i386/darwin32-biarch.h
*** gcc-8.3.0/gcc/config/i386/darwin32-biarch.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/config/i386/darwin32-biarch.h	Wed Mar  4 08:30:00 2020
***************
*** 0 ****
--- 1,58 ----
+ /* Target definitions for i386 running Darwin with a 32b host and supporting
+    a 64b multilib.
+    Copyright (C) 2019 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #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
+ 
+ #undef SUBTARGET_EXTRA_SPECS
+ #define SUBTARGET_EXTRA_SPECS                                   \
+   DARWIN_EXTRA_SPECS                                            \
+   { "darwin_arch", DARWIN_ARCH_SPEC },                          \
+   { "darwin_crt2", "" },                                        \
+   { "darwin_subarch", DARWIN_SUBARCH_SPEC },
diff -Nrcpad gcc-8.3.0/gcc/config/i386/darwin64-biarch.h gcc-8.4.0/gcc/config/i386/darwin64-biarch.h
*** gcc-8.3.0/gcc/config/i386/darwin64-biarch.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/config/i386/darwin64-biarch.h	Wed Mar  4 08:30:00 2020
***************
*** 0 ****
--- 1,59 ----
+ /* Target definitions for x86_64 running Darwin with a 64b host supporting a
+    32b multilib.
+    Copyright (C) 2006-2019 Free Software Foundation, Inc.
+    Contributed by Apple Computer 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/>.  */
+ 
+ #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
+ 
+ #undef SUBTARGET_EXTRA_SPECS
+ #define SUBTARGET_EXTRA_SPECS                                   \
+   DARWIN_EXTRA_SPECS                                            \
+   { "darwin_arch", DARWIN_ARCH_SPEC },                          \
+   { "darwin_crt2", "" },                                        \
+   { "darwin_subarch", DARWIN_SUBARCH_SPEC },
diff -Nrcpad gcc-8.3.0/gcc/config/i386/darwin64.h gcc-8.4.0/gcc/config/i386/darwin64.h
*** gcc-8.3.0/gcc/config/i386/darwin64.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/i386/darwin64.h	Thu Jan  1 00:00:00 1970
***************
*** 1,58 ****
- /* Target definitions for x86_64 running Darwin.
-    Copyright (C) 2006-2018 Free Software Foundation, Inc.
-    Contributed by Apple Computer 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/>.  */
- 
- #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
- 
- #undef SUBTARGET_EXTRA_SPECS
- #define SUBTARGET_EXTRA_SPECS                                   \
-   DARWIN_EXTRA_SPECS                                            \
-   { "darwin_arch", DARWIN_ARCH_SPEC },                          \
-   { "darwin_crt2", "" },                                        \
-   { "darwin_subarch", DARWIN_SUBARCH_SPEC },
--- 0 ----
diff -Nrcpad gcc-8.3.0/gcc/config/i386/emmintrin.h gcc-8.4.0/gcc/config/i386/emmintrin.h
*** gcc-8.3.0/gcc/config/i386/emmintrin.h	Thu Dec 13 14:42:43 2018
--- gcc-8.4.0/gcc/config/i386/emmintrin.h	Wed Mar  4 08:30:00 2020
*************** _mm_xor_si128 (__m128i __A, __m128i __B)
*** 1296,1302 ****
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpeq_epi8 (__m128i __A, __m128i __B)
  {
!   return (__m128i) ((__v16qs)__A == (__v16qs)__B);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1296,1302 ----
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpeq_epi8 (__m128i __A, __m128i __B)
  {
!   return (__m128i) ((__v16qi)__A == (__v16qi)__B);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
diff -Nrcpad gcc-8.3.0/gcc/config/i386/freebsd64.h gcc-8.4.0/gcc/config/i386/freebsd64.h
*** gcc-8.3.0/gcc/config/i386/freebsd64.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/i386/freebsd64.h	Wed Mar  4 08:30:00 2020
*************** along with GCC; see the file COPYING3.
*** 31,37 ****
  
  #undef	LINK_SPEC
  #define LINK_SPEC "\
!   %{m32:-m elf_i386_fbsd} \
    %{p:%nconsider using '-pg' instead of '-p' with gprof(1)} \
    %{v:-V} \
    %{assert*} %{R*} %{rpath*} %{defsym*} \
--- 31,37 ----
  
  #undef	LINK_SPEC
  #define LINK_SPEC "\
!   %{m32:-m elf_i386_fbsd}%{!m32:-m elf_x86_64_fbsd} \
    %{p:%nconsider using '-pg' instead of '-p' with gprof(1)} \
    %{v:-V} \
    %{assert*} %{R*} %{rpath*} %{defsym*} \
*************** along with GCC; see the file COPYING3.
*** 42,44 ****
--- 42,47 ----
  	-dynamic-linker %(fbsd_dynamic_linker) } \
      %{static:-Bstatic}} \
    %{symbolic:-Bsymbolic}"
+ 
+ #undef	MULTILIB_DEFAULTS
+ #define MULTILIB_DEFAULTS { "m64" }
diff -Nrcpad gcc-8.3.0/gcc/config/i386/i386-builtin.def gcc-8.4.0/gcc/config/i386/i386-builtin.def
*** gcc-8.3.0/gcc/config/i386/i386-builtin.def	Thu Oct 11 17:41:33 2018
--- gcc-8.4.0/gcc/config/i386/i386-builtin.def	Wed Mar  4 08:30:00 2020
*************** BDESC (OPTION_MASK_ISA_SSE3, CODE_FOR_ss
*** 806,816 ****
  
  /* SSSE3 */
  BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv16qi2, "__builtin_ia32_pabsb128", IX86_BUILTIN_PABSB128, UNKNOWN, (int) V16QI_FTYPE_V16QI)
! BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_absv8qi2, "__builtin_ia32_pabsb", IX86_BUILTIN_PABSB, UNKNOWN, (int) V8QI_FTYPE_V8QI)
  BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv8hi2, "__builtin_ia32_pabsw128", IX86_BUILTIN_PABSW128, UNKNOWN, (int) V8HI_FTYPE_V8HI)
! BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_absv4hi2, "__builtin_ia32_pabsw", IX86_BUILTIN_PABSW, UNKNOWN, (int) V4HI_FTYPE_V4HI)
  BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv4si2, "__builtin_ia32_pabsd128", IX86_BUILTIN_PABSD128, UNKNOWN, (int) V4SI_FTYPE_V4SI)
! BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_absv2si2, "__builtin_ia32_pabsd", IX86_BUILTIN_PABSD, UNKNOWN, (int) V2SI_FTYPE_V2SI)
  
  BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phaddwv8hi3, "__builtin_ia32_phaddw128", IX86_BUILTIN_PHADDW128, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI)
  BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_ssse3_phaddwv4hi3, "__builtin_ia32_phaddw", IX86_BUILTIN_PHADDW, UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI)
--- 806,816 ----
  
  /* SSSE3 */
  BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv16qi2, "__builtin_ia32_pabsb128", IX86_BUILTIN_PABSB128, UNKNOWN, (int) V16QI_FTYPE_V16QI)
! BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_ssse3_absv8qi2, "__builtin_ia32_pabsb", IX86_BUILTIN_PABSB, UNKNOWN, (int) V8QI_FTYPE_V8QI)
  BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv8hi2, "__builtin_ia32_pabsw128", IX86_BUILTIN_PABSW128, UNKNOWN, (int) V8HI_FTYPE_V8HI)
! BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_ssse3_absv4hi2, "__builtin_ia32_pabsw", IX86_BUILTIN_PABSW, UNKNOWN, (int) V4HI_FTYPE_V4HI)
  BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv4si2, "__builtin_ia32_pabsd128", IX86_BUILTIN_PABSD128, UNKNOWN, (int) V4SI_FTYPE_V4SI)
! BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_ssse3_absv2si2, "__builtin_ia32_pabsd", IX86_BUILTIN_PABSD, UNKNOWN, (int) V2SI_FTYPE_V2SI)
  
  BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phaddwv8hi3, "__builtin_ia32_phaddw128", IX86_BUILTIN_PHADDW128, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI)
  BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_ssse3_phaddwv4hi3, "__builtin_ia32_phaddw", IX86_BUILTIN_PHADDW, UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI)
diff -Nrcpad gcc-8.3.0/gcc/config/i386/i386.c gcc-8.4.0/gcc/config/i386/i386.c
*** gcc-8.3.0/gcc/config/i386/i386.c	Thu Feb 14 07:38:52 2019
--- gcc-8.4.0/gcc/config/i386/i386.c	Wed Mar  4 08:30:00 2020
*************** dimode_scalar_to_vector_candidate_p (rtx
*** 1024,1039 ****
  
      case ASHIFT:
      case LSHIFTRT:
!       if (!REG_P (XEXP (src, 1))
! 	  && (!SUBREG_P (XEXP (src, 1))
! 	      || SUBREG_BYTE (XEXP (src, 1)) != 0
! 	      || !REG_P (SUBREG_REG (XEXP (src, 1))))
! 	  && (!CONST_INT_P (XEXP (src, 1))
! 	      || !IN_RANGE (INTVAL (XEXP (src, 1)), 0, 63)))
! 	return false;
! 
!       if (GET_MODE (XEXP (src, 1)) != QImode
! 	  && !CONST_INT_P (XEXP (src, 1)))
  	return false;
        break;
  
--- 1024,1031 ----
  
      case ASHIFT:
      case LSHIFTRT:
!       if (!CONST_INT_P (XEXP (src, 1))
! 	  || !IN_RANGE (INTVAL (XEXP (src, 1)), 0, 63))
  	return false;
        break;
  
*************** dimode_scalar_chain::compute_convert_gai
*** 1630,1644 ****
  	{
      	  if (CONST_INT_P (XEXP (src, 0)))
  	    gain -= vector_const_cost (XEXP (src, 0));
! 	  if (CONST_INT_P (XEXP (src, 1)))
! 	    {
! 	      gain += ix86_cost->shift_const;
! 	      if (INTVAL (XEXP (src, 1)) >= 32)
! 		gain -= COSTS_N_INSNS (1);
! 	    }
! 	  else
! 	    /* Additional gain for omitting two CMOVs.  */
! 	    gain += ix86_cost->shift_var + COSTS_N_INSNS (2);
  	}
        else if (GET_CODE (src) == PLUS
  	       || GET_CODE (src) == MINUS
--- 1622,1631 ----
  	{
      	  if (CONST_INT_P (XEXP (src, 0)))
  	    gain -= vector_const_cost (XEXP (src, 0));
! 
! 	  gain += ix86_cost->shift_const;
! 	  if (INTVAL (XEXP (src, 1)) >= 32)
! 	    gain -= COSTS_N_INSNS (1);
  	}
        else if (GET_CODE (src) == PLUS
  	       || GET_CODE (src) == MINUS
*************** dimode_scalar_chain::make_vector_copies
*** 1754,1813 ****
  {
    rtx reg = regno_reg_rtx[regno];
    rtx vreg = gen_reg_rtx (DImode);
-   bool count_reg = false;
    df_ref ref;
  
    for (ref = DF_REG_DEF_CHAIN (regno); ref; ref = DF_REF_NEXT_REG (ref))
      if (!bitmap_bit_p (insns, DF_REF_INSN_UID (ref)))
        {
- 	df_ref use;
- 
- 	/* Detect the count register of a shift instruction.  */
- 	for (use = DF_REG_USE_CHAIN (regno); use; use = DF_REF_NEXT_REG (use))
- 	  if (bitmap_bit_p (insns, DF_REF_INSN_UID (use)))
- 	    {
- 	      rtx_insn *insn = DF_REF_INSN (use);
- 	      rtx def_set = single_set (insn);
- 
- 	      gcc_assert (def_set);
- 
- 	      rtx src = SET_SRC (def_set);
- 
- 	      if ((GET_CODE (src) == ASHIFT
- 		   || GET_CODE (src) == ASHIFTRT
- 		   || GET_CODE (src) == LSHIFTRT)
- 		  && !CONST_INT_P (XEXP (src, 1))
- 		  && reg_or_subregno (XEXP (src, 1)) == regno)
- 		count_reg = true;
- 	    }
- 
  	start_sequence ();
- 	if (count_reg)
- 	  {
- 	    rtx qreg = gen_lowpart (QImode, reg);
- 	    rtx tmp = gen_reg_rtx (SImode);
- 
- 	    if (TARGET_ZERO_EXTEND_WITH_AND
- 		&& optimize_function_for_speed_p (cfun))
- 	      {
- 		emit_move_insn (tmp, const0_rtx);
- 		emit_insn (gen_movstrictqi
- 			   (gen_lowpart (QImode, tmp), qreg));
- 	      }
- 	    else
- 	      emit_insn (gen_rtx_SET
- 			 (tmp, gen_rtx_ZERO_EXTEND (SImode, qreg)));
  
! 	    if (!TARGET_INTER_UNIT_MOVES_TO_VEC)
! 	      {
! 		rtx slot = assign_386_stack_local (SImode, SLOT_STV_TEMP);
! 		emit_move_insn (slot, tmp);
! 		tmp = copy_rtx (slot);
! 	      }
! 
! 	    emit_insn (gen_zero_extendsidi2 (vreg, tmp));
! 	  }
! 	else if (!TARGET_INTER_UNIT_MOVES_TO_VEC)
  	  {
  	    rtx tmp = assign_386_stack_local (DImode, SLOT_STV_TEMP);
  	    emit_move_insn (adjust_address (tmp, SImode, 0),
--- 1741,1754 ----
  {
    rtx reg = regno_reg_rtx[regno];
    rtx vreg = gen_reg_rtx (DImode);
    df_ref ref;
  
    for (ref = DF_REG_DEF_CHAIN (regno); ref; ref = DF_REF_NEXT_REG (ref))
      if (!bitmap_bit_p (insns, DF_REF_INSN_UID (ref)))
        {
  	start_sequence ();
  
! 	if (!TARGET_INTER_UNIT_MOVES_TO_VEC)
  	  {
  	    rtx tmp = assign_386_stack_local (DImode, SLOT_STV_TEMP);
  	    emit_move_insn (adjust_address (tmp, SImode, 0),
*************** dimode_scalar_chain::make_vector_copies
*** 1855,1876 ****
      if (bitmap_bit_p (insns, DF_REF_INSN_UID (ref)))
        {
  	rtx_insn *insn = DF_REF_INSN (ref);
- 	if (count_reg)
- 	  {
- 	    rtx def_set = single_set (insn);
- 	    gcc_assert (def_set);
  
! 	    rtx src = SET_SRC (def_set);
! 
! 	    if ((GET_CODE (src) == ASHIFT
! 		 || GET_CODE (src) == ASHIFTRT
! 		 || GET_CODE (src) == LSHIFTRT)
! 		&& !CONST_INT_P (XEXP (src, 1))
! 		&& reg_or_subregno (XEXP (src, 1)) == regno)
! 	      XEXP (src, 1) = vreg;
! 	  }
! 	else
! 	  replace_with_subreg_in_insn (insn, reg, vreg);
  
  	if (dump_file)
  	  fprintf (dump_file, "  Replaced r%d with r%d in insn %d\n",
--- 1796,1803 ----
      if (bitmap_bit_p (insns, DF_REF_INSN_UID (ref)))
        {
  	rtx_insn *insn = DF_REF_INSN (ref);
  
! 	replace_with_subreg_in_insn (insn, reg, vreg);
  
  	if (dump_file)
  	  fprintf (dump_file, "  Replaced r%d with r%d in insn %d\n",
*************** dimode_scalar_chain::convert_reg (unsign
*** 1973,2014 ****
  	    rtx src = SET_SRC (def_set);
  	    rtx dst = SET_DEST (def_set);
  
! 	    if ((GET_CODE (src) == ASHIFT
! 		 || GET_CODE (src) == ASHIFTRT
! 		 || GET_CODE (src) == LSHIFTRT)
! 		&& !CONST_INT_P (XEXP (src, 1))
! 		&& reg_or_subregno (XEXP (src, 1)) == regno)
! 	      {
! 		rtx tmp2 = gen_reg_rtx (V2DImode);
! 
! 		start_sequence ();
! 
! 		if (TARGET_SSE4_1)
! 		  emit_insn (gen_sse4_1_zero_extendv2qiv2di2
! 			     (tmp2, gen_rtx_SUBREG (V16QImode, reg, 0)));
! 		else
! 		  {
! 		    rtx vec_cst
! 		      = gen_rtx_CONST_VECTOR (V2DImode,
! 					      gen_rtvec (2, GEN_INT (0xff),
! 							 const0_rtx));
! 		    vec_cst
! 		      = validize_mem (force_const_mem (V2DImode, vec_cst));
! 
! 		    emit_insn (gen_rtx_SET
! 			       (tmp2,
! 				gen_rtx_AND (V2DImode,
! 					     gen_rtx_SUBREG (V2DImode, reg, 0),
! 					     vec_cst)));
! 		  }
! 		rtx_insn *seq = get_insns ();
! 		end_sequence ();
! 
! 		emit_insn_before (seq, insn);
! 
! 		XEXP (src, 1) = gen_rtx_SUBREG (DImode, tmp2, 0);
! 	      }
! 	    else if (!MEM_P (dst) || !REG_P (src))
  	      replace_with_subreg_in_insn (insn, reg, reg);
  
  	    bitmap_clear_bit (conv, INSN_UID (insn));
--- 1900,1906 ----
  	    rtx src = SET_SRC (def_set);
  	    rtx dst = SET_DEST (def_set);
  
! 	    if (!MEM_P (dst) || !REG_P (src))
  	      replace_with_subreg_in_insn (insn, reg, reg);
  
  	    bitmap_clear_bit (conv, INSN_UID (insn));
*************** ix86_option_override_internal (bool main
*** 3488,3494 ****
      | PTA_AVX512VBMI | PTA_AVX512IFMA | PTA_SHA;
    const wide_int_bitmask PTA_ICELAKE_CLIENT = PTA_CANNONLAKE | PTA_AVX512VNNI
      | PTA_GFNI | PTA_VAES | PTA_AVX512VBMI2 | PTA_VPCLMULQDQ | PTA_AVX512BITALG
!     | PTA_RDPID | PTA_CLWB;
    const wide_int_bitmask PTA_ICELAKE_SERVER = PTA_ICELAKE_CLIENT | PTA_PCONFIG
      | PTA_WBNOINVD;
    const wide_int_bitmask PTA_KNL = PTA_BROADWELL | PTA_AVX512PF | PTA_AVX512ER
--- 3380,3386 ----
      | PTA_AVX512VBMI | PTA_AVX512IFMA | PTA_SHA;
    const wide_int_bitmask PTA_ICELAKE_CLIENT = PTA_CANNONLAKE | PTA_AVX512VNNI
      | PTA_GFNI | PTA_VAES | PTA_AVX512VBMI2 | PTA_VPCLMULQDQ | PTA_AVX512BITALG
!     | PTA_RDPID | PTA_CLWB | PTA_AVX512VPOPCNTDQ;
    const wide_int_bitmask PTA_ICELAKE_SERVER = PTA_ICELAKE_CLIENT | PTA_PCONFIG
      | PTA_WBNOINVD;
    const wide_int_bitmask PTA_KNL = PTA_BROADWELL | PTA_AVX512PF | PTA_AVX512ER
*************** ix86_option_override_internal (bool main
*** 4958,4963 ****
--- 4850,4861 ----
  			   opts->x_param_values,
  			   opts_set->x_param_values);
  
+   /* PR86952: jump table usage with retpolines is slow.
+      The PR provides some numbers about the slowness.  */
+   if (ix86_indirect_branch != indirect_branch_keep
+       && !opts_set->x_flag_jump_tables)
+     opts->x_flag_jump_tables = 0;
+ 
    return true;
  }
  
*************** ix86_valid_target_attribute_inner_p (tre
*** 5552,5558 ****
  	      ret = false;
  	    }
  	  else
! 	    p_strings[opt] = xstrdup (p + opt_len);
  	}
  
        else if (type == ix86_opt_enum)
--- 5450,5474 ----
  	      ret = false;
  	    }
  	  else
! 	    {
! 	      p_strings[opt] = xstrdup (p + opt_len);
! 	      if (opt == IX86_FUNCTION_SPECIFIC_ARCH)
! 		{
! 		  /* If arch= is set,  clear all bits in x_ix86_isa_flags,
! 		     except for ISA_64BIT, ABI_64, ABI_X32, and CODE16
! 		     and all bits in x_ix86_isa_flags2.  */
! 		  opts->x_ix86_isa_flags &= (OPTION_MASK_ISA_64BIT
! 					     | OPTION_MASK_ABI_64
! 					     | OPTION_MASK_ABI_X32
! 					     | OPTION_MASK_CODE16);
! 		  opts->x_ix86_isa_flags_explicit &= (OPTION_MASK_ISA_64BIT
! 						      | OPTION_MASK_ABI_64
! 						      | OPTION_MASK_ABI_X32
! 						      | OPTION_MASK_CODE16);
! 		  opts->x_ix86_isa_flags2 = 0;
! 		  opts->x_ix86_isa_flags2_explicit = 0;
! 		}
! 	    }
  	}
  
        else if (type == ix86_opt_enum)
*************** ix86_valid_target_attribute_tree (tree a
*** 5627,5644 ****
        /* If we are using the default tune= or arch=, undo the string assigned,
  	 and use the default.  */
        if (option_strings[IX86_FUNCTION_SPECIFIC_ARCH])
! 	{
! 	  opts->x_ix86_arch_string
! 	    = ggc_strdup (option_strings[IX86_FUNCTION_SPECIFIC_ARCH]);
! 
! 	  /* If arch= is set,  clear all bits in x_ix86_isa_flags,
! 	     except for ISA_64BIT, ABI_64, ABI_X32, and CODE16.  */
! 	  opts->x_ix86_isa_flags &= (OPTION_MASK_ISA_64BIT
! 				     | OPTION_MASK_ABI_64
! 				     | OPTION_MASK_ABI_X32
! 				     | OPTION_MASK_CODE16);
! 	  opts->x_ix86_isa_flags2 = 0;
! 	}
        else if (!orig_arch_specified)
  	opts->x_ix86_arch_string = NULL;
  
--- 5543,5550 ----
        /* If we are using the default tune= or arch=, undo the string assigned,
  	 and use the default.  */
        if (option_strings[IX86_FUNCTION_SPECIFIC_ARCH])
! 	opts->x_ix86_arch_string
! 	  = ggc_strdup (option_strings[IX86_FUNCTION_SPECIFIC_ARCH]);
        else if (!orig_arch_specified)
  	opts->x_ix86_arch_string = NULL;
  
*************** ix86_gimplify_va_arg (tree valist, tree
*** 10099,10104 ****
--- 10005,10011 ----
    tree ptrtype;
    machine_mode nat_mode;
    unsigned int arg_boundary;
+   unsigned int type_align;
  
    /* Only 64bit target needs something special.  */
    if (is_va_list_char_pointer (TREE_TYPE (valist)))
*************** ix86_gimplify_va_arg (tree valist, tree
*** 10156,10161 ****
--- 10063,10069 ----
    /* Pull the value out of the saved registers.  */
  
    addr = create_tmp_var (ptr_type_node, "addr");
+   type_align = TYPE_ALIGN (type);
  
    if (container)
      {
*************** ix86_gimplify_va_arg (tree valist, tree
*** 10326,10331 ****
--- 10234,10242 ----
  	  t = build2 (PLUS_EXPR, TREE_TYPE (gpr), gpr,
  		      build_int_cst (TREE_TYPE (gpr), needed_intregs * 8));
  	  gimplify_assign (gpr, t, pre_p);
+ 	  /* The GPR save area guarantees only 8-byte alignment.  */
+ 	  if (!need_temp)
+ 	    type_align = MIN (type_align, 64);
  	}
  
        if (needed_sseregs)
*************** ix86_gimplify_va_arg (tree valist, tree
*** 10370,10375 ****
--- 10281,10287 ----
    if (container)
      gimple_seq_add_stmt (pre_p, gimple_build_label (lab_over));
  
+   type = build_aligned_type (type, type_align);
    ptrtype = build_pointer_type_for_mode (type, ptr_mode, true);
    addr = fold_convert (ptrtype, addr);
  
*************** output_pic_addr_const (FILE *file, rtx x
*** 17313,17319 ****
        break;
  
      case SYMBOL_REF:
!       if (TARGET_64BIT || ! TARGET_MACHO_BRANCH_ISLANDS)
  	output_addr_const (file, x);
        else
  	{
--- 17225,17231 ----
        break;
  
      case SYMBOL_REF:
!       if (TARGET_64BIT || ! TARGET_MACHO_SYMBOL_STUBS)
  	output_addr_const (file, x);
        else
  	{
*************** print_reg (rtx x, int code, FILE *file)
*** 18121,18126 ****
--- 18033,18039 ----
     ; -- print a semicolon (after prefixes due to bug in older gas).
     ~ -- print "i" if TARGET_AVX2, "f" otherwise.
     ^ -- print addr32 prefix if TARGET_64BIT and Pmode != word_mode
+    M -- print addr32 prefix for TARGET_X32 with VSIB address.
     ! -- print MPX prefix for jxx/call/ret instructions if required.
   */
  
*************** ix86_print_operand (FILE *file, rtx x, i
*** 18668,18673 ****
--- 18581,18606 ----
  	  putc (TARGET_AVX2 ? 'i' : 'f', file);
  	  return;
  
+ 	case 'M':
+ 	  if (TARGET_X32)
+ 	    {
+ 	      /* NB: 32-bit indices in VSIB address are sign-extended
+ 		 to 64 bits. In x32, if 32-bit address 0xf7fa3010 is
+ 		 sign-extended to 0xfffffffff7fa3010 which is invalid
+ 		 address.  Add addr32 prefix if there is no base
+ 		 register nor symbol.  */
+ 	      bool ok;
+ 	      struct ix86_address parts;
+ 	      ok = ix86_decompose_address (x, &parts);
+ 	      gcc_assert (ok && parts.index == NULL_RTX);
+ 	      if (parts.base == NULL_RTX
+ 		  && (parts.disp == NULL_RTX
+ 		      || !symbolic_operand (parts.disp,
+ 					    GET_MODE (parts.disp))))
+ 		fputs ("addr32 ", file);
+ 	    }
+ 	  return;
+ 
  	case '^':
  	  if (TARGET_64BIT && Pmode != word_mode)
  	    fputs ("addr32 ", file);
*************** ix86_expand_sse_fp_minmax (rtx dest, enu
*** 24062,24067 ****
--- 23995,24002 ----
    else
      {
        code = is_min ? SMIN : SMAX;
+       if (MEM_P (if_true) && MEM_P (if_false))
+ 	if_true = force_reg (mode, if_true);
        tmp = gen_rtx_fmt_ee (code, mode, if_true, if_false);
      }
  
*************** ix86_nopic_noplt_attribute_p (rtx call_o
*** 28757,28762 ****
--- 28692,28716 ----
    return false;
  }
  
+ /* Helper to output the jmp/call.  */
+ static void
+ ix86_output_jmp_thunk_or_indirect (const char *thunk_name,
+ 				   enum indirect_thunk_prefix need_prefix,
+ 				   const int regno)
+ {
+   if (thunk_name != NULL)
+     {
+       if (need_prefix == indirect_thunk_prefix_bnd)
+ 	fprintf (asm_out_file, "\tbnd jmp\t");
+       else
+ 	fprintf (asm_out_file, "\tjmp\t");
+       assemble_name (asm_out_file, thunk_name);
+       putc ('\n', asm_out_file);
+     }
+   else
+     output_indirect_thunk (need_prefix, regno);
+ }
+ 
  /* Output indirect branch via a call and return thunk.  CALL_OP is a
     register which contains the branch target.  XASM is the assembly
     template for CALL_OP.  Branch is a tail call if SIBCALL_P is true.
*************** ix86_output_indirect_branch_via_reg (rtx
*** 28798,28822 ****
      thunk_name = NULL;
  
    if (sibcall_p)
!     {
!       if (thunk_name != NULL)
! 	{
! 	  if (need_prefix == indirect_thunk_prefix_bnd)
! 	    fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name);
! 	  else
! 	    fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name);
! 	}
!       else
! 	output_indirect_thunk (need_prefix, regno);
!     }
    else
      {
        if (thunk_name != NULL)
  	{
  	  if (need_prefix == indirect_thunk_prefix_bnd)
! 	    fprintf (asm_out_file, "\tbnd call\t%s\n", thunk_name);
  	  else
! 	    fprintf (asm_out_file, "\tcall\t%s\n", thunk_name);
  	  return;
  	}
  
--- 28752,28768 ----
      thunk_name = NULL;
  
    if (sibcall_p)
!     ix86_output_jmp_thunk_or_indirect (thunk_name, need_prefix, regno);
    else
      {
        if (thunk_name != NULL)
  	{
  	  if (need_prefix == indirect_thunk_prefix_bnd)
! 	    fprintf (asm_out_file, "\tbnd call\t");
  	  else
! 	    fprintf (asm_out_file, "\tcall\t");
! 	  assemble_name (asm_out_file, thunk_name);
! 	  putc ('\n', asm_out_file);
  	  return;
  	}
  
*************** ix86_output_indirect_branch_via_reg (rtx
*** 28840,28854 ****
  
        ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel1);
  
!       if (thunk_name != NULL)
! 	{
! 	  if (need_prefix == indirect_thunk_prefix_bnd)
! 	    fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name);
! 	  else
! 	    fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name);
! 	}
!       else
! 	output_indirect_thunk (need_prefix, regno);
  
        ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2);
  
--- 28786,28792 ----
  
        ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel1);
  
!       ix86_output_jmp_thunk_or_indirect (thunk_name, need_prefix, regno);
  
        ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2);
  
*************** ix86_output_indirect_branch_via_push (rt
*** 28913,28927 ****
    if (sibcall_p)
      {
        output_asm_insn (push_buf, &call_op);
!       if (thunk_name != NULL)
! 	{
! 	  if (need_prefix == indirect_thunk_prefix_bnd)
! 	    fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name);
! 	  else
! 	    fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name);
! 	}
!       else
! 	output_indirect_thunk (need_prefix, regno);
      }
    else
      {
--- 28851,28857 ----
    if (sibcall_p)
      {
        output_asm_insn (push_buf, &call_op);
!       ix86_output_jmp_thunk_or_indirect (thunk_name, need_prefix, regno);
      }
    else
      {
*************** ix86_output_indirect_branch_via_push (rt
*** 28980,28994 ****
  
        output_asm_insn (push_buf, &call_op);
  
!       if (thunk_name != NULL)
! 	{
! 	  if (need_prefix == indirect_thunk_prefix_bnd)
! 	    fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name);
! 	  else
! 	    fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name);
! 	}
!       else
! 	output_indirect_thunk (need_prefix, regno);
  
        ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2);
  
--- 28910,28916 ----
  
        output_asm_insn (push_buf, &call_op);
  
!       ix86_output_jmp_thunk_or_indirect (thunk_name, need_prefix, regno);
  
        ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2);
  
*************** ix86_output_function_return (bool long_p
*** 29057,29069 ****
  	  if (need_prefix == indirect_thunk_prefix_bnd)
  	    {
  	      indirect_return_bnd_needed |= need_thunk;
! 	      fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name);
  	    }
  	  else
  	    {
  	      indirect_return_needed |= need_thunk;
! 	      fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name);
  	    }
  	}
        else
  	output_indirect_thunk (need_prefix, INVALID_REGNUM);
--- 28979,28993 ----
  	  if (need_prefix == indirect_thunk_prefix_bnd)
  	    {
  	      indirect_return_bnd_needed |= need_thunk;
! 	      fprintf (asm_out_file, "\tbnd jmp\t");
  	    }
  	  else
  	    {
  	      indirect_return_needed |= need_thunk;
! 	      fprintf (asm_out_file, "\tjmp\t");
  	    }
+ 	  assemble_name (asm_out_file, thunk_name);
+ 	  putc ('\n', asm_out_file);
  	}
        else
  	output_indirect_thunk (need_prefix, INVALID_REGNUM);
*************** ix86_output_indirect_function_return (rt
*** 29104,29110 ****
  		  indirect_return_via_cx_bnd = true;
  		  indirect_thunks_bnd_used |= 1 << CX_REG;
  		}
! 	      fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name);
  	    }
  	  else
  	    {
--- 29028,29034 ----
  		  indirect_return_via_cx_bnd = true;
  		  indirect_thunks_bnd_used |= 1 << CX_REG;
  		}
! 	      fprintf (asm_out_file, "\tbnd jmp\t");
  	    }
  	  else
  	    {
*************** ix86_output_indirect_function_return (rt
*** 29113,29120 ****
  		  indirect_return_via_cx = true;
  		  indirect_thunks_used |= 1 << CX_REG;
  		}
! 	      fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name);
  	    }
  	}
        else
  	output_indirect_thunk (need_prefix, regno);
--- 29037,29046 ----
  		  indirect_return_via_cx = true;
  		  indirect_thunks_used |= 1 << CX_REG;
  		}
! 	      fprintf (asm_out_file, "\tjmp\t");
  	    }
+ 	  assemble_name (asm_out_file, thunk_name);
+ 	  putc ('\n', asm_out_file);
  	}
        else
  	output_indirect_thunk (need_prefix, regno);
*************** ix86_trampoline_init (rtx m_tramp, tree
*** 30553,30561 ****
  	 the stack, we need to skip the first insn which pushes the
  	 (call-saved) register static chain; this push is 1 byte.  */
        offset += 5;
        disp = expand_binop (SImode, sub_optab, fnaddr,
  			   plus_constant (Pmode, XEXP (m_tramp, 0),
! 					  offset - (MEM_P (chain) ? 1 : 0)),
  			   NULL_RTX, 1, OPTAB_DIRECT);
        emit_move_insn (mem, disp);
      }
--- 30479,30492 ----
  	 the stack, we need to skip the first insn which pushes the
  	 (call-saved) register static chain; this push is 1 byte.  */
        offset += 5;
+       int skip = MEM_P (chain) ? 1 : 0;
+       /* Skip ENDBR32 at the entry of the target function.  */
+       if (need_endbr
+ 	  && !cgraph_node::get (fndecl)->only_called_directly_p ())
+ 	skip += 4;
        disp = expand_binop (SImode, sub_optab, fnaddr,
  			   plus_constant (Pmode, XEXP (m_tramp, 0),
! 					  offset - skip),
  			   NULL_RTX, 1, OPTAB_DIRECT);
        emit_move_insn (mem, disp);
      }
*************** make_resolver_func (const tree default_d
*** 32923,32928 ****
--- 32854,32860 ----
      }
    /* Build result decl and add to function_decl. */
    t = build_decl (UNKNOWN_LOCATION, RESULT_DECL, NULL_TREE, ptr_type_node);
+   DECL_CONTEXT (t) = decl;
    DECL_ARTIFICIAL (t) = 1;
    DECL_IGNORED_P (t) = 1;
    DECL_RESULT (decl) = t;
*************** ix86_vectorize_builtin_scatter (const_tr
*** 39641,39647 ****
  static bool
  use_rsqrt_p ()
  {
!   return (TARGET_SSE_MATH
  	  && flag_finite_math_only
  	  && !flag_trapping_math
  	  && flag_unsafe_math_optimizations);
--- 39573,39579 ----
  static bool
  use_rsqrt_p ()
  {
!   return (TARGET_SSE && TARGET_SSE_MATH
  	  && flag_finite_math_only
  	  && !flag_trapping_math
  	  && flag_unsafe_math_optimizations);
*************** ix86_md_asm_adjust (vec<rtx> &outputs, v
*** 44853,44863 ****
  	    {
  	      x = force_reg (dest_mode, const0_rtx);
  
! 	      emit_insn (gen_movstrictqi
! 			 (gen_lowpart (QImode, x), destqi));
  	    }
  	  else
! 	    x = gen_rtx_ZERO_EXTEND (dest_mode, destqi);
  	}
  
        if (dest_mode != GET_MODE (dest))
--- 44785,44799 ----
  	    {
  	      x = force_reg (dest_mode, const0_rtx);
  
! 	      emit_insn (gen_movstrictqi (gen_lowpart (QImode, x), destqi));
  	    }
  	  else
! 	    {
! 	      x = gen_rtx_ZERO_EXTEND (dest_mode, destqi);
! 	      if (dest_mode == GET_MODE (dest)
! 		  && !register_operand (dest, GET_MODE (dest)))
! 		x = force_reg (dest_mode, x);
! 	    }
  	}
  
        if (dest_mode != GET_MODE (dest))
*************** ix86_expand_floorceildf_32 (rtx operand0
*** 45705,45712 ****
            x2 -= 1;
       Compensate.  Ceil:
          if (x2 < x)
!           x2 -= -1;
!         return x2;
     */
    machine_mode mode = GET_MODE (operand0);
    rtx xa, TWO52, tmp, one, res, mask;
--- 45641,45650 ----
            x2 -= 1;
       Compensate.  Ceil:
          if (x2 < x)
!           x2 += 1;
! 	if (HONOR_SIGNED_ZEROS (mode))
! 	  x2 = copysign (x2, x);
! 	return x2;
     */
    machine_mode mode = GET_MODE (operand0);
    rtx xa, TWO52, tmp, one, res, mask;
*************** ix86_expand_floorceildf_32 (rtx operand0
*** 45732,45748 ****
    /* xa = copysign (xa, operand1) */
    ix86_sse_copysign_to_positive (xa, xa, res, mask);
  
!   /* generate 1.0 or -1.0 */
!   one = force_reg (mode,
! 	           const_double_from_real_value (do_floor
! 						 ? dconst1 : dconstm1, mode));
  
    /* Compensate: xa = xa - (xa > operand1 ? 1 : 0) */
    tmp = ix86_expand_sse_compare_mask (UNGT, xa, res, !do_floor);
    emit_insn (gen_rtx_SET (tmp, gen_rtx_AND (mode, one, tmp)));
!   /* We always need to subtract here to preserve signed zero.  */
!   tmp = expand_simple_binop (mode, MINUS,
  			     xa, tmp, NULL_RTX, 0, OPTAB_DIRECT);
    emit_move_insn (res, tmp);
  
    emit_label (label);
--- 45670,45685 ----
    /* xa = copysign (xa, operand1) */
    ix86_sse_copysign_to_positive (xa, xa, res, mask);
  
!   /* generate 1.0 */
!   one = force_reg (mode, const_double_from_real_value (dconst1, mode));
  
    /* Compensate: xa = xa - (xa > operand1 ? 1 : 0) */
    tmp = ix86_expand_sse_compare_mask (UNGT, xa, res, !do_floor);
    emit_insn (gen_rtx_SET (tmp, gen_rtx_AND (mode, one, tmp)));
!   tmp = expand_simple_binop (mode, do_floor ? MINUS : PLUS,
  			     xa, tmp, NULL_RTX, 0, OPTAB_DIRECT);
+   if (!do_floor && HONOR_SIGNED_ZEROS (mode))
+     ix86_sse_copysign_to_positive (tmp, tmp, res, mask);
    emit_move_insn (res, tmp);
  
    emit_label (label);
*************** static bool
*** 46379,46385 ****
  expand_vec_perm_blend (struct expand_vec_perm_d *d)
  {
    machine_mode mmode, vmode = d->vmode;
!   unsigned i, mask, nelt = d->nelt;
    rtx target, op0, op1, maskop, x;
    rtx rperm[32], vperm;
  
--- 46316,46323 ----
  expand_vec_perm_blend (struct expand_vec_perm_d *d)
  {
    machine_mode mmode, vmode = d->vmode;
!   unsigned i, nelt = d->nelt;
!   unsigned HOST_WIDE_INT mask;
    rtx target, op0, op1, maskop, x;
    rtx rperm[32], vperm;
  
*************** expand_vec_perm_blend (struct expand_vec
*** 46433,46439 ****
      case E_V16SImode:
      case E_V8DImode:
        for (i = 0; i < nelt; ++i)
! 	mask |= (d->perm[i] >= nelt) << i;
        break;
  
      case E_V2DImode:
--- 46371,46377 ----
      case E_V16SImode:
      case E_V8DImode:
        for (i = 0; i < nelt; ++i)
! 	mask |= ((unsigned HOST_WIDE_INT) (d->perm[i] >= nelt)) << i;
        break;
  
      case E_V2DImode:
*************** ix86_float_exceptions_rounding_supported
*** 50999,51005 ****
       there is no adddf3 pattern (since x87 floating point only has
       XFmode operations) so the default hook implementation gets this
       wrong.  */
!   return TARGET_80387 || TARGET_SSE_MATH;
  }
  
  /* Implement TARGET_ATOMIC_ASSIGN_EXPAND_FENV.  */
--- 50937,50943 ----
       there is no adddf3 pattern (since x87 floating point only has
       XFmode operations) so the default hook implementation gets this
       wrong.  */
!   return TARGET_80387 || (TARGET_SSE && TARGET_SSE_MATH);
  }
  
  /* Implement TARGET_ATOMIC_ASSIGN_EXPAND_FENV.  */
*************** ix86_float_exceptions_rounding_supported
*** 51007,51013 ****
  static void
  ix86_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
  {
!   if (!TARGET_80387 && !TARGET_SSE_MATH)
      return;
    tree exceptions_var = create_tmp_var_raw (integer_type_node);
    if (TARGET_80387)
--- 50945,50951 ----
  static void
  ix86_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
  {
!   if (!TARGET_80387 && !(TARGET_SSE && TARGET_SSE_MATH))
      return;
    tree exceptions_var = create_tmp_var_raw (integer_type_node);
    if (TARGET_80387)
*************** ix86_atomic_assign_expand_fenv (tree *ho
*** 51042,51048 ****
        tree update_fldenv = build_call_expr (fldenv, 1, fenv_addr);
        *update = build2 (COMPOUND_EXPR, void_type_node, *update, update_fldenv);
      }
!   if (TARGET_SSE_MATH)
      {
        tree mxcsr_orig_var = create_tmp_var_raw (unsigned_type_node);
        tree mxcsr_mod_var = create_tmp_var_raw (unsigned_type_node);
--- 50980,50986 ----
        tree update_fldenv = build_call_expr (fldenv, 1, fenv_addr);
        *update = build2 (COMPOUND_EXPR, void_type_node, *update, update_fldenv);
      }
!   if (TARGET_SSE && TARGET_SSE_MATH)
      {
        tree mxcsr_orig_var = create_tmp_var_raw (unsigned_type_node);
        tree mxcsr_mod_var = create_tmp_var_raw (unsigned_type_node);
*************** ix86_excess_precision (enum excess_preci
*** 51399,51405 ****
  	  return FLT_EVAL_METHOD_PROMOTE_TO_FLOAT;
  	else if (!TARGET_MIX_SSE_I387)
  	  {
! 	    if (!TARGET_SSE_MATH)
  	      return FLT_EVAL_METHOD_PROMOTE_TO_LONG_DOUBLE;
  	    else if (TARGET_SSE2)
  	      return FLT_EVAL_METHOD_PROMOTE_TO_FLOAT;
--- 51337,51343 ----
  	  return FLT_EVAL_METHOD_PROMOTE_TO_FLOAT;
  	else if (!TARGET_MIX_SSE_I387)
  	  {
! 	    if (!(TARGET_SSE && TARGET_SSE_MATH))
  	      return FLT_EVAL_METHOD_PROMOTE_TO_LONG_DOUBLE;
  	    else if (TARGET_SSE2)
  	      return FLT_EVAL_METHOD_PROMOTE_TO_FLOAT;
diff -Nrcpad gcc-8.3.0/gcc/config/i386/i386.h gcc-8.4.0/gcc/config/i386/i386.h
*** gcc-8.3.0/gcc/config/i386/i386.h	Sun Nov 18 20:41:32 2018
--- gcc-8.4.0/gcc/config/i386/i386.h	Wed Mar  4 08:30:00 2020
*************** extern tree x86_mfence;
*** 621,627 ****
  /* Replace MACH-O, ifdefs by in-line tests, where possible. 
     (a) Macros defined in config/i386/darwin.h  */
  #define TARGET_MACHO 0
! #define TARGET_MACHO_BRANCH_ISLANDS 0
  #define MACHOPIC_ATT_STUB 0
  /* (b) Macros defined in config/darwin.h  */
  #define MACHO_DYNAMIC_NO_PIC_P 0
--- 621,627 ----
  /* Replace MACH-O, ifdefs by in-line tests, where possible. 
     (a) Macros defined in config/i386/darwin.h  */
  #define TARGET_MACHO 0
! #define TARGET_MACHO_SYMBOL_STUBS 0
  #define MACHOPIC_ATT_STUB 0
  /* (b) Macros defined in config/darwin.h  */
  #define MACHO_DYNAMIC_NO_PIC_P 0
*************** extern const char *host_detect_local_cpu
*** 1062,1070 ****
  /*xmm8,xmm9,xmm10,xmm11,xmm12,xmm13,xmm14,xmm15*/		\
       6,   6,    6,    6,    6,    6,    6,    6,		\
  /*xmm16,xmm17,xmm18,xmm19,xmm20,xmm21,xmm22,xmm23*/		\
!      6,    6,     6,    6,    6,    6,    6,    6,		\
  /*xmm24,xmm25,xmm26,xmm27,xmm28,xmm29,xmm30,xmm31*/		\
!      6,    6,     6,    6,    6,    6,    6,    6,		\
   /* k0,  k1,  k2,  k3,  k4,  k5,  k6,  k7*/			\
       1,   1,   1,   1,   1,   1,   1,   1,			\
  /*   b0, b1, b2, b3*/						\
--- 1062,1070 ----
  /*xmm8,xmm9,xmm10,xmm11,xmm12,xmm13,xmm14,xmm15*/		\
       6,   6,    6,    6,    6,    6,    6,    6,		\
  /*xmm16,xmm17,xmm18,xmm19,xmm20,xmm21,xmm22,xmm23*/		\
!      1,    1,     1,    1,    1,    1,    1,    1,		\
  /*xmm24,xmm25,xmm26,xmm27,xmm28,xmm29,xmm30,xmm31*/		\
!      1,    1,     1,    1,    1,    1,    1,    1,		\
   /* k0,  k1,  k2,  k3,  k4,  k5,  k6,  k7*/			\
       1,   1,   1,   1,   1,   1,   1,   1,			\
  /*   b0, b1, b2, b3*/						\
*************** extern int const svr4_dbx_register_map[F
*** 2227,2232 ****
--- 2227,2257 ----
  #define ASM_OUTPUT_FUNCTION_LABEL(FILE, NAME, DECL) \
    ix86_asm_output_function_label ((FILE), (NAME), (DECL))
  
+ /* A C statement (sans semicolon) to output a reference to SYMBOL_REF SYM.
+    If not defined, assemble_name will be used to output the name of the
+    symbol.  This macro may be used to modify the way a symbol is referenced
+    depending on information encoded by TARGET_ENCODE_SECTION_INFO.  */
+ 
+ #ifndef ASM_OUTPUT_SYMBOL_REF
+ #define ASM_OUTPUT_SYMBOL_REF(FILE, SYM) \
+   do {							\
+     const char *name					\
+       = assemble_name_resolve (XSTR (x, 0));		\
+     /* In -masm=att wrap identifiers that start with $	\
+        into parens.  */					\
+     if (ASSEMBLER_DIALECT == ASM_ATT			\
+ 	&& name[0] == '$'				\
+ 	&& user_label_prefix[0] == '\0')		\
+       {							\
+ 	fputc ('(', (FILE));				\
+ 	assemble_name_raw ((FILE), name);		\
+ 	fputc (')', (FILE));				\
+       }							\
+     else						\
+       assemble_name_raw ((FILE), name);			\
+   } while (0)
+ #endif
+ 
  /* Under some conditions we need jump tables in the text section,
     because the assembler cannot handle label differences between
     sections.  This is the case for x86_64 on Mach-O for example.  */
diff -Nrcpad gcc-8.3.0/gcc/config/i386/i386.md gcc-8.4.0/gcc/config/i386/i386.md
*** gcc-8.3.0/gcc/config/i386/i386.md	Tue Jan  8 09:56:36 2019
--- gcc-8.4.0/gcc/config/i386/i386.md	Wed Mar  4 08:30:00 2020
***************
*** 8942,8948 ****
    [(parallel [(set (match_dup 0)
  		   (zero_extend:DI (and:SI (match_dup 1) (match_dup 2))))
  	      (clobber (reg:CC FLAGS_REG))])]
!   "operands[2] = gen_lowpart (SImode, operands[2]);")
  
  ;; See comment for addsi_1_zext why we do use nonimmediate_operand
  (define_insn "*andsi_1_zext"
--- 8942,8965 ----
    [(parallel [(set (match_dup 0)
  		   (zero_extend:DI (and:SI (match_dup 1) (match_dup 2))))
  	      (clobber (reg:CC FLAGS_REG))])]
! {
!   if (GET_CODE (operands[2]) == SYMBOL_REF
!       || GET_CODE (operands[2]) == LABEL_REF)
!     {
!       operands[2] = shallow_copy_rtx (operands[2]);
!       PUT_MODE (operands[2], SImode);
!     }
!   else if (GET_CODE (operands[2]) == CONST)
!     {
!       /* (const:DI (plus:DI (symbol_ref:DI ("...")) (const_int N))) */
!       operands[2] = copy_rtx (operands[2]);
!       PUT_MODE (operands[2], SImode);
!       PUT_MODE (XEXP (operands[2], 0), SImode);
!       PUT_MODE (XEXP (XEXP (operands[2], 0), 0), SImode);
!     }    
!   else
!     operands[2] = gen_lowpart (SImode, operands[2]);
! })
  
  ;; See comment for addsi_1_zext why we do use nonimmediate_operand
  (define_insn "*andsi_1_zext"
diff -Nrcpad gcc-8.3.0/gcc/config/i386/intelmic-mkoffload.c gcc-8.4.0/gcc/config/i386/intelmic-mkoffload.c
*** gcc-8.3.0/gcc/config/i386/intelmic-mkoffload.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/i386/intelmic-mkoffload.c	Wed Mar  4 08:30:00 2020
*************** prepare_target_image (const char *target
*** 453,460 ****
    if (verbose)
      obstack_ptr_grow (&argv_obstack, "-v");
    obstack_ptr_grow (&argv_obstack, "-xlto");
-   obstack_ptr_grow (&argv_obstack, "-shared");
-   obstack_ptr_grow (&argv_obstack, "-fPIC");
    obstack_ptr_grow (&argv_obstack, opt1);
    for (int i = 1; i < argc; i++)
      {
--- 453,458 ----
*************** prepare_target_image (const char *target
*** 466,471 ****
--- 464,472 ----
    if (!out_obj_filename)
      fatal_error (input_location, "output file not specified");
    obstack_ptr_grow (&argv_obstack, opt2);
+   /* NB: Put -fPIC and -shared the last to create shared library.  */
+   obstack_ptr_grow (&argv_obstack, "-fPIC");
+   obstack_ptr_grow (&argv_obstack, "-shared");
    obstack_ptr_grow (&argv_obstack, "-o");
    obstack_ptr_grow (&argv_obstack, target_so_filename);
    compile_for_target (&argv_obstack);
diff -Nrcpad gcc-8.3.0/gcc/config/i386/mmx.md gcc-8.4.0/gcc/config/i386/mmx.md
*** gcc-8.3.0/gcc/config/i386/mmx.md	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/i386/mmx.md	Wed Mar  4 08:30:00 2020
***************
*** 608,620 ****
  (define_insn "*vec_extractv2sf_1"
    [(set (match_operand:SF 0 "nonimmediate_operand"     "=y,x,x,y,x,f,r")
  	(vec_select:SF
! 	  (match_operand:V2SF 1 "nonimmediate_operand" " 0,x,x,o,o,o,o")
  	  (parallel [(const_int 1)])))]
    "TARGET_MMX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
    "@
     punpckhdq\t%0, %0
     %vmovshdup\t{%1, %0|%0, %1}
!    shufps\t{$0xe5, %1, %0|%0, %1, 0xe5}
     #
     #
     #
--- 608,620 ----
  (define_insn "*vec_extractv2sf_1"
    [(set (match_operand:SF 0 "nonimmediate_operand"     "=y,x,x,y,x,f,r")
  	(vec_select:SF
! 	  (match_operand:V2SF 1 "nonimmediate_operand" " 0,x,0,o,o,o,o")
  	  (parallel [(const_int 1)])))]
    "TARGET_MMX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
    "@
     punpckhdq\t%0, %0
     %vmovshdup\t{%1, %0|%0, %1}
!    shufps\t{$0xe5, %0, %0|%0, %0, 0xe5}
     #
     #
     #
***************
*** 1302,1314 ****
  (define_insn "*vec_extractv2si_1"
    [(set (match_operand:SI 0 "nonimmediate_operand"     "=y,x,x,y,x,r")
  	(vec_select:SI
! 	  (match_operand:V2SI 1 "nonimmediate_operand" " 0,x,x,o,o,o")
  	  (parallel [(const_int 1)])))]
    "TARGET_MMX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
    "@
     punpckhdq\t%0, %0
     %vpshufd\t{$0xe5, %1, %0|%0, %1, 0xe5}
!    shufps\t{$0xe5, %1, %0|%0, %1, 0xe5}
     #
     #
     #"
--- 1302,1314 ----
  (define_insn "*vec_extractv2si_1"
    [(set (match_operand:SI 0 "nonimmediate_operand"     "=y,x,x,y,x,r")
  	(vec_select:SI
! 	  (match_operand:V2SI 1 "nonimmediate_operand" " 0,x,0,o,o,o")
  	  (parallel [(const_int 1)])))]
    "TARGET_MMX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
    "@
     punpckhdq\t%0, %0
     %vpshufd\t{$0xe5, %1, %0|%0, %1, 0xe5}
!    shufps\t{$0xe5, %0, %0|%0, %0, 0xe5}
     #
     #
     #"
diff -Nrcpad gcc-8.3.0/gcc/config/i386/sse.md gcc-8.4.0/gcc/config/i386/sse.md
*** gcc-8.3.0/gcc/config/i386/sse.md	Thu Feb  7 14:42:54 2019
--- gcc-8.4.0/gcc/config/i386/sse.md	Wed Mar  4 08:30:00 2020
***************
*** 1537,1543 ****
    [(set (match_operand:SWI1248_AVX512BWDQ 0 "register_operand" "=k")
  	(any_lshift:SWI1248_AVX512BWDQ
  	  (match_operand:SWI1248_AVX512BWDQ 1 "register_operand" "k")
! 	  (match_operand:QI 2 "immediate_operand" "n")))
     (unspec [(const_int 0)] UNSPEC_MASKOP)]
    "TARGET_AVX512F"
    "k<mshift><mskmodesuffix>\t{%2, %1, %0|%0, %1, %2}"
--- 1537,1543 ----
    [(set (match_operand:SWI1248_AVX512BWDQ 0 "register_operand" "=k")
  	(any_lshift:SWI1248_AVX512BWDQ
  	  (match_operand:SWI1248_AVX512BWDQ 1 "register_operand" "k")
! 	  (match_operand 2 "const_0_to_255_operand" "n")))
     (unspec [(const_int 0)] UNSPEC_MASKOP)]
    "TARGET_AVX512F"
    "k<mshift><mskmodesuffix>\t{%2, %1, %0|%0, %1, %2}"
***************
*** 1908,1914 ****
    [(set (match_operand:VF1_128_256 0 "register_operand")
  	(unspec:VF1_128_256
  	  [(match_operand:VF1_128_256 1 "vector_operand")] UNSPEC_RSQRT))]
!   "TARGET_SSE_MATH"
  {
    ix86_emit_swsqrtsf (operands[0], operands[1], <MODE>mode, true);
    DONE;
--- 1908,1914 ----
    [(set (match_operand:VF1_128_256 0 "register_operand")
  	(unspec:VF1_128_256
  	  [(match_operand:VF1_128_256 1 "vector_operand")] UNSPEC_RSQRT))]
!   "TARGET_SSE && TARGET_SSE_MATH"
  {
    ix86_emit_swsqrtsf (operands[0], operands[1], <MODE>mode, true);
    DONE;
***************
*** 3075,3087 ****
  	  (match_operand:<avx512fmaskmode> 3 "register_operand")))]
    "TARGET_AVX512BW")
  
  (define_expand "vcond_mask_<mode><sseintvecmodelower>"
!   [(set (match_operand:VI_256 0 "register_operand")
! 	(vec_merge:VI_256
! 	  (match_operand:VI_256 1 "nonimmediate_operand")
! 	  (match_operand:VI_256 2 "vector_move_operand")
  	  (match_operand:<sseintvecmode> 3 "register_operand")))]
!   "TARGET_AVX2"
  {
    ix86_expand_sse_movcc (operands[0], operands[3],
  			 operands[1], operands[2]);
--- 3075,3093 ----
  	  (match_operand:<avx512fmaskmode> 3 "register_operand")))]
    "TARGET_AVX512BW")
  
+ ;; As vcondv4div4df and vcondv8siv8sf are enabled already with TARGET_AVX,
+ ;; and their condition can be folded late into a constant, we need to
+ ;; support vcond_mask_v4div4di and vcond_mask_v8siv8si for TARGET_AVX.
+ (define_mode_iterator VI_256_AVX2 [(V32QI "TARGET_AVX2") (V16HI "TARGET_AVX2")
+ 				   V8SI V4DI])
+ 
  (define_expand "vcond_mask_<mode><sseintvecmodelower>"
!   [(set (match_operand:VI_256_AVX2 0 "register_operand")
! 	(vec_merge:VI_256_AVX2
! 	  (match_operand:VI_256_AVX2 1 "nonimmediate_operand")
! 	  (match_operand:VI_256_AVX2 2 "vector_move_operand")
  	  (match_operand:<sseintvecmode> 3 "register_operand")))]
!   "TARGET_AVX"
  {
    ix86_expand_sse_movcc (operands[0], operands[3],
  			 operands[1], operands[2]);
***************
*** 7599,7611 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_expand "avx512vl_vextractf128<mode>"
    [(match_operand:<ssehalfvecmode> 0 "nonimmediate_operand")
!    (match_operand:VI48F_256 1 "register_operand")
     (match_operand:SI 2 "const_0_to_1_operand")
     (match_operand:<ssehalfvecmode> 3 "vector_move_operand")
     (match_operand:QI 4 "register_operand")]
!   "TARGET_AVX512DQ && TARGET_AVX512VL"
  {
    rtx (*insn)(rtx, rtx, rtx, rtx);
    rtx dest = operands[0];
--- 7605,7620 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
  
+ (define_mode_iterator VI48F_256_DQ
+   [V8SI V8SF (V4DI "TARGET_AVX512DQ") (V4DF "TARGET_AVX512DQ")])
+ 
  (define_expand "avx512vl_vextractf128<mode>"
    [(match_operand:<ssehalfvecmode> 0 "nonimmediate_operand")
!    (match_operand:VI48F_256_DQ 1 "register_operand")
     (match_operand:SI 2 "const_0_to_1_operand")
     (match_operand:<ssehalfvecmode> 3 "vector_move_operand")
     (match_operand:QI 4 "register_operand")]
!   "TARGET_AVX512VL"
  {
    rtx (*insn)(rtx, rtx, rtx, rtx);
    rtx dest = operands[0];
***************
*** 7673,7686 ****
                       (const_int 4) (const_int 5)
                       (const_int 6) (const_int 7)])))]
    "TARGET_AVX512F
!    && <mask_mode512bit_condition>
     && (<mask_applied> || !(MEM_P (operands[0]) && MEM_P (operands[1])))"
  {
    if (<mask_applied>
        || (!TARGET_AVX512VL
  	  && !REG_P (operands[0])
  	  && EXT_REX_SSE_REG_P (operands[1])))
!     return "vextract<shuffletype>32x8\t{$0x0, %1, %0<mask_operand2>|%0<mask_operand2>, %1, 0x0}";
    else
      return "#";
  }
--- 7682,7700 ----
                       (const_int 4) (const_int 5)
                       (const_int 6) (const_int 7)])))]
    "TARGET_AVX512F
!    && <mask_avx512dq_condition>
     && (<mask_applied> || !(MEM_P (operands[0]) && MEM_P (operands[1])))"
  {
    if (<mask_applied>
        || (!TARGET_AVX512VL
  	  && !REG_P (operands[0])
  	  && EXT_REX_SSE_REG_P (operands[1])))
!     {
!       if (TARGET_AVX512DQ)
! 	return "vextract<shuffletype>32x8\t{$0x0, %1, %0<mask_operand2>|%0<mask_operand2>, %1, 0x0}";
!       else
! 	return "vextract<shuffletype>64x4\t{$0x0, %1, %0|%0, %1, 0x0}";
!     }
    else
      return "#";
  }
***************
*** 7790,7796 ****
  	  (parallel [(const_int 0) (const_int 1)
  		     (const_int 2) (const_int 3)])))]
    "TARGET_AVX
!    && <mask_avx512vl_condition> && <mask_avx512dq_condition>
     && (<mask_applied> || !(MEM_P (operands[0]) && MEM_P (operands[1])))"
  {
    if (<mask_applied>)
--- 7804,7810 ----
  	  (parallel [(const_int 0) (const_int 1)
  		     (const_int 2) (const_int 3)])))]
    "TARGET_AVX
!    && <mask_avx512vl_condition>
     && (<mask_applied> || !(MEM_P (operands[0]) && MEM_P (operands[1])))"
  {
    if (<mask_applied>)
***************
*** 15172,15178 ****
      }
  })
  
! (define_insn "abs<mode>2"
    [(set (match_operand:MMXMODEI 0 "register_operand" "=y")
  	(abs:MMXMODEI
  	  (match_operand:MMXMODEI 1 "nonimmediate_operand" "ym")))]
--- 15186,15192 ----
      }
  })
  
! (define_insn "ssse3_abs<mode>2"
    [(set (match_operand:MMXMODEI 0 "register_operand" "=y")
  	(abs:MMXMODEI
  	  (match_operand:MMXMODEI 1 "nonimmediate_operand" "ym")))]
***************
*** 16271,16279 ****
      case 3:
        /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as
  	 gas changed what it requires incompatibly.  */
!       return "vgatherpf0<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}";
      case 2:
!       return "vgatherpf1<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}";
      default:
        gcc_unreachable ();
      }
--- 16285,16293 ----
      case 3:
        /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as
  	 gas changed what it requires incompatibly.  */
!       return "%M2vgatherpf0<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}";
      case 2:
!       return "%M2vgatherpf1<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}";
      default:
        gcc_unreachable ();
      }
***************
*** 16318,16326 ****
      case 3:
        /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as
  	 gas changed what it requires incompatibly.  */
!       return "vgatherpf0<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}";
      case 2:
!       return "vgatherpf1<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}";
      default:
        gcc_unreachable ();
      }
--- 16332,16340 ----
      case 3:
        /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as
  	 gas changed what it requires incompatibly.  */
!       return "%M2vgatherpf0<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}";
      case 2:
!       return "%M2vgatherpf1<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}";
      default:
        gcc_unreachable ();
      }
***************
*** 16366,16375 ****
      case 7:
        /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as
  	 gas changed what it requires incompatibly.  */
!       return "vscatterpf0<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}";
      case 2:
      case 6:
!       return "vscatterpf1<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}";
      default:
        gcc_unreachable ();
      }
--- 16380,16389 ----
      case 7:
        /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as
  	 gas changed what it requires incompatibly.  */
!       return "%M2vscatterpf0<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}";
      case 2:
      case 6:
!       return "%M2vscatterpf1<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}";
      default:
        gcc_unreachable ();
      }
***************
*** 16415,16424 ****
      case 7:
        /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as
  	 gas changed what it requires incompatibly.  */
!       return "vscatterpf0<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}";
      case 2:
      case 6:
!       return "vscatterpf1<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}";
      default:
        gcc_unreachable ();
      }
--- 16429,16438 ----
      case 7:
        /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as
  	 gas changed what it requires incompatibly.  */
!       return "%M2vscatterpf0<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}";
      case 2:
      case 6:
!       return "%M2vscatterpf1<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}";
      default:
        gcc_unreachable ();
      }
***************
*** 19157,19163 ****
  	  UNSPEC_GATHER))
     (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))]
    "TARGET_AVX2"
!   "v<sseintprefix>gatherd<ssemodesuffix>\t{%1, %7, %0|%0, %7, %1}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "vex")
     (set_attr "mode" "<sseinsnmode>")])
--- 19171,19177 ----
  	  UNSPEC_GATHER))
     (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))]
    "TARGET_AVX2"
!   "%M3v<sseintprefix>gatherd<ssemodesuffix>\t{%1, %7, %0|%0, %7, %1}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "vex")
     (set_attr "mode" "<sseinsnmode>")])
***************
*** 19177,19183 ****
  	  UNSPEC_GATHER))
     (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))]
    "TARGET_AVX2"
!   "v<sseintprefix>gatherd<ssemodesuffix>\t{%1, %6, %0|%0, %6, %1}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "vex")
     (set_attr "mode" "<sseinsnmode>")])
--- 19191,19197 ----
  	  UNSPEC_GATHER))
     (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))]
    "TARGET_AVX2"
!   "%M2v<sseintprefix>gatherd<ssemodesuffix>\t{%1, %6, %0|%0, %6, %1}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "vex")
     (set_attr "mode" "<sseinsnmode>")])
***************
*** 19218,19224 ****
  	  UNSPEC_GATHER))
     (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))]
    "TARGET_AVX2"
!   "v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %7, %2|%2, %7, %5}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "vex")
     (set_attr "mode" "<sseinsnmode>")])
--- 19232,19238 ----
  	  UNSPEC_GATHER))
     (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))]
    "TARGET_AVX2"
!   "%M3v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %7, %2|%2, %7, %5}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "vex")
     (set_attr "mode" "<sseinsnmode>")])
***************
*** 19240,19247 ****
    "TARGET_AVX2"
  {
    if (<MODE>mode != <VEC_GATHER_SRCDI>mode)
!     return "v<sseintprefix>gatherq<ssemodesuffix>\t{%4, %6, %x0|%x0, %6, %4}";
!   return "v<sseintprefix>gatherq<ssemodesuffix>\t{%4, %6, %0|%0, %6, %4}";
  }
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "vex")
--- 19254,19261 ----
    "TARGET_AVX2"
  {
    if (<MODE>mode != <VEC_GATHER_SRCDI>mode)
!     return "%M2v<sseintprefix>gatherq<ssemodesuffix>\t{%4, %6, %x0|%x0, %6, %4}";
!   return "%M2v<sseintprefix>gatherq<ssemodesuffix>\t{%4, %6, %0|%0, %6, %4}";
  }
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "vex")
***************
*** 19265,19271 ****
  		     (const_int 2) (const_int 3)])))
     (clobber (match_scratch:VI4F_256 1 "=&x"))]
    "TARGET_AVX2"
!   "v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %7, %0|%0, %7, %5}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "vex")
     (set_attr "mode" "<sseinsnmode>")])
--- 19279,19285 ----
  		     (const_int 2) (const_int 3)])))
     (clobber (match_scratch:VI4F_256 1 "=&x"))]
    "TARGET_AVX2"
!   "%M3v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %7, %0|%0, %7, %5}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "vex")
     (set_attr "mode" "<sseinsnmode>")])
***************
*** 19288,19294 ****
  		     (const_int 2) (const_int 3)])))
     (clobber (match_scratch:VI4F_256 1 "=&x"))]
    "TARGET_AVX2"
!   "v<sseintprefix>gatherq<ssemodesuffix>\t{%4, %6, %0|%0, %6, %4}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "vex")
     (set_attr "mode" "<sseinsnmode>")])
--- 19302,19308 ----
  		     (const_int 2) (const_int 3)])))
     (clobber (match_scratch:VI4F_256 1 "=&x"))]
    "TARGET_AVX2"
!   "%M2v<sseintprefix>gatherq<ssemodesuffix>\t{%4, %6, %0|%0, %6, %4}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "vex")
     (set_attr "mode" "<sseinsnmode>")])
***************
*** 19328,19334 ****
    "TARGET_AVX512F"
  ;; %X6 so that we don't emit any *WORD PTR for -masm=intel, as
  ;; gas changed what it requires incompatibly.
!   "v<sseintprefix>gatherd<ssemodesuffix>\t{%6, %0%{%2%}|%0%{%2%}, %X6}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
--- 19342,19348 ----
    "TARGET_AVX512F"
  ;; %X6 so that we don't emit any *WORD PTR for -masm=intel, as
  ;; gas changed what it requires incompatibly.
!   "%M4v<sseintprefix>gatherd<ssemodesuffix>\t{%6, %0%{%2%}|%0%{%2%}, %X6}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
***************
*** 19349,19355 ****
    "TARGET_AVX512F"
  ;; %X5 so that we don't emit any *WORD PTR for -masm=intel, as
  ;; gas changed what it requires incompatibly.
!   "v<sseintprefix>gatherd<ssemodesuffix>\t{%5, %0%{%1%}|%0%{%1%}, %X5}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
--- 19363,19369 ----
    "TARGET_AVX512F"
  ;; %X5 so that we don't emit any *WORD PTR for -masm=intel, as
  ;; gas changed what it requires incompatibly.
!   "%M3v<sseintprefix>gatherd<ssemodesuffix>\t{%5, %0%{%1%}|%0%{%1%}, %X5}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
***************
*** 19390,19396 ****
    "TARGET_AVX512F"
  ;; %X6 so that we don't emit any *WORD PTR for -masm=intel, as
  ;; gas changed what it requires incompatibly.
!   "v<sseintprefix>gatherq<ssemodesuffix>\t{%6, %1%{%2%}|%1%{%2%}, %X6}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
--- 19404,19410 ----
    "TARGET_AVX512F"
  ;; %X6 so that we don't emit any *WORD PTR for -masm=intel, as
  ;; gas changed what it requires incompatibly.
!   "%M4v<sseintprefix>gatherq<ssemodesuffix>\t{%6, %1%{%2%}|%1%{%2%}, %X6}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
***************
*** 19415,19425 ****
    if (<MODE>mode != <VEC_GATHER_SRCDI>mode)
      {
        if (<MODE_SIZE> != 64)
! 	return "v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %x0%{%1%}|%x0%{%1%}, %X5}";
        else
! 	return "v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %t0%{%1%}|%t0%{%1%}, %X5}";
      }
!   return "v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %0%{%1%}|%0%{%1%}, %X5}";
  }
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
--- 19429,19439 ----
    if (<MODE>mode != <VEC_GATHER_SRCDI>mode)
      {
        if (<MODE_SIZE> != 64)
! 	return "%M3v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %x0%{%1%}|%x0%{%1%}, %X5}";
        else
! 	return "%M3v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %t0%{%1%}|%t0%{%1%}, %X5}";
      }
!   return "%M3v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %0%{%1%}|%0%{%1%}, %X5}";
  }
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
***************
*** 19458,19464 ****
    "TARGET_AVX512F"
  ;; %X5 so that we don't emit any *WORD PTR for -masm=intel, as
  ;; gas changed what it requires incompatibly.
!   "v<sseintprefix>scatterd<ssemodesuffix>\t{%3, %5%{%1%}|%X5%{%1%}, %3}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
--- 19472,19478 ----
    "TARGET_AVX512F"
  ;; %X5 so that we don't emit any *WORD PTR for -masm=intel, as
  ;; gas changed what it requires incompatibly.
!   "%M0v<sseintprefix>scatterd<ssemodesuffix>\t{%3, %5%{%1%}|%X5%{%1%}, %3}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
***************
*** 19496,19502 ****
    "TARGET_AVX512F"
  ;; %X5 so that we don't emit any *WORD PTR for -masm=intel, as
  ;; gas changed what it requires incompatibly.
!   "v<sseintprefix>scatterq<ssemodesuffix>\t{%3, %5%{%1%}|%X5%{%1%}, %3}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
--- 19510,19516 ----
    "TARGET_AVX512F"
  ;; %X5 so that we don't emit any *WORD PTR for -masm=intel, as
  ;; gas changed what it requires incompatibly.
!   "%M0v<sseintprefix>scatterq<ssemodesuffix>\t{%3, %5%{%1%}|%X5%{%1%}, %3}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
***************
*** 19636,19642 ****
    [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=Yk")
            (unspec:<avx512fmaskmode>
              [(match_operand:VF_AVX512VL 1 "register_operand" "v")
!              (match_operand:QI 2 "const_0_to_255_operand" "n")]
               UNSPEC_FPCLASS))]
     "TARGET_AVX512DQ"
     "vfpclass<ssemodesuffix>\t{%2, %1, %0<mask_scalar_merge_operand3>|%0<mask_scalar_merge_operand3>, %1, %2}";
--- 19650,19656 ----
    [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=Yk")
            (unspec:<avx512fmaskmode>
              [(match_operand:VF_AVX512VL 1 "register_operand" "v")
!              (match_operand 2 "const_0_to_255_operand" "n")]
               UNSPEC_FPCLASS))]
     "TARGET_AVX512DQ"
     "vfpclass<ssemodesuffix>\t{%2, %1, %0<mask_scalar_merge_operand3>|%0<mask_scalar_merge_operand3>, %1, %2}";
***************
*** 19650,19656 ****
  	(and:<avx512fmaskmode>
  	  (unspec:<avx512fmaskmode>
  	    [(match_operand:VF_128 1 "register_operand" "v")
!              (match_operand:QI 2 "const_0_to_255_operand" "n")]
  	    UNSPEC_FPCLASS)
  	  (const_int 1)))]
     "TARGET_AVX512DQ"
--- 19664,19670 ----
  	(and:<avx512fmaskmode>
  	  (unspec:<avx512fmaskmode>
  	    [(match_operand:VF_128 1 "register_operand" "v")
!              (match_operand 2 "const_0_to_255_operand" "n")]
  	    UNSPEC_FPCLASS)
  	  (const_int 1)))]
     "TARGET_AVX512DQ"
***************
*** 20255,20261 ****
  	(unspec:VI1_AVX512F
  	  [(match_operand:VI1_AVX512F 1 "register_operand" "%0,x,v")
  	   (match_operand:VI1_AVX512F 2 "nonimmediate_operand" "xBm,xm,vm")
! 	   (match_operand:QI 3 "const_0_to_255_operand" "n,n,n")]
  	  UNSPEC_GF2P8AFFINEINV))]
    "TARGET_GFNI"
    "@
--- 20269,20275 ----
  	(unspec:VI1_AVX512F
  	  [(match_operand:VI1_AVX512F 1 "register_operand" "%0,x,v")
  	   (match_operand:VI1_AVX512F 2 "nonimmediate_operand" "xBm,xm,vm")
! 	   (match_operand 3 "const_0_to_255_operand" "n,n,n")]
  	  UNSPEC_GF2P8AFFINEINV))]
    "TARGET_GFNI"
    "@
***************
*** 20273,20279 ****
  	(unspec:VI1_AVX512F
  	  [(match_operand:VI1_AVX512F 1 "register_operand" "%0,x,v")
  	   (match_operand:VI1_AVX512F 2 "nonimmediate_operand" "xBm,xm,vm")
! 	   (match_operand:QI 3 "const_0_to_255_operand" "n,n,n")]
  	  UNSPEC_GF2P8AFFINE))]
    "TARGET_GFNI"
    "@
--- 20287,20293 ----
  	(unspec:VI1_AVX512F
  	  [(match_operand:VI1_AVX512F 1 "register_operand" "%0,x,v")
  	   (match_operand:VI1_AVX512F 2 "nonimmediate_operand" "xBm,xm,vm")
! 	   (match_operand 3 "const_0_to_255_operand" "n,n,n")]
  	  UNSPEC_GF2P8AFFINE))]
    "TARGET_GFNI"
    "@
diff -Nrcpad gcc-8.3.0/gcc/config/i386/t-darwin gcc-8.4.0/gcc/config/i386/t-darwin
*** gcc-8.3.0/gcc/config/i386/t-darwin	Wed Nov  2 15:23:48 2011
--- gcc-8.4.0/gcc/config/i386/t-darwin	Thu Jan  1 00:00:00 1970
***************
*** 1,2 ****
- MULTILIB_OPTIONS = m64
- MULTILIB_DIRNAMES = x86_64
--- 0 ----
diff -Nrcpad gcc-8.3.0/gcc/config/i386/t-darwin32-biarch gcc-8.4.0/gcc/config/i386/t-darwin32-biarch
*** gcc-8.3.0/gcc/config/i386/t-darwin32-biarch	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/config/i386/t-darwin32-biarch	Wed Mar  4 08:30:00 2020
***************
*** 0 ****
--- 1,2 ----
+ MULTILIB_OPTIONS = m64
+ MULTILIB_DIRNAMES = x86_64
diff -Nrcpad gcc-8.3.0/gcc/config/i386/t-darwin64 gcc-8.4.0/gcc/config/i386/t-darwin64
*** gcc-8.3.0/gcc/config/i386/t-darwin64	Wed Nov  2 15:23:48 2011
--- gcc-8.4.0/gcc/config/i386/t-darwin64	Thu Jan  1 00:00:00 1970
***************
*** 1,2 ****
- MULTILIB_OPTIONS = m32
- MULTILIB_DIRNAMES = i386
--- 0 ----
diff -Nrcpad gcc-8.3.0/gcc/config/i386/t-darwin64-biarch gcc-8.4.0/gcc/config/i386/t-darwin64-biarch
*** gcc-8.3.0/gcc/config/i386/t-darwin64-biarch	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/config/i386/t-darwin64-biarch	Wed Mar  4 08:30:00 2020
***************
*** 0 ****
--- 1,2 ----
+ MULTILIB_OPTIONS = m32
+ MULTILIB_DIRNAMES = i386
diff -Nrcpad gcc-8.3.0/gcc/config/i386/t-freebsd64 gcc-8.4.0/gcc/config/i386/t-freebsd64
*** gcc-8.3.0/gcc/config/i386/t-freebsd64	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/config/i386/t-freebsd64	Wed Mar  4 08:30:00 2020
***************
*** 0 ****
--- 1,30 ----
+ # Copyright (C) 2019 Free Software Foundation, Inc.
+ #
+ # This file is part of GCC.
+ #
+ # GCC is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 3, or (at your option)
+ # any later version.
+ #
+ # GCC is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING3.  If not see
+ # <http://www.gnu.org/licenses/>.
+ 
+ # The 32-bit libraries are found in /usr/lib32
+ 
+ # To support i386 and x86-64, the directory structrue
+ # should be:
+ #
+ # 	/lib has x86-64 libraries.
+ # 	/lib32 has i386 libraries.
+ #
+ 
+ MULTILIB_OPTIONS    = m32
+ MULTILIB_DIRNAMES   = 32
+ MULTILIB_OSDIRNAMES = ../lib32
diff -Nrcpad gcc-8.3.0/gcc/config/mips/mips.c gcc-8.4.0/gcc/config/mips/mips.c
*** gcc-8.3.0/gcc/config/mips/mips.c	Thu Mar  1 11:37:35 2018
--- gcc-8.4.0/gcc/config/mips/mips.c	Wed Mar  4 08:30:00 2020
*************** mips_dwarf_frame_reg_mode (int regno)
*** 9532,9538 ****
  {
    machine_mode mode = default_dwarf_frame_reg_mode (regno);
  
!   if (FP_REG_P (regno) && mips_abi == ABI_32 && TARGET_FLOAT64)
      mode = SImode;
  
    return mode;
--- 9532,9538 ----
  {
    machine_mode mode = default_dwarf_frame_reg_mode (regno);
  
!   if (FP_REG_P (regno) && mips_abi == ABI_32 && !TARGET_FLOAT32)
      mode = SImode;
  
    return mode;
*************** mips_expand_builtin_insn (enum insn_code
*** 16788,16793 ****
--- 16788,16806 ----
        std::swap (ops[1], ops[2]);
        break;
  
+     case CODE_FOR_msa_maddv_b:
+     case CODE_FOR_msa_maddv_h:
+     case CODE_FOR_msa_maddv_w:
+     case CODE_FOR_msa_maddv_d:
+     case CODE_FOR_msa_fmadd_w:
+     case CODE_FOR_msa_fmadd_d:
+     case CODE_FOR_msa_fmsub_w:
+     case CODE_FOR_msa_fmsub_d:
+       /* fma(a, b, c) results into (a * b + c), however builtin_msa_fmadd expects
+ 	 it to be (a + b * c).  Swap the 1st and 3rd operands.  */
+       std::swap (ops[1], ops[3]);
+       break;
+ 
      case CODE_FOR_msa_slli_b:
      case CODE_FOR_msa_slli_h:
      case CODE_FOR_msa_slli_w:
diff -Nrcpad gcc-8.3.0/gcc/config/mips/mips.md gcc-8.4.0/gcc/config/mips/mips.md
*** gcc-8.3.0/gcc/config/mips/mips.md	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/mips/mips.md	Wed Mar  4 08:30:00 2020
***************
*** 5772,5779 ****
    "ISA_HAS_ROR"
  {
    if (CONST_INT_P (operands[2]))
!     gcc_assert (INTVAL (operands[2]) >= 0
! 		&& INTVAL (operands[2]) < GET_MODE_BITSIZE (<MODE>mode));
  
    return "<d>ror\t%0,%1,%2";
  }
--- 5772,5779 ----
    "ISA_HAS_ROR"
  {
    if (CONST_INT_P (operands[2]))
!     operands[2] = GEN_INT (INTVAL (operands[2])
!                            & (GET_MODE_BITSIZE (<MODE>mode) - 1));
  
    return "<d>ror\t%0,%1,%2";
  }
***************
*** 7502,7508 ****
  ;; __builtin_mips_get_fcsr: move the FCSR into operand 0.
  (define_expand "mips_get_fcsr"
    [(set (match_operand:SI 0 "register_operand")
!   	(unspec_volatile [(const_int 0)] UNSPEC_GET_FCSR))]
    "TARGET_HARD_FLOAT_ABI"
  {
    if (TARGET_MIPS16)
--- 7502,7508 ----
  ;; __builtin_mips_get_fcsr: move the FCSR into operand 0.
  (define_expand "mips_get_fcsr"
    [(set (match_operand:SI 0 "register_operand")
!        (unspec_volatile:SI [(const_int 0)] UNSPEC_GET_FCSR))]
    "TARGET_HARD_FLOAT_ABI"
  {
    if (TARGET_MIPS16)
***************
*** 7514,7520 ****
  
  (define_insn "*mips_get_fcsr"
    [(set (match_operand:SI 0 "register_operand" "=d")
!   	(unspec_volatile [(const_int 0)] UNSPEC_GET_FCSR))]
    "TARGET_HARD_FLOAT"
    "cfc1\t%0,$31")
  
--- 7514,7520 ----
  
  (define_insn "*mips_get_fcsr"
    [(set (match_operand:SI 0 "register_operand" "=d")
!        (unspec_volatile:SI [(const_int 0)] UNSPEC_GET_FCSR))]
    "TARGET_HARD_FLOAT"
    "cfc1\t%0,$31")
  
diff -Nrcpad gcc-8.3.0/gcc/config/nvptx/nvptx.c gcc-8.4.0/gcc/config/nvptx/nvptx.c
*** gcc-8.3.0/gcc/config/nvptx/nvptx.c	Fri Apr 20 13:46:07 2018
--- gcc-8.4.0/gcc/config/nvptx/nvptx.c	Wed Mar  4 08:30:00 2020
*************** nvptx_output_softstack_switch (FILE *fil
*** 1377,1383 ****
        fputs (";\n", file);
        if (!CONST_INT_P (size) || UINTVAL (align) > GET_MODE_SIZE (DImode))
  	fprintf (file,
! 		 "\t\tand.u%d %%r%d, %%r%d, -" HOST_WIDE_INT_PRINT_DEC ";\n",
  		 bits, regno, regno, UINTVAL (align));
      }
    if (cfun->machine->has_softstack)
--- 1377,1383 ----
        fputs (";\n", file);
        if (!CONST_INT_P (size) || UINTVAL (align) > GET_MODE_SIZE (DImode))
  	fprintf (file,
! 		 "\t\tand.b%d %%r%d, %%r%d, -" HOST_WIDE_INT_PRINT_DEC ";\n",
  		 bits, regno, regno, UINTVAL (align));
      }
    if (cfun->machine->has_softstack)
diff -Nrcpad gcc-8.3.0/gcc/config/pa/pa-linux.h gcc-8.4.0/gcc/config/pa/pa-linux.h
*** gcc-8.3.0/gcc/config/pa/pa-linux.h	Sun May 27 21:54:27 2018
--- gcc-8.4.0/gcc/config/pa/pa-linux.h	Wed Mar  4 08:30:00 2020
*************** along with GCC; see the file COPYING3.
*** 101,107 ****
  
  /* FIXME: Hacked from the <elfos.h> one so that we avoid multiple
     labels in a function declaration (since pa.c seems determined to do
!    it differently)  */
  
  #undef ASM_DECLARE_FUNCTION_NAME
  #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL)		\
--- 101,107 ----
  
  /* FIXME: Hacked from the <elfos.h> one so that we avoid multiple
     labels in a function declaration (since pa.c seems determined to do
!    it differently).  */
  
  #undef ASM_DECLARE_FUNCTION_NAME
  #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL)		\
*************** along with GCC; see the file COPYING3.
*** 109,117 ****
--- 109,122 ----
      {								\
        ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function");	\
        ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL));		\
+       pa_output_function_label (FILE);				\
      }								\
    while (0)
  
+ /* Output function prologue for linux.  */
+ #undef TARGET_ASM_FUNCTION_PROLOGUE
+ #define TARGET_ASM_FUNCTION_PROLOGUE pa_linux_output_function_prologue
+ 
  /* As well as globalizing the label, we need to encode the label
     to ensure a plabel is generated in an indirect call.  */
  
diff -Nrcpad gcc-8.3.0/gcc/config/pa/pa-protos.h gcc-8.4.0/gcc/config/pa/pa-protos.h
*** gcc-8.3.0/gcc/config/pa/pa-protos.h	Tue Jan 16 14:47:49 2018
--- gcc-8.4.0/gcc/config/pa/pa-protos.h	Wed Mar  4 08:30:00 2020
*************** extern void pa_asm_output_aligned_local
*** 108,112 ****
--- 108,113 ----
  extern void pa_hpux_asm_output_external (FILE *, tree, const char *);
  extern HOST_WIDE_INT pa_initial_elimination_offset (int, int);
  extern HOST_WIDE_INT pa_function_arg_size (machine_mode, const_tree);
+ extern void pa_output_function_label (FILE *);
  
  extern const int pa_magic_milli[];
diff -Nrcpad gcc-8.3.0/gcc/config/pa/pa.c gcc-8.4.0/gcc/config/pa/pa.c
*** gcc-8.3.0/gcc/config/pa/pa.c	Sun Jul 29 15:54:08 2018
--- gcc-8.4.0/gcc/config/pa/pa.c	Wed Mar  4 08:30:00 2020
*************** static void set_reg_plus_d (int, int, HO
*** 118,128 ****
  static rtx pa_function_value (const_tree, const_tree, bool);
  static rtx pa_libcall_value (machine_mode, const_rtx);
  static bool pa_function_value_regno_p (const unsigned int);
! static void pa_output_function_prologue (FILE *);
  static void update_total_code_bytes (unsigned int);
  static void pa_output_function_epilogue (FILE *);
  static int pa_adjust_cost (rtx_insn *, int, rtx_insn *, int, unsigned int);
- static int pa_adjust_priority (rtx_insn *, int);
  static int pa_issue_rate (void);
  static int pa_reloc_rw_mask (void);
  static void pa_som_asm_init_sections (void) ATTRIBUTE_UNUSED;
--- 118,128 ----
  static rtx pa_function_value (const_tree, const_tree, bool);
  static rtx pa_libcall_value (machine_mode, const_rtx);
  static bool pa_function_value_regno_p (const unsigned int);
! static void pa_output_function_prologue (FILE *) ATTRIBUTE_UNUSED;
! static void pa_linux_output_function_prologue (FILE *) ATTRIBUTE_UNUSED;
  static void update_total_code_bytes (unsigned int);
  static void pa_output_function_epilogue (FILE *);
  static int pa_adjust_cost (rtx_insn *, int, rtx_insn *, int, unsigned int);
  static int pa_issue_rate (void);
  static int pa_reloc_rw_mask (void);
  static void pa_som_asm_init_sections (void) ATTRIBUTE_UNUSED;
*************** static size_t n_deferred_plabels = 0;
*** 263,270 ****
  #undef TARGET_ASM_INTEGER
  #define TARGET_ASM_INTEGER pa_assemble_integer
  
- #undef TARGET_ASM_FUNCTION_PROLOGUE
- #define TARGET_ASM_FUNCTION_PROLOGUE pa_output_function_prologue
  #undef TARGET_ASM_FUNCTION_EPILOGUE
  #define TARGET_ASM_FUNCTION_EPILOGUE pa_output_function_epilogue
  
--- 263,268 ----
*************** static size_t n_deferred_plabels = 0;
*** 280,287 ****
  
  #undef TARGET_SCHED_ADJUST_COST
  #define TARGET_SCHED_ADJUST_COST pa_adjust_cost
- #undef TARGET_SCHED_ADJUST_PRIORITY
- #define TARGET_SCHED_ADJUST_PRIORITY pa_adjust_priority
  #undef TARGET_SCHED_ISSUE_RATE
  #define TARGET_SCHED_ISSUE_RATE pa_issue_rate
  
--- 278,283 ----
*************** pa_compute_frame_size (poly_int64 size,
*** 3842,3857 ****
  	  & ~(PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT - 1));
  }
  
! /* On HP-PA, move-double insns between fpu and cpu need an 8-byte block
!    of memory.  If any fpu reg is used in the function, we allocate
!    such a block here, at the bottom of the frame, just in case it's needed.
! 
!    If this function is a leaf procedure, then we may choose not
!    to do a "save" insn.  The decision about whether or not
!    to do this is made in regclass.c.  */
  
! static void
! pa_output_function_prologue (FILE *file)
  {
    /* The function's label and associated .PROC must never be
       separated and must be output *after* any profiling declarations
--- 3838,3847 ----
  	  & ~(PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT - 1));
  }
  
! /* Output function label, and associated .PROC and .CALLINFO statements.  */
  
! void
! pa_output_function_label (FILE *file)
  {
    /* The function's label and associated .PROC must never be
       separated and must be output *after* any profiling declarations
*************** pa_output_function_prologue (FILE *file)
*** 3897,3903 ****
--- 3887,3908 ----
      fprintf (file, ",ENTRY_FR=%d", fr_saved + 11);
  
    fputs ("\n\t.ENTRY\n", file);
+ }
+ 
+ /* Output function prologue.  */
+ 
+ static void
+ pa_output_function_prologue (FILE *file)
+ {
+   pa_output_function_label (file);
+   remove_useless_addtr_insns (0);
+ }
  
+ /* The label is output by ASM_DECLARE_FUNCTION_NAME on linux.  */
+ 
+ static void
+ pa_linux_output_function_prologue (FILE *file ATTRIBUTE_UNUSED)
+ {
    remove_useless_addtr_insns (0);
  }
  
*************** output_deferred_profile_counters (void)
*** 4569,4578 ****
  void
  hppa_profile_hook (int label_no)
  {
-   /* We use SImode for the address of the function in both 32 and
-      64-bit code to avoid having to provide DImode versions of the
-      lcla2 and load_offset_label_address insn patterns.  */
-   rtx reg = gen_reg_rtx (SImode);
    rtx_code_label *label_rtx = gen_label_rtx ();
    int reg_parm_stack_space = REG_PARM_STACK_SPACE (NULL_TREE);
    rtx arg_bytes, begin_label_rtx, mcount, sym;
--- 4574,4579 ----
*************** hppa_profile_hook (int label_no)
*** 4604,4621 ****
    if (!use_mcount_pcrel_call)
      {
        /* The address of the function is loaded into %r25 with an instruction-
! 	 relative sequence that avoids the use of relocations.  The sequence
! 	 is split so that the load_offset_label_address instruction can
! 	 occupy the delay slot of the call to _mcount.  */
        if (TARGET_PA_20)
! 	emit_insn (gen_lcla2 (reg, label_rtx));
        else
! 	emit_insn (gen_lcla1 (reg, label_rtx));
! 
!       emit_insn (gen_load_offset_label_address (gen_rtx_REG (SImode, 25), 
! 						reg,
! 						begin_label_rtx,
! 						label_rtx));
      }
  
    if (!NO_DEFERRED_PROFILE_COUNTERS)
--- 4605,4617 ----
    if (!use_mcount_pcrel_call)
      {
        /* The address of the function is loaded into %r25 with an instruction-
! 	 relative sequence that avoids the use of relocations.  We use SImode
! 	 for the address of the function in both 32 and 64-bit code to avoid
! 	 having to provide DImode versions of the lcla2 pattern.  */
        if (TARGET_PA_20)
! 	emit_insn (gen_lcla2 (gen_rtx_REG (SImode, 25), label_rtx));
        else
! 	emit_insn (gen_lcla1 (gen_rtx_REG (SImode, 25), label_rtx));
      }
  
    if (!NO_DEFERRED_PROFILE_COUNTERS)
*************** pa_adjust_cost (rtx_insn *insn, int dep_
*** 4992,5028 ****
      }
  }
  
- /* Adjust scheduling priorities.  We use this to try and keep addil
-    and the next use of %r1 close together.  */
- static int
- pa_adjust_priority (rtx_insn *insn, int priority)
- {
-   rtx set = single_set (insn);
-   rtx src, dest;
-   if (set)
-     {
-       src = SET_SRC (set);
-       dest = SET_DEST (set);
-       if (GET_CODE (src) == LO_SUM
- 	  && symbolic_operand (XEXP (src, 1), VOIDmode)
- 	  && ! read_only_operand (XEXP (src, 1), VOIDmode))
- 	priority >>= 3;
- 
-       else if (GET_CODE (src) == MEM
- 	       && GET_CODE (XEXP (src, 0)) == LO_SUM
- 	       && symbolic_operand (XEXP (XEXP (src, 0), 1), VOIDmode)
- 	       && ! read_only_operand (XEXP (XEXP (src, 0), 1), VOIDmode))
- 	priority >>= 1;
- 
-       else if (GET_CODE (dest) == MEM
- 	       && GET_CODE (XEXP (dest, 0)) == LO_SUM
- 	       && symbolic_operand (XEXP (XEXP (dest, 0), 1), VOIDmode)
- 	       && ! read_only_operand (XEXP (XEXP (dest, 0), 1), VOIDmode))
- 	priority >>= 3;
-     }
-   return priority;
- }
- 
  /* The 700 can only issue a single insn at a time.
     The 7XXX processors can issue two insns at a time.
     The 8000 can issue 4 insns at a time.  */
--- 4988,4993 ----
*************** pa_attr_length_call (rtx_insn *insn, int
*** 7888,7894 ****
  
    /* 64-bit plabel sequence.  */
    else if (TARGET_64BIT && !local_call)
!     length += sibcall ? 28 : 24;
  
    /* non-pic long absolute branch sequence.  */
    else if ((TARGET_LONG_ABS_CALL || local_call) && !flag_pic)
--- 7853,7859 ----
  
    /* 64-bit plabel sequence.  */
    else if (TARGET_64BIT && !local_call)
!     length += 24;
  
    /* non-pic long absolute branch sequence.  */
    else if ((TARGET_LONG_ABS_CALL || local_call) && !flag_pic)
*************** pa_output_call (rtx_insn *insn, rtx call
*** 7960,7997 ****
  	  xoperands[0] = pa_get_deferred_plabel (call_dest);
  	  xoperands[1] = gen_label_rtx ();
  
! 	  /* If this isn't a sibcall, we put the load of %r27 into the
! 	     delay slot.  We can't do this in a sibcall as we don't
! 	     have a second call-clobbered scratch register available.
! 	     We don't need to do anything when generating fast indirect
! 	     calls.  */
! 	  if (seq_length != 0 && !sibcall)
  	    {
  	      final_scan_insn (NEXT_INSN (insn), asm_out_file,
  			       optimize, 0, NULL);
  
  	      /* Now delete the delay insn.  */
  	      SET_INSN_DELETED (NEXT_INSN (insn));
- 	      seq_length = 0;
  	    }
  
  	  output_asm_insn ("addil LT'%0,%%r27", xoperands);
  	  output_asm_insn ("ldd RT'%0(%%r1),%%r1", xoperands);
  	  output_asm_insn ("ldd 0(%%r1),%%r1", xoperands);
! 
! 	  if (sibcall)
! 	    {
! 	      output_asm_insn ("ldd 24(%%r1),%%r27", xoperands);
! 	      output_asm_insn ("ldd 16(%%r1),%%r1", xoperands);
! 	      output_asm_insn ("bve (%%r1)", xoperands);
! 	    }
! 	  else
! 	    {
! 	      output_asm_insn ("ldd 16(%%r1),%%r2", xoperands);
! 	      output_asm_insn ("bve,l (%%r2),%%r2", xoperands);
! 	      output_asm_insn ("ldd 24(%%r1),%%r27", xoperands);
! 	      seq_length = 1;
! 	    }
  	}
        else
  	{
--- 7925,7948 ----
  	  xoperands[0] = pa_get_deferred_plabel (call_dest);
  	  xoperands[1] = gen_label_rtx ();
  
! 	  /* Put the load of %r27 into the delay slot.  We don't need to
! 	     do anything when generating fast indirect calls.  */
! 	  if (seq_length != 0)
  	    {
  	      final_scan_insn (NEXT_INSN (insn), asm_out_file,
  			       optimize, 0, NULL);
  
  	      /* Now delete the delay insn.  */
  	      SET_INSN_DELETED (NEXT_INSN (insn));
  	    }
  
  	  output_asm_insn ("addil LT'%0,%%r27", xoperands);
  	  output_asm_insn ("ldd RT'%0(%%r1),%%r1", xoperands);
  	  output_asm_insn ("ldd 0(%%r1),%%r1", xoperands);
! 	  output_asm_insn ("ldd 16(%%r1),%%r2", xoperands);
! 	  output_asm_insn ("bve,l (%%r2),%%r2", xoperands);
! 	  output_asm_insn ("ldd 24(%%r1),%%r27", xoperands);
! 	  seq_length = 1;
  	}
        else
  	{
*************** pa_output_call (rtx_insn *insn, rtx call
*** 8084,8103 ****
  		    {
  		      output_asm_insn ("addil LT'%0,%%r19", xoperands);
  		      output_asm_insn ("ldw RT'%0(%%r1),%%r1", xoperands);
! 		      output_asm_insn ("ldw 0(%%r1),%%r1", xoperands);
  		    }
  		  else
  		    {
  		      output_asm_insn ("addil LR'%0-$global$,%%r27",
  				       xoperands);
! 		      output_asm_insn ("ldw RR'%0-$global$(%%r1),%%r1",
  				       xoperands);
  		    }
  
! 		  output_asm_insn ("bb,>=,n %%r1,30,.+16", xoperands);
! 		  output_asm_insn ("depi 0,31,2,%%r1", xoperands);
! 		  output_asm_insn ("ldw 4(%%sr0,%%r1),%%r19", xoperands);
! 		  output_asm_insn ("ldw 0(%%sr0,%%r1),%%r1", xoperands);
  
  		  if (!sibcall && !TARGET_PA_20)
  		    {
--- 8035,8056 ----
  		    {
  		      output_asm_insn ("addil LT'%0,%%r19", xoperands);
  		      output_asm_insn ("ldw RT'%0(%%r1),%%r1", xoperands);
! 		      output_asm_insn ("ldw 0(%%r1),%%r22", xoperands);
  		    }
  		  else
  		    {
  		      output_asm_insn ("addil LR'%0-$global$,%%r27",
  				       xoperands);
! 		      output_asm_insn ("ldw RR'%0-$global$(%%r1),%%r22",
  				       xoperands);
  		    }
  
! 		  output_asm_insn ("bb,>=,n %%r22,30,.+16", xoperands);
! 		  output_asm_insn ("depi 0,31,2,%%r22", xoperands);
! 		  /* Should this be an ordered load to ensure the target
! 	             address is loaded before the global pointer?  */
! 		  output_asm_insn ("ldw 0(%%r22),%%r1", xoperands);
! 		  output_asm_insn ("ldw 4(%%r22),%%r19", xoperands);
  
  		  if (!sibcall && !TARGET_PA_20)
  		    {
*************** pa_attr_length_indirect_call (rtx_insn *
*** 8190,8199 ****
    if (TARGET_PORTABLE_RUNTIME)
      return 16;
  
-   /* Inline version of $$dyncall.  */
-   if ((TARGET_NO_SPACE_REGS || TARGET_PA_20) && !optimize_size)
-     return 20;
- 
    if (!TARGET_LONG_CALLS
        && ((TARGET_PA_20 && !TARGET_SOM && distance < 7600000)
  	  || distance < MAX_PCREL17F_OFFSET))
--- 8143,8148 ----
*************** pa_attr_length_indirect_call (rtx_insn *
*** 8203,8214 ****
    if (!flag_pic)
      return 12;
  
!   /* Inline version of $$dyncall.  */
!   if (TARGET_NO_SPACE_REGS || TARGET_PA_20)
!     return 20;
! 
    if (!optimize_size)
!     return 36;
  
    /* Long PIC pc-relative call.  */
    return 20;
--- 8152,8166 ----
    if (!flag_pic)
      return 12;
  
!   /* Inline versions of $$dyncall.  */
    if (!optimize_size)
!     {
!       if (TARGET_NO_SPACE_REGS)
! 	return 28;
! 
!       if (TARGET_PA_20)
! 	return 32;
!     }
  
    /* Long PIC pc-relative call.  */
    return 20;
*************** pa_output_indirect_call (rtx_insn *insn,
*** 8246,8267 ****
        return "blr %%r0,%%r2\n\tbv,n %%r0(%%r31)";
      }
  
-   /* Maybe emit a fast inline version of $$dyncall.  */
-   if ((TARGET_NO_SPACE_REGS || TARGET_PA_20) && !optimize_size)
-     {
-       output_asm_insn ("bb,>=,n %%r22,30,.+12\n\t"
- 		       "ldw 2(%%r22),%%r19\n\t"
- 		       "ldw -2(%%r22),%%r22", xoperands);
-       pa_output_arg_descriptor (insn);
-       if (TARGET_NO_SPACE_REGS)
- 	{
- 	  if (TARGET_PA_20)
- 	    return "bve,l,n (%%r22),%%r2\n\tnop";
- 	  return "ble 0(%%sr4,%%r22)\n\tcopy %%r31,%%r2";
- 	}
-       return "bve,l (%%r22),%%r2\n\tstw %%r2,-24(%%sp)";
-     }
- 
    /* Now the normal case -- we can reach $$dyncall directly or
       we're sure that we can get there via a long-branch stub. 
  
--- 8198,8203 ----
*************** pa_output_indirect_call (rtx_insn *insn,
*** 8290,8324 ****
        return "ble R'$$dyncall(%%sr4,%%r2)\n\tcopy %%r31,%%r2";
      }
  
!   /* Maybe emit a fast inline version of $$dyncall.  The long PIC
!      pc-relative call sequence is five instructions.  The inline PA 2.0
!      version of $$dyncall is also five instructions.  The PA 1.X versions
!      are longer but still an overall win.  */
!   if (TARGET_NO_SPACE_REGS || TARGET_PA_20 || !optimize_size)
      {
-       output_asm_insn ("bb,>=,n %%r22,30,.+12\n\t"
- 		       "ldw 2(%%r22),%%r19\n\t"
- 		       "ldw -2(%%r22),%%r22", xoperands);
        if (TARGET_NO_SPACE_REGS)
  	{
  	  pa_output_arg_descriptor (insn);
! 	  if (TARGET_PA_20)
! 	    return "bve,l,n (%%r22),%%r2\n\tnop";
! 	  return "ble 0(%%sr4,%%r22)\n\tcopy %%r31,%%r2";
  	}
        if (TARGET_PA_20)
  	{
  	  pa_output_arg_descriptor (insn);
! 	  return "bve,l (%%r22),%%r2\n\tstw %%r2,-24(%%sp)";
  	}
-       output_asm_insn ("bl .+8,%%r2\n\t"
- 		       "ldo 16(%%r2),%%r2\n\t"
- 		       "ldsid (%%r22),%%r1\n\t"
- 		       "mtsp %%r1,%%sr0", xoperands);
-       pa_output_arg_descriptor (insn);
-       return "be 0(%%sr0,%%r22)\n\tstw %%r2,-24(%%sp)";
      }
!  
    /* We need a long PIC call to $$dyncall.  */
    xoperands[0] = gen_rtx_SYMBOL_REF (Pmode, "$$dyncall");
    xoperands[1] = gen_rtx_REG (Pmode, 2);
--- 8226,8265 ----
        return "ble R'$$dyncall(%%sr4,%%r2)\n\tcopy %%r31,%%r2";
      }
  
!   /* The long PIC pc-relative call sequence is five instructions.  So,
!      let's use an inline version of $$dyncall when the calling sequence
!      has a roughly similar number of instructions and we are not optimizing
!      for size.  We need two instructions to load the return pointer plus
!      the $$dyncall implementation.  */
!   if (!optimize_size)
      {
        if (TARGET_NO_SPACE_REGS)
  	{
  	  pa_output_arg_descriptor (insn);
! 	  output_asm_insn ("bl .+8,%%r2\n\t"
! 			   "ldo 20(%%r2),%%r2\n\t"
! 			   "extru,<> %%r22,30,1,%%r0\n\t"
! 			   "bv,n %%r0(%%r22)\n\t"
! 			   "ldw -2(%%r22),%%r21\n\t"
! 			   "bv %%r0(%%r21)\n\t"
! 			   "ldw 2(%%r22),%%r19", xoperands);
! 	  return "";
  	}
        if (TARGET_PA_20)
  	{
  	  pa_output_arg_descriptor (insn);
! 	  output_asm_insn ("bl .+8,%%r2\n\t"
! 			   "ldo 24(%%r2),%%r2\n\t"
! 			   "stw %%r2,-24(%%sp)\n\t"
! 			   "extru,<> %r22,30,1,%%r0\n\t"
! 			   "bve,n (%%r22)\n\t"
! 			   "ldw -2(%%r22),%%r21\n\t"
! 			   "bve (%%r21)\n\t"
! 			   "ldw 2(%%r22),%%r19", xoperands);
! 	  return "";
  	}
      }
! 
    /* We need a long PIC call to $$dyncall.  */
    xoperands[0] = gen_rtx_SYMBOL_REF (Pmode, "$$dyncall");
    xoperands[1] = gen_rtx_REG (Pmode, 2);
*************** pa_function_value (const_tree valtype,
*** 9398,9404 ****
        HOST_WIDE_INT valsize = int_size_in_bytes (valtype);
  
        /* Handle aggregates that fit exactly in a word or double word.  */
!       if ((valsize & (UNITS_PER_WORD - 1)) == 0)
  	return gen_rtx_REG (TYPE_MODE (valtype), 28);
  
        if (TARGET_64BIT)
--- 9339,9345 ----
        HOST_WIDE_INT valsize = int_size_in_bytes (valtype);
  
        /* Handle aggregates that fit exactly in a word or double word.  */
!       if (valsize == UNITS_PER_WORD || valsize == 2 * UNITS_PER_WORD)
  	return gen_rtx_REG (TYPE_MODE (valtype), 28);
  
        if (TARGET_64BIT)
*************** pa_can_change_mode_class (machine_mode f
*** 10039,10048 ****
    /* There is no way to load QImode or HImode values directly from memory
       to a FP register.  SImode loads to the FP registers are not zero
       extended.  On the 64-bit target, this conflicts with the definition
!      of LOAD_EXTEND_OP.  Thus, we can't allow changing between modes with
!      different sizes in the floating-point registers.  */
    if (MAYBE_FP_REG_CLASS_P (rclass))
!     return false;
  
    /* TARGET_HARD_REGNO_MODE_OK places modes with sizes larger than a word
       in specific sets of registers.  Thus, we cannot allow changing
--- 9980,9990 ----
    /* There is no way to load QImode or HImode values directly from memory
       to a FP register.  SImode loads to the FP registers are not zero
       extended.  On the 64-bit target, this conflicts with the definition
!      of LOAD_EXTEND_OP.  Thus, we reject all mode changes in the FP registers
!      except for DImode to SImode on the 64-bit target.  It is handled by
!      register renaming in pa_print_operand.  */
    if (MAYBE_FP_REG_CLASS_P (rclass))
!     return TARGET_64BIT && from == DImode && to == SImode;
  
    /* TARGET_HARD_REGNO_MODE_OK places modes with sizes larger than a word
       in specific sets of registers.  Thus, we cannot allow changing
*************** pa_modes_tieable_p (machine_mode mode1,
*** 10076,10082 ****
  
  /* Length in units of the trampoline instruction code.  */
  
! #define TRAMPOLINE_CODE_SIZE (TARGET_64BIT ? 24 : (TARGET_PA_20 ? 32 : 40))
  
  
  /* Output assembler code for a block containing the constant parts
--- 10018,10024 ----
  
  /* Length in units of the trampoline instruction code.  */
  
! #define TRAMPOLINE_CODE_SIZE (TARGET_64BIT ? 24 : (TARGET_PA_20 ? 36 : 48))
  
  
  /* Output assembler code for a block containing the constant parts
*************** pa_asm_trampoline_template (FILE *f)
*** 10097,10123 ****
  {
    if (!TARGET_64BIT)
      {
-       fputs ("\tldw	36(%r22),%r21\n", f);
-       fputs ("\tbb,>=,n	%r21,30,.+16\n", f);
-       if (ASSEMBLER_DIALECT == 0)
- 	fputs ("\tdepi	0,31,2,%r21\n", f);
-       else
- 	fputs ("\tdepwi	0,31,2,%r21\n", f);
-       fputs ("\tldw	4(%r21),%r19\n", f);
-       fputs ("\tldw	0(%r21),%r21\n", f);
        if (TARGET_PA_20)
  	{
! 	  fputs ("\tbve	(%r21)\n", f);
! 	  fputs ("\tldw	40(%r22),%r29\n", f);
  	  fputs ("\t.word	0\n", f);
  	  fputs ("\t.word	0\n", f);
  	}
        else
  	{
  	  fputs ("\tldsid	(%r21),%r1\n", f);
  	  fputs ("\tmtsp	%r1,%sr0\n", f);
! 	  fputs ("\tbe	0(%sr0,%r21)\n", f);
! 	  fputs ("\tldw	40(%r22),%r29\n", f);
  	}
        fputs ("\t.word	0\n", f);
        fputs ("\t.word	0\n", f);
--- 10039,10084 ----
  {
    if (!TARGET_64BIT)
      {
        if (TARGET_PA_20)
  	{
! 	  fputs ("\tmfia	%r20\n", f);
! 	  fputs ("\tldw		48(%r20),%r22\n", f);
! 	  fputs ("\tcopy	%r22,%r21\n", f);
! 	  fputs ("\tbb,>=,n	%r22,30,.+16\n", f);
! 	  fputs ("\tdepwi	0,31,2,%r22\n", f);
! 	  fputs ("\tldw		0(%r22),%r21\n", f);
! 	  fputs ("\tldw		4(%r22),%r19\n", f);
! 	  fputs ("\tbve		(%r21)\n", f);
! 	  fputs ("\tldw		52(%r1),%r29\n", f);
! 	  fputs ("\t.word	0\n", f);
  	  fputs ("\t.word	0\n", f);
  	  fputs ("\t.word	0\n", f);
  	}
        else
  	{
+ 	  if (ASSEMBLER_DIALECT == 0)
+ 	    {
+ 	      fputs ("\tbl	.+8,%r20\n", f);
+ 	      fputs ("\tdepi	0,31,2,%r20\n", f);
+ 	    }
+ 	  else
+ 	    {
+ 	      fputs ("\tb,l	.+8,%r20\n", f);
+ 	      fputs ("\tdepwi	0,31,2,%r20\n", f);
+ 	    }
+ 	  fputs ("\tldw		40(%r20),%r22\n", f);
+ 	  fputs ("\tcopy	%r22,%r21\n", f);
+ 	  fputs ("\tbb,>=,n	%r22,30,.+16\n", f);
+ 	  if (ASSEMBLER_DIALECT == 0)
+ 	    fputs ("\tdepi	0,31,2,%r22\n", f);
+ 	  else
+ 	    fputs ("\tdepwi	0,31,2,%r22\n", f);
+ 	  fputs ("\tldw		0(%r22),%r21\n", f);
+ 	  fputs ("\tldw		4(%r22),%r19\n", f);
  	  fputs ("\tldsid	(%r21),%r1\n", f);
  	  fputs ("\tmtsp	%r1,%sr0\n", f);
! 	  fputs ("\tbe		0(%sr0,%r21)\n", f);
! 	  fputs ("\tldw		44(%r20),%r29\n", f);
  	}
        fputs ("\t.word	0\n", f);
        fputs ("\t.word	0\n", f);
*************** pa_asm_trampoline_template (FILE *f)
*** 10131,10141 ****
        fputs ("\t.dword 0\n", f);
        fputs ("\t.dword 0\n", f);
        fputs ("\tmfia	%r31\n", f);
!       fputs ("\tldd	24(%r31),%r1\n", f);
!       fputs ("\tldd	24(%r1),%r27\n", f);
!       fputs ("\tldd	16(%r1),%r1\n", f);
!       fputs ("\tbve	(%r1)\n", f);
        fputs ("\tldd	32(%r31),%r31\n", f);
        fputs ("\t.dword 0  ; fptr\n", f);
        fputs ("\t.dword 0  ; static link\n", f);
      }
--- 10092,10102 ----
        fputs ("\t.dword 0\n", f);
        fputs ("\t.dword 0\n", f);
        fputs ("\tmfia	%r31\n", f);
!       fputs ("\tldd	24(%r31),%r27\n", f);
        fputs ("\tldd	32(%r31),%r31\n", f);
+       fputs ("\tldd	16(%r27),%r1\n", f);
+       fputs ("\tbve	(%r1)\n", f);
+       fputs ("\tldd	24(%r27),%r27\n", f);
        fputs ("\t.dword 0  ; fptr\n", f);
        fputs ("\t.dword 0  ; static link\n", f);
      }
*************** pa_asm_trampoline_template (FILE *f)
*** 10145,10154 ****
     FNADDR is an RTX for the address of the function's pure code.
     CXT is an RTX for the static chain value for the function.
  
!    Move the function address to the trampoline template at offset 36.
!    Move the static chain value to trampoline template at offset 40.
!    Move the trampoline address to trampoline template at offset 44.
!    Move r19 to trampoline template at offset 48.  The latter two
     words create a plabel for the indirect call to the trampoline.
  
     A similar sequence is used for the 64-bit port but the plabel is
--- 10106,10115 ----
     FNADDR is an RTX for the address of the function's pure code.
     CXT is an RTX for the static chain value for the function.
  
!    Move the function address to the trampoline template at offset 48.
!    Move the static chain value to trampoline template at offset 52.
!    Move the trampoline address to trampoline template at offset 56.
!    Move r19 to trampoline template at offset 60.  The latter two
     words create a plabel for the indirect call to the trampoline.
  
     A similar sequence is used for the 64-bit port but the plabel is
*************** pa_trampoline_init (rtx m_tramp, tree fn
*** 10174,10188 ****
  
    if (!TARGET_64BIT)
      {
!       tmp = adjust_address (m_tramp, Pmode, 36);
        emit_move_insn (tmp, fnaddr);
!       tmp = adjust_address (m_tramp, Pmode, 40);
        emit_move_insn (tmp, chain_value);
  
        /* Create a fat pointer for the trampoline.  */
!       tmp = adjust_address (m_tramp, Pmode, 44);
        emit_move_insn (tmp, r_tramp);
!       tmp = adjust_address (m_tramp, Pmode, 48);
        emit_move_insn (tmp, gen_rtx_REG (Pmode, 19));
  
        /* fdc and fic only use registers for the address to flush,
--- 10135,10149 ----
  
    if (!TARGET_64BIT)
      {
!       tmp = adjust_address (m_tramp, Pmode, 48);
        emit_move_insn (tmp, fnaddr);
!       tmp = adjust_address (m_tramp, Pmode, 52);
        emit_move_insn (tmp, chain_value);
  
        /* Create a fat pointer for the trampoline.  */
!       tmp = adjust_address (m_tramp, Pmode, 56);
        emit_move_insn (tmp, r_tramp);
!       tmp = adjust_address (m_tramp, Pmode, 60);
        emit_move_insn (tmp, gen_rtx_REG (Pmode, 19));
  
        /* fdc and fic only use registers for the address to flush,
*************** pa_trampoline_init (rtx m_tramp, tree fn
*** 10234,10253 ****
      }
  
  #ifdef HAVE_ENABLE_EXECUTE_STACK
!   emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"),
  		     LCT_NORMAL, VOIDmode, XEXP (m_tramp, 0), Pmode);
  #endif
  }
  
  /* Perform any machine-specific adjustment in the address of the trampoline.
     ADDR contains the address that was passed to pa_trampoline_init.
!    Adjust the trampoline address to point to the plabel at offset 44.  */
  
  static rtx
  pa_trampoline_adjust_address (rtx addr)
  {
    if (!TARGET_64BIT)
!     addr = memory_address (Pmode, plus_constant (Pmode, addr, 46));
    return addr;
  }
  
--- 10195,10214 ----
      }
  
  #ifdef HAVE_ENABLE_EXECUTE_STACK
!   emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"),
  		     LCT_NORMAL, VOIDmode, XEXP (m_tramp, 0), Pmode);
  #endif
  }
  
  /* Perform any machine-specific adjustment in the address of the trampoline.
     ADDR contains the address that was passed to pa_trampoline_init.
!    Adjust the trampoline address to point to the plabel at offset 56.  */
  
  static rtx
  pa_trampoline_adjust_address (rtx addr)
  {
    if (!TARGET_64BIT)
!     addr = memory_address (Pmode, plus_constant (Pmode, addr, 58));
    return addr;
  }
  
diff -Nrcpad gcc-8.3.0/gcc/config/pa/pa.h gcc-8.4.0/gcc/config/pa/pa.h
*** gcc-8.3.0/gcc/config/pa/pa.h	Sun Jul 29 15:54:08 2018
--- gcc-8.4.0/gcc/config/pa/pa.h	Wed Mar  4 08:30:00 2020
*************** extern int may_call_alloca;
*** 689,695 ****
  
  /* Length in units of the trampoline for entering a nested function.  */
  
! #define TRAMPOLINE_SIZE (TARGET_64BIT ? 72 : 52)
  
  /* Alignment required by the trampoline.  */
  
--- 689,695 ----
  
  /* Length in units of the trampoline for entering a nested function.  */
  
! #define TRAMPOLINE_SIZE (TARGET_64BIT ? 72 : 64)
  
  /* Alignment required by the trampoline.  */
  
*************** do {									     \
*** 1293,1304 ****
  #endif
  
  /* The maximum offset in bytes for a PA 1.X pc-relative call to the
!    head of the preceding stub table.  The selected offsets have been
!    chosen so that approximately one call stub is allocated for every
!    86.7 instructions.  A long branch stub is two instructions when
!    not generating PIC code.  For HP-UX and ELF targets, PIC stubs are
!    seven and four instructions, respectively.  */  
! #define MAX_PCREL17F_OFFSET \
!   (flag_pic ? (TARGET_HPUX ? 198164 : 221312) : 240000)
  
  #define NEED_INDICATE_EXEC_STACK 0
--- 1293,1306 ----
  #endif
  
  /* The maximum offset in bytes for a PA 1.X pc-relative call to the
!    head of the preceding stub table.  A long branch stub is two or three
!    instructions for non-PIC and PIC, respectively.  Import stubs are
!    seven and five instructions for HP-UX and ELF targets, respectively.
!    The default stub group size for ELF targets is 217856 bytes.
!    FIXME: We need an option to set the maximum offset.  */  
! #define MAX_PCREL17F_OFFSET (TARGET_HPUX ? 198164 : 217856)
  
  #define NEED_INDICATE_EXEC_STACK 0
+ 
+ /* Output default function prologue for hpux.  */
+ #define TARGET_ASM_FUNCTION_PROLOGUE pa_output_function_prologue
diff -Nrcpad gcc-8.3.0/gcc/config/pa/pa.md gcc-8.4.0/gcc/config/pa/pa.md
*** gcc-8.3.0/gcc/config/pa/pa.md	Thu Sep 20 01:07:42 2018
--- gcc-8.4.0/gcc/config/pa/pa.md	Wed Mar  4 08:30:00 2020
***************
*** 765,771 ****
  
  (define_insn "scc"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(match_operator:SI 3 "comparison_operator"
  			   [(match_operand:SI 1 "reg_or_0_operand" "rM")
  			    (match_operand:SI 2 "arith11_operand" "rI")]))]
    ""
--- 765,771 ----
  
  (define_insn "scc"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(match_operator:SI 3 "ordered_comparison_operator"
  			   [(match_operand:SI 1 "reg_or_0_operand" "rM")
  			    (match_operand:SI 2 "arith11_operand" "rI")]))]
    ""
***************
*** 775,781 ****
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r")
! 	(match_operator:DI 3 "comparison_operator"
  			   [(match_operand:DI 1 "reg_or_0_operand" "rM")
  			    (match_operand:DI 2 "arith11_operand" "rI")]))]
    "TARGET_64BIT"
--- 775,781 ----
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r")
! 	(match_operator:DI 3 "ordered_comparison_operator"
  			   [(match_operand:DI 1 "reg_or_0_operand" "rM")
  			    (match_operand:DI 2 "arith11_operand" "rI")]))]
    "TARGET_64BIT"
***************
*** 785,794 ****
  
  (define_insn "iorscc"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (match_operator:SI 3 "comparison_operator"
  				   [(match_operand:SI 1 "reg_or_0_operand" "rM")
  				    (match_operand:SI 2 "arith11_operand" "rI")])
! 		(match_operator:SI 6 "comparison_operator"
  				   [(match_operand:SI 4 "reg_or_0_operand" "rM")
  				    (match_operand:SI 5 "arith11_operand" "rI")])))]
    ""
--- 785,794 ----
  
  (define_insn "iorscc"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (match_operator:SI 3 "ordered_comparison_operator"
  				   [(match_operand:SI 1 "reg_or_0_operand" "rM")
  				    (match_operand:SI 2 "arith11_operand" "rI")])
! 		(match_operator:SI 6 "ordered_comparison_operator"
  				   [(match_operand:SI 4 "reg_or_0_operand" "rM")
  				    (match_operand:SI 5 "arith11_operand" "rI")])))]
    ""
***************
*** 798,807 ****
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r")
! 	(ior:DI (match_operator:DI 3 "comparison_operator"
  				   [(match_operand:DI 1 "reg_or_0_operand" "rM")
  				    (match_operand:DI 2 "arith11_operand" "rI")])
! 		(match_operator:DI 6 "comparison_operator"
  				   [(match_operand:DI 4 "reg_or_0_operand" "rM")
  				    (match_operand:DI 5 "arith11_operand" "rI")])))]
    "TARGET_64BIT"
--- 798,807 ----
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r")
! 	(ior:DI (match_operator:DI 3 "ordered_comparison_operator"
  				   [(match_operand:DI 1 "reg_or_0_operand" "rM")
  				    (match_operand:DI 2 "arith11_operand" "rI")])
! 		(match_operator:DI 6 "ordered_comparison_operator"
  				   [(match_operand:DI 4 "reg_or_0_operand" "rM")
  				    (match_operand:DI 5 "arith11_operand" "rI")])))]
    "TARGET_64BIT"
***************
*** 813,819 ****
  ;; from an scc insn (negscc and incscc).
  (define_insn "negscc"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(neg:SI (match_operator:SI 3 "comparison_operator"
  	       [(match_operand:SI 1 "reg_or_0_operand" "rM")
  		(match_operand:SI 2 "arith11_operand" "rI")])))]
    ""
--- 813,819 ----
  ;; from an scc insn (negscc and incscc).
  (define_insn "negscc"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(neg:SI (match_operator:SI 3 "ordered_comparison_operator"
  	       [(match_operand:SI 1 "reg_or_0_operand" "rM")
  		(match_operand:SI 2 "arith11_operand" "rI")])))]
    ""
***************
*** 823,829 ****
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r")
! 	(neg:DI (match_operator:DI 3 "comparison_operator"
  	       [(match_operand:DI 1 "reg_or_0_operand" "rM")
  		(match_operand:DI 2 "arith11_operand" "rI")])))]
    "TARGET_64BIT"
--- 823,829 ----
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r")
! 	(neg:DI (match_operator:DI 3 "ordered_comparison_operator"
  	       [(match_operand:DI 1 "reg_or_0_operand" "rM")
  		(match_operand:DI 2 "arith11_operand" "rI")])))]
    "TARGET_64BIT"
***************
*** 904,910 ****
  
  (define_insn "incscc"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
!  	(plus:SI (match_operator:SI 4 "comparison_operator"
  		    [(match_operand:SI 2 "register_operand" "r,r")
  		     (match_operand:SI 3 "arith11_operand" "rI,rI")])
  		 (match_operand:SI 1 "register_operand" "0,?r")))]
--- 904,910 ----
  
  (define_insn "incscc"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
!  	(plus:SI (match_operator:SI 4 "ordered_comparison_operator"
  		    [(match_operand:SI 2 "register_operand" "r,r")
  		     (match_operand:SI 3 "arith11_operand" "rI,rI")])
  		 (match_operand:SI 1 "register_operand" "0,?r")))]
***************
*** 917,923 ****
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r,r")
!  	(plus:DI (match_operator:DI 4 "comparison_operator"
  		    [(match_operand:DI 2 "register_operand" "r,r")
  		     (match_operand:DI 3 "arith11_operand" "rI,rI")])
  		 (match_operand:DI 1 "register_operand" "0,?r")))]
--- 917,923 ----
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r,r")
!  	(plus:DI (match_operator:DI 4 "ordered_comparison_operator"
  		    [(match_operand:DI 2 "register_operand" "r,r")
  		     (match_operand:DI 3 "arith11_operand" "rI,rI")])
  		 (match_operand:DI 1 "register_operand" "0,?r")))]
***************
*** 1062,1068 ****
  (define_insn "decscc"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(minus:SI (match_operand:SI 1 "register_operand" "0,?r")
! 		  (match_operator:SI 4 "comparison_operator"
  		     [(match_operand:SI 2 "register_operand" "r,r")
  		      (match_operand:SI 3 "arith11_operand" "rI,rI")])))]
    ""
--- 1062,1068 ----
  (define_insn "decscc"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(minus:SI (match_operand:SI 1 "register_operand" "0,?r")
! 		  (match_operator:SI 4 "ordered_comparison_operator"
  		     [(match_operand:SI 2 "register_operand" "r,r")
  		      (match_operand:SI 3 "arith11_operand" "rI,rI")])))]
    ""
***************
*** 1075,1081 ****
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r,r")
  	(minus:DI (match_operand:DI 1 "register_operand" "0,?r")
! 		  (match_operator:DI 4 "comparison_operator"
  		     [(match_operand:DI 2 "register_operand" "r,r")
  		      (match_operand:DI 3 "arith11_operand" "rI,rI")])))]
    "TARGET_64BIT"
--- 1075,1081 ----
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r,r")
  	(minus:DI (match_operand:DI 1 "register_operand" "0,?r")
! 		  (match_operator:DI 4 "ordered_comparison_operator"
  		     [(match_operand:DI 2 "register_operand" "r,r")
  		      (match_operand:DI 3 "arith11_operand" "rI,rI")])))]
    "TARGET_64BIT"
***************
*** 1242,1248 ****
  (define_expand "movsicc"
    [(set (match_operand:SI 0 "register_operand" "")
  	(if_then_else:SI
! 	 (match_operand 1 "comparison_operator" "")
  	 (match_operand:SI 2 "reg_or_cint_move_operand" "")
  	 (match_operand:SI 3 "reg_or_cint_move_operand" "")))]
    ""
--- 1242,1248 ----
  (define_expand "movsicc"
    [(set (match_operand:SI 0 "register_operand" "")
  	(if_then_else:SI
! 	 (match_operand 1 "ordered_comparison_operator" "")
  	 (match_operand:SI 2 "reg_or_cint_move_operand" "")
  	 (match_operand:SI 3 "reg_or_cint_move_operand" "")))]
    ""
***************
*** 1264,1270 ****
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
  	(if_then_else:SI
! 	 (match_operator 2 "comparison_operator"
  	    [(match_operand:SI 3 "register_operand" "r,r,r,r")
  	     (match_operand:SI 4 "arith11_operand" "rI,rI,rI,rI")])
  	 (match_operand:SI 1 "reg_or_cint_move_operand" "0,J,N,K")
--- 1264,1270 ----
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
  	(if_then_else:SI
! 	 (match_operator 2 "ordered_comparison_operator"
  	    [(match_operand:SI 3 "register_operand" "r,r,r,r")
  	     (match_operand:SI 4 "arith11_operand" "rI,rI,rI,rI")])
  	 (match_operand:SI 1 "reg_or_cint_move_operand" "0,J,N,K")
***************
*** 1281,1287 ****
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r,r,r")
  	(if_then_else:SI
! 	 (match_operator 5 "comparison_operator"
  	    [(match_operand:SI 3 "register_operand" "r,r,r,r,r,r,r,r")
  	     (match_operand:SI 4 "arith11_operand" "rI,rI,rI,rI,rI,rI,rI,rI")])
  	 (match_operand:SI 1 "reg_or_cint_move_operand" "0,0,0,0,r,J,N,K")
--- 1281,1287 ----
  (define_insn ""
    [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r,r,r")
  	(if_then_else:SI
! 	 (match_operator 5 "ordered_comparison_operator"
  	    [(match_operand:SI 3 "register_operand" "r,r,r,r,r,r,r,r")
  	     (match_operand:SI 4 "arith11_operand" "rI,rI,rI,rI,rI,rI,rI,rI")])
  	 (match_operand:SI 1 "reg_or_cint_move_operand" "0,0,0,0,r,J,N,K")
***************
*** 1302,1308 ****
  (define_expand "movdicc"
    [(set (match_operand:DI 0 "register_operand" "")
  	(if_then_else:DI
! 	 (match_operand 1 "comparison_operator" "")
  	 (match_operand:DI 2 "reg_or_cint_move_operand" "")
  	 (match_operand:DI 3 "reg_or_cint_move_operand" "")))]
    "TARGET_64BIT"
--- 1302,1308 ----
  (define_expand "movdicc"
    [(set (match_operand:DI 0 "register_operand" "")
  	(if_then_else:DI
! 	 (match_operand 1 "ordered_comparison_operator" "")
  	 (match_operand:DI 2 "reg_or_cint_move_operand" "")
  	 (match_operand:DI 3 "reg_or_cint_move_operand" "")))]
    "TARGET_64BIT"
***************
*** 1318,1324 ****
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r")
  	(if_then_else:DI
! 	 (match_operator 2 "comparison_operator"
  	    [(match_operand:DI 3 "register_operand" "r,r,r,r,r")
  	     (match_operand:DI 4 "arith11_operand" "rI,rI,rI,rI,rI")])
  	 (match_operand:DI 1 "reg_or_cint_move_operand" "0,r,J,N,K")
--- 1318,1324 ----
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r")
  	(if_then_else:DI
! 	 (match_operator 2 "ordered_comparison_operator"
  	    [(match_operand:DI 3 "register_operand" "r,r,r,r,r")
  	     (match_operand:DI 4 "arith11_operand" "rI,rI,rI,rI,rI")])
  	 (match_operand:DI 1 "reg_or_cint_move_operand" "0,r,J,N,K")
***************
*** 1336,1342 ****
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r,r,r,r")
  	(if_then_else:DI
! 	 (match_operator 5 "comparison_operator"
  	    [(match_operand:DI 3 "register_operand" "r,r,r,r,r,r,r,r")
  	     (match_operand:DI 4 "arith11_operand" "rI,rI,rI,rI,rI,rI,rI,rI")])
  	 (match_operand:DI 1 "reg_or_cint_move_operand" "0,0,0,0,r,J,N,K")
--- 1336,1342 ----
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r,r,r,r")
  	(if_then_else:DI
! 	 (match_operator 5 "ordered_comparison_operator"
  	    [(match_operand:DI 3 "register_operand" "r,r,r,r,r,r,r,r")
  	     (match_operand:DI 4 "arith11_operand" "rI,rI,rI,rI,rI,rI,rI,rI")])
  	 (match_operand:DI 1 "reg_or_cint_move_operand" "0,0,0,0,r,J,N,K")
***************
*** 1413,1419 ****
  (define_insn ""
    [(set (pc)
  	(if_then_else
! 	 (match_operator 3 "comparison_operator"
  			 [(match_operand:SI 1 "reg_or_0_operand" "rM")
  			  (match_operand:SI 2 "arith5_operand" "rL")])
  	 (label_ref (match_operand 0 "" ""))
--- 1413,1419 ----
  (define_insn ""
    [(set (pc)
  	(if_then_else
! 	 (match_operator 3 "ordered_comparison_operator"
  			 [(match_operand:SI 1 "reg_or_0_operand" "rM")
  			  (match_operand:SI 2 "arith5_operand" "rL")])
  	 (label_ref (match_operand 0 "" ""))
***************
*** 1442,1448 ****
  (define_insn ""
    [(set (pc)
  	(if_then_else
! 	 (match_operator 3 "comparison_operator"
  			 [(match_operand:SI 1 "reg_or_0_operand" "rM")
  			  (match_operand:SI 2 "arith5_operand" "rL")])
  	 (pc)
--- 1442,1448 ----
  (define_insn ""
    [(set (pc)
  	(if_then_else
! 	 (match_operator 3 "ordered_comparison_operator"
  			 [(match_operand:SI 1 "reg_or_0_operand" "rM")
  			  (match_operand:SI 2 "arith5_operand" "rL")])
  	 (pc)
***************
*** 1469,1475 ****
  (define_insn ""
    [(set (pc)
  	(if_then_else
! 	 (match_operator 3 "comparison_operator"
  			 [(match_operand:DI 1 "reg_or_0_operand" "rM")
  			  (match_operand:DI 2 "reg_or_0_operand" "rM")])
  	 (label_ref (match_operand 0 "" ""))
--- 1469,1475 ----
  (define_insn ""
    [(set (pc)
  	(if_then_else
! 	 (match_operator 3 "ordered_comparison_operator"
  			 [(match_operand:DI 1 "reg_or_0_operand" "rM")
  			  (match_operand:DI 2 "reg_or_0_operand" "rM")])
  	 (label_ref (match_operand 0 "" ""))
***************
*** 1498,1504 ****
  (define_insn ""
    [(set (pc)
  	(if_then_else
! 	 (match_operator 3 "comparison_operator"
  			 [(match_operand:DI 1 "reg_or_0_operand" "rM")
  			  (match_operand:DI 2 "reg_or_0_operand" "rM")])
  	 (pc)
--- 1498,1504 ----
  (define_insn ""
    [(set (pc)
  	(if_then_else
! 	 (match_operator 3 "ordered_comparison_operator"
  			 [(match_operand:DI 1 "reg_or_0_operand" "rM")
  			  (match_operand:DI 2 "reg_or_0_operand" "rM")])
  	 (pc)
***************
*** 5319,5326 ****
  
  (define_insn "umulsidi3"
    [(set (match_operand:DI 0 "register_operand" "=f")
! 	(mult:DI (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "f"))
! 		 (zero_extend:DI (match_operand:SI 2 "nonimmediate_operand" "f"))))]
    "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT"
    "xmpyu %1,%2,%0"
    [(set_attr "type" "fpmuldbl")
--- 5319,5326 ----
  
  (define_insn "umulsidi3"
    [(set (match_operand:DI 0 "register_operand" "=f")
! 	(mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "f"))
! 		 (zero_extend:DI (match_operand:SI 2 "register_operand" "f"))))]
    "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT"
    "xmpyu %1,%2,%0"
    [(set_attr "type" "fpmuldbl")
***************
*** 5328,5334 ****
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=f")
! 	(mult:DI (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "f"))
  		 (match_operand:DI 2 "uint32_operand" "f")))]
    "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT && !TARGET_64BIT"
    "xmpyu %1,%R2,%0"
--- 5328,5334 ----
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=f")
! 	(mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "f"))
  		 (match_operand:DI 2 "uint32_operand" "f")))]
    "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT && !TARGET_64BIT"
    "xmpyu %1,%R2,%0"
***************
*** 5337,5343 ****
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=f")
! 	(mult:DI (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "f"))
  		 (match_operand:DI 2 "uint32_operand" "f")))]
    "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT && TARGET_64BIT"
    "xmpyu %1,%2R,%0"
--- 5337,5343 ----
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=f")
! 	(mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "f"))
  		 (match_operand:DI 2 "uint32_operand" "f")))]
    "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT && TARGET_64BIT"
    "xmpyu %1,%2R,%0"
***************
*** 6904,6924 ****
    rtx stack = operands[2];
    rtx fp = operands[3];
  
-   lab = copy_to_reg (lab);
- 
    emit_clobber (gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (VOIDmode)));
    emit_clobber (gen_rtx_MEM (BLKmode, hard_frame_pointer_rtx));
  
!   /* Restore the frame pointer.  The virtual_stack_vars_rtx is saved
!      instead of the hard_frame_pointer_rtx in the save area.  As a
!      result, an extra instruction is needed to adjust for the offset
!      of the virtual stack variables and the hard frame pointer.  */
!   if (GET_CODE (fp) != REG)
!     fp = force_reg (Pmode, fp);
!   emit_move_insn (hard_frame_pointer_rtx, plus_constant (Pmode, fp, -8));
  
    emit_stack_restore (SAVE_NONLOCAL, stack);
  
    emit_use (hard_frame_pointer_rtx);
    emit_use (stack_pointer_rtx);
  
--- 6904,6927 ----
    rtx stack = operands[2];
    rtx fp = operands[3];
  
    emit_clobber (gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (VOIDmode)));
    emit_clobber (gen_rtx_MEM (BLKmode, hard_frame_pointer_rtx));
  
!   lab = copy_to_reg (lab);
  
+   /* Restore the stack and frame pointers.  The virtual_stack_vars_rtx
+      is saved instead of the hard_frame_pointer_rtx in the save area.
+      As a result, an extra instruction is needed to adjust for the offset
+      of the virtual stack variables and the hard frame pointer.  */
+   fp = copy_to_reg (fp);
    emit_stack_restore (SAVE_NONLOCAL, stack);
  
+   /* Ensure the frame pointer move is not optimized.  */
+   emit_insn (gen_blockage ());
+   emit_clobber (hard_frame_pointer_rtx);
+   emit_clobber (frame_pointer_rtx);
+   emit_move_insn (hard_frame_pointer_rtx, plus_constant (Pmode, fp, -8));
+ 
    emit_use (hard_frame_pointer_rtx);
    emit_use (stack_pointer_rtx);
  
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 8695,8717 ****
    emit_clobber (gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (VOIDmode)));
    emit_clobber (gen_rtx_MEM (BLKmode, hard_frame_pointer_rtx));
  
-   /* Restore the frame pointer.  The virtual_stack_vars_rtx is saved
-      instead of the hard_frame_pointer_rtx in the save area.  We need
-      to adjust for the offset between these two values.  */
-   if (GET_CODE (fp) != REG)
-     fp = force_reg (Pmode, fp);
-   emit_move_insn (hard_frame_pointer_rtx, plus_constant (Pmode, fp, -8));
- 
-   /* This bit is the same as expand_builtin_longjmp.  */
-   emit_stack_restore (SAVE_NONLOCAL, stack);
-   emit_use (hard_frame_pointer_rtx);
-   emit_use (stack_pointer_rtx);
- 
    /* Load the label we are jumping through into r1 so that we know
       where to look for it when we get back to setjmp's function for
       restoring the gp.  */
    emit_move_insn (pv, lab);
  
    /* Prevent the insns above from being scheduled into the delay slot
       of the interspace jump because the space register could change.  */
    emit_insn (gen_blockage ());
--- 8698,8723 ----
    emit_clobber (gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (VOIDmode)));
    emit_clobber (gen_rtx_MEM (BLKmode, hard_frame_pointer_rtx));
  
    /* Load the label we are jumping through into r1 so that we know
       where to look for it when we get back to setjmp's function for
       restoring the gp.  */
    emit_move_insn (pv, lab);
  
+   /* Restore the stack and frame pointers.  The virtual_stack_vars_rtx
+      is saved instead of the hard_frame_pointer_rtx in the save area.
+      We need to adjust for the offset between these two values.  */
+   fp = copy_to_reg (fp);
+   emit_stack_restore (SAVE_NONLOCAL, stack);
+ 
+   /* Ensure the frame pointer move is not optimized.  */
+   emit_insn (gen_blockage ());
+   emit_clobber (hard_frame_pointer_rtx);
+   emit_clobber (frame_pointer_rtx);
+   emit_move_insn (hard_frame_pointer_rtx, plus_constant (Pmode, fp, -8));
+ 
+   emit_use (hard_frame_pointer_rtx);
+   emit_use (stack_pointer_rtx);
+ 
    /* Prevent the insns above from being scheduled into the delay slot
       of the interspace jump because the space register could change.  */
    emit_insn (gen_blockage ());
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 9056,9062 ****
  (define_insn "decrement_and_branch_until_zero"
    [(set (pc)
  	(if_then_else
! 	  (match_operator 2 "comparison_operator"
  	   [(plus:SI
  	      (match_operand:SI 0 "reg_before_reload_operand" "+!r,!*f,*Q")
  	      (match_operand:SI 1 "int5_operand" "L,L,L"))
--- 9062,9068 ----
  (define_insn "decrement_and_branch_until_zero"
    [(set (pc)
  	(if_then_else
! 	  (match_operator 2 "ordered_comparison_operator"
  	   [(plus:SI
  	      (match_operand:SI 0 "reg_before_reload_operand" "+!r,!*f,*Q")
  	      (match_operand:SI 1 "int5_operand" "L,L,L"))
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 10085,10107 ****
     (set_attr "length" "4,16")])
  
  ;; PA 2.0 hardware supports out-of-order execution of loads and stores, so
! ;; we need a memory barrier to enforce program order for memory references.
! ;; Since we want PA 1.x code to be PA 2.0 compatible, we also need the
! ;; barrier when generating PA 1.x code.
  
  (define_expand "memory_barrier"
!   [(set (match_dup 0)
!         (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))]
    ""
  {
!   operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
    MEM_VOLATILE_P (operands[0]) = 1;
  })
  
! (define_insn "*memory_barrier"
    [(set (match_operand:BLK 0 "" "")
!         (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))]
!   ""
!   "sync"
    [(set_attr "type" "binary")
     (set_attr "length" "4")])
--- 10091,10145 ----
     (set_attr "length" "4,16")])
  
  ;; PA 2.0 hardware supports out-of-order execution of loads and stores, so
! ;; we need memory barriers to enforce program order for memory references
! ;; when the TLB and PSW O bits are not set.  We assume all PA 2.0 systems
! ;; are weakly ordered since neither HP-UX or Linux set the PSW O bit.  Since
! ;; we want PA 1.x code to be PA 2.0 compatible, we also need barriers when
! ;; generating PA 1.x code even though all PA 1.x systems are strongly ordered.
! 
! ;; When barriers are needed, we use a strongly ordered ldcw instruction as
! ;; the barrier.  Most PA 2.0 targets are cache coherent.  In that case, we
! ;; can use the coherent cache control hint and avoid aligning the ldcw
! ;; address.  In spite of its description, it is not clear that the sync
! ;; instruction works as a barrier.
  
  (define_expand "memory_barrier"
!   [(parallel
!      [(set (match_dup 0) (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))
!       (clobber (match_dup 1))])]
    ""
  {
!   /* We don't need a barrier if the target uses ordered memory references.  */
!   if (TARGET_ORDERED)
!     FAIL;
!   operands[1] = gen_reg_rtx (Pmode);
!   operands[0] = gen_rtx_MEM (BLKmode, operands[1]);
    MEM_VOLATILE_P (operands[0]) = 1;
  })
  
! (define_insn "*memory_barrier_coherent"
    [(set (match_operand:BLK 0 "" "")
!         (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))
!    (clobber (match_operand 1 "pmode_register_operand" "=r"))]
!   "TARGET_PA_20 && TARGET_COHERENT_LDCW"
!   "ldcw,co 0(%%sp),%1"
    [(set_attr "type" "binary")
     (set_attr "length" "4")])
+ 
+ (define_insn "*memory_barrier_64"
+   [(set (match_operand:BLK 0 "" "")
+         (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))
+     (clobber (match_operand 1 "pmode_register_operand" "=&r"))]
+   "TARGET_64BIT"
+   "ldo 15(%%sp),%1\n\tdepd %%r0,63,3,%1\n\tldcw 0(%1),%1"
+   [(set_attr "type" "binary")
+    (set_attr "length" "12")])
+ 
+ (define_insn "*memory_barrier_32"
+   [(set (match_operand:BLK 0 "" "")
+         (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))
+     (clobber (match_operand 1 "pmode_register_operand" "=&r"))]
+   ""
+   "ldo 15(%%sp),%1\n\t{dep|depw} %%r0,31,3,%1\n\tldcw 0(%1),%1"
+   [(set_attr "type" "binary")
+    (set_attr "length" "12")])
diff -Nrcpad gcc-8.3.0/gcc/config/pa/pa.opt gcc-8.4.0/gcc/config/pa/pa.opt
*** gcc-8.3.0/gcc/config/pa/pa.opt	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/pa/pa.opt	Wed Mar  4 08:30:00 2020
*************** mcaller-copies
*** 45,50 ****
--- 45,54 ----
  Target Report Mask(CALLER_COPIES)
  Caller copies function arguments passed by hidden reference.
  
+ mcoherent-ldcw
+ Target Report Var(TARGET_COHERENT_LDCW) Init(1)
+ Use ldcw/ldcd coherent cache-control hint.
+ 
  mdisable-fpregs
  Target Report Mask(DISABLE_FPREGS)
  Disable FP regs.
*************** mno-space-regs
*** 90,95 ****
--- 94,103 ----
  Target RejectNegative Report Mask(NO_SPACE_REGS)
  Disable space regs.
  
+ mordered
+ Target Report Var(TARGET_ORDERED) Init(0)
+ Assume memory references are ordered and barriers are not needed.
+ 
  mpa-risc-1-0
  Target RejectNegative
  Generate PA1.0 code.
diff -Nrcpad gcc-8.3.0/gcc/config/pa/predicates.md gcc-8.4.0/gcc/config/pa/predicates.md
*** gcc-8.3.0/gcc/config/pa/predicates.md	Thu Feb  1 17:12:28 2018
--- gcc-8.4.0/gcc/config/pa/predicates.md	Wed Mar  4 08:30:00 2020
***************
*** 662,669 ****
    (and (match_code "symbol_ref")
         (match_test "SYMBOL_REF_TLS_MODEL (op) == TLS_MODEL_LOCAL_EXEC")))
  
! ;; True iff this is a comparison operator.  This allows the use of
! ;; MATCH_OPERATOR to recognize all the branch insns.
  
  (define_predicate "cmpib_comparison_operator"
    (match_code "eq,ne,lt,le,leu,gt,gtu,ge"))
--- 662,669 ----
    (and (match_code "symbol_ref")
         (match_test "SYMBOL_REF_TLS_MODEL (op) == TLS_MODEL_LOCAL_EXEC")))
  
! ;; True iff OP is an operator suitable for use in a double-word cmpib
! ;; instruction.
  
  (define_predicate "cmpib_comparison_operator"
    (match_code "eq,ne,lt,le,leu,gt,gtu,ge"))
diff -Nrcpad gcc-8.3.0/gcc/config/pa/som.h gcc-8.4.0/gcc/config/pa/som.h
*** gcc-8.3.0/gcc/config/pa/som.h	Wed Jan 17 00:09:44 2018
--- gcc-8.4.0/gcc/config/pa/som.h	Wed Mar  4 08:30:00 2020
*************** do {								\
*** 98,105 ****
  
  
  #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
!     do { tree fntype = TREE_TYPE (TREE_TYPE (DECL));			\
! 	 tree tree_type = TREE_TYPE (DECL);				\
  	 tree parm;							\
  	 int i;								\
  	 if (TREE_PUBLIC (DECL) || TARGET_GAS)				\
--- 98,105 ----
  
  
  #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
!     do { tree tree_type = TREE_TYPE (DECL);				\
! 	 tree fntype = TREE_TYPE (tree_type);				\
  	 tree parm;							\
  	 int i;								\
  	 if (TREE_PUBLIC (DECL) || TARGET_GAS)				\
*************** do {								\
*** 121,129 ****
  	       {							\
  		 tree type = DECL_ARG_TYPE (parm);			\
  		 machine_mode mode = TYPE_MODE (type);			\
! 		 if (mode == SFmode && ! TARGET_SOFT_FLOAT)		\
  		   fprintf (FILE, ",ARGW%d=FR", i++);			\
! 		 else if (mode == DFmode && ! TARGET_SOFT_FLOAT)	\
  		   {							\
  		     if (i <= 2)					\
  		       {						\
--- 121,131 ----
  	       {							\
  		 tree type = DECL_ARG_TYPE (parm);			\
  		 machine_mode mode = TYPE_MODE (type);			\
! 		 if (!AGGREGATE_TYPE_P (type)				\
! 		     && mode == SFmode && ! TARGET_SOFT_FLOAT)		\
  		   fprintf (FILE, ",ARGW%d=FR", i++);			\
! 		 else if (!AGGREGATE_TYPE_P (type)			\
! 			  && mode == DFmode && ! TARGET_SOFT_FLOAT)	\
  		   {							\
  		     if (i <= 2)					\
  		       {						\
*************** do {								\
*** 158,166 ****
  		 for (; i < 4; i++)					\
  		   fprintf (FILE, ",ARGW%d=GR", i);			\
  	       }							\
! 	     if (TYPE_MODE (fntype) == DFmode && ! TARGET_SOFT_FLOAT)	\
  	       fputs (DFMODE_RETURN_STRING, FILE);			\
! 	     else if (TYPE_MODE (fntype) == SFmode && ! TARGET_SOFT_FLOAT) \
  	       fputs (SFMODE_RETURN_STRING, FILE);			\
  	     else if (fntype != void_type_node)				\
  	       fputs (",RTNVAL=GR", FILE);				\
--- 160,172 ----
  		 for (; i < 4; i++)					\
  		   fprintf (FILE, ",ARGW%d=GR", i);			\
  	       }							\
! 	     if (!AGGREGATE_TYPE_P (fntype)				\
! 		 && TYPE_MODE (fntype) == DFmode			\
! 		 && ! TARGET_SOFT_FLOAT)				\
  	       fputs (DFMODE_RETURN_STRING, FILE);			\
! 	     else if (!AGGREGATE_TYPE_P (fntype)			\
! 		      && TYPE_MODE (fntype) == SFmode			\
! 		      && ! TARGET_SOFT_FLOAT)				\
  	       fputs (SFMODE_RETURN_STRING, FILE);			\
  	     else if (fntype != void_type_node)				\
  	       fputs (",RTNVAL=GR", FILE);				\
diff -Nrcpad gcc-8.3.0/gcc/config/riscv/riscv.c gcc-8.4.0/gcc/config/riscv/riscv.c
*** gcc-8.3.0/gcc/config/riscv/riscv.c	Fri Apr 20 19:03:19 2018
--- gcc-8.4.0/gcc/config/riscv/riscv.c	Wed Mar  4 08:30:00 2020
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 1515,1521 ****
  
      case ZERO_EXTRACT:
        /* This is an SImode shift.  */
!       if (outer_code == SET && (INTVAL (XEXP (x, 2)) > 0)
  	  && (INTVAL (XEXP (x, 1)) + INTVAL (XEXP (x, 2)) == 32))
  	{
  	  *total = COSTS_N_INSNS (SINGLE_SHIFT_COST);
--- 1515,1524 ----
  
      case ZERO_EXTRACT:
        /* This is an SImode shift.  */
!       if (outer_code == SET
! 	  && CONST_INT_P (XEXP (x, 1))
! 	  && CONST_INT_P (XEXP (x, 2))
! 	  && (INTVAL (XEXP (x, 2)) > 0)
  	  && (INTVAL (XEXP (x, 1)) + INTVAL (XEXP (x, 2)) == 32))
  	{
  	  *total = COSTS_N_INSNS (SINGLE_SHIFT_COST);
*************** riscv_print_operand_reloc (FILE *file, r
*** 2932,2938 ****
  	break;
  
        default:
! 	gcc_unreachable ();
      }
  
    fprintf (file, "%s(", reloc);
--- 2935,2942 ----
  	break;
  
        default:
! 	output_operand_lossage ("invalid use of '%%%c'", hi_reloc ? 'h' : 'R');
! 	return;
      }
  
    fprintf (file, "%s(", reloc);
*************** riscv_constant_alignment (const_tree exp
*** 4389,4394 ****
--- 4393,4424 ----
    return align;
  }
  
+ /* Implement TARGET_PROMOTE_FUNCTION_MODE.  */
+ 
+ /* This function is equivalent to default_promote_function_mode_always_promote
+    except that it returns a promoted mode even if type is NULL_TREE.  This is
+    needed by libcalls which have no type (only a mode) such as fixed conversion
+    routines that take a signed or unsigned char/short/int argument and convert
+    it to a fixed type.  */
+ 
+ static machine_mode
+ riscv_promote_function_mode (const_tree type ATTRIBUTE_UNUSED,
+ 			     machine_mode mode,
+ 			     int *punsignedp ATTRIBUTE_UNUSED,
+ 			     const_tree fntype ATTRIBUTE_UNUSED,
+ 			     int for_return ATTRIBUTE_UNUSED)
+ {
+   int unsignedp;
+ 
+   if (type != NULL_TREE)
+     return promote_mode (type, mode, punsignedp);
+ 
+   unsignedp = *punsignedp;
+   PROMOTE_MODE (mode, unsignedp, type);
+   *punsignedp = unsignedp;
+   return mode;
+ }
+ 
  /* Initialize the GCC target structure.  */
  #undef TARGET_ASM_ALIGNED_HI_OP
  #define TARGET_ASM_ALIGNED_HI_OP "\t.half\t"
*************** riscv_constant_alignment (const_tree exp
*** 4430,4436 ****
  #define TARGET_EXPAND_BUILTIN_VA_START riscv_va_start
  
  #undef  TARGET_PROMOTE_FUNCTION_MODE
! #define TARGET_PROMOTE_FUNCTION_MODE default_promote_function_mode_always_promote
  
  #undef TARGET_RETURN_IN_MEMORY
  #define TARGET_RETURN_IN_MEMORY riscv_return_in_memory
--- 4460,4466 ----
  #define TARGET_EXPAND_BUILTIN_VA_START riscv_va_start
  
  #undef  TARGET_PROMOTE_FUNCTION_MODE
! #define TARGET_PROMOTE_FUNCTION_MODE riscv_promote_function_mode
  
  #undef TARGET_RETURN_IN_MEMORY
  #define TARGET_RETURN_IN_MEMORY riscv_return_in_memory
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/altivec.h gcc-8.4.0/gcc/config/rs6000/altivec.h
*** gcc-8.3.0/gcc/config/rs6000/altivec.h	Wed Mar 14 17:38:15 2018
--- gcc-8.4.0/gcc/config/rs6000/altivec.h	Wed Mar  4 08:30:00 2020
***************
*** 418,423 ****
--- 418,428 ----
  #define vec_vupkhsw __builtin_vec_vupkhsw
  #define vec_vupklsw __builtin_vec_vupklsw
  #define vec_revb __builtin_vec_revb
+ #define vec_sbox_be __builtin_crypto_vsbox_be
+ #define vec_cipher_be __builtin_crypto_vcipher_be
+ #define vec_cipherlast_be __builtin_crypto_vcipherlast_be
+ #define vec_ncipher_be __builtin_crypto_vncipher_be
+ #define vec_ncipherlast_be __builtin_crypto_vncipherlast_be
  #endif
  
  #ifdef __POWER9_VECTOR__
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/altivec.md gcc-8.4.0/gcc/config/rs6000/altivec.md
*** gcc-8.3.0/gcc/config/rs6000/altivec.md	Tue Mar 20 17:25:09 2018
--- gcc-8.4.0/gcc/config/rs6000/altivec.md	Wed Mar  4 08:30:00 2020
***************
*** 80,88 ****
     UNSPEC_VUPKHPX
     UNSPEC_VUPKLPX
     UNSPEC_CONVERT_4F32_8I16
-    UNSPEC_DARN
-    UNSPEC_DARN_32
-    UNSPEC_DARN_RAW
     UNSPEC_DST
     UNSPEC_DSTT
     UNSPEC_DSTST
--- 80,85 ----
***************
*** 161,169 ****
     UNSPEC_BCDADD
     UNSPEC_BCDSUB
     UNSPEC_BCD_OVERFLOW
-    UNSPEC_CMPRB
-    UNSPEC_CMPRB2
-    UNSPEC_CMPEQB
     UNSPEC_VRLMI
     UNSPEC_VRLNM
  ])
--- 158,163 ----
***************
*** 581,587 ****
    [(set_attr "type" "vecsimple")])
  
  ;;
! (define_insn "altivec_vavgu<VI_char>"
    [(set (match_operand:VI 0 "register_operand" "=v")
          (unspec:VI [(match_operand:VI 1 "register_operand" "v")
                      (match_operand:VI 2 "register_operand" "v")]
--- 575,581 ----
    [(set_attr "type" "vecsimple")])
  
  ;;
! (define_insn "uavg<mode>3_ceil"
    [(set (match_operand:VI 0 "register_operand" "=v")
          (unspec:VI [(match_operand:VI 1 "register_operand" "v")
                      (match_operand:VI 2 "register_operand" "v")]
***************
*** 590,596 ****
    "vavgu<VI_char> %0,%1,%2"
    [(set_attr "type" "vecsimple")])
  
! (define_insn "altivec_vavgs<VI_char>"
    [(set (match_operand:VI 0 "register_operand" "=v")
          (unspec:VI [(match_operand:VI 1 "register_operand" "v")
                      (match_operand:VI 2 "register_operand" "v")]
--- 584,590 ----
    "vavgu<VI_char> %0,%1,%2"
    [(set_attr "type" "vecsimple")])
  
! (define_insn "avg<mode>3_ceil"
    [(set (match_operand:VI 0 "register_operand" "=v")
          (unspec:VI [(match_operand:VI 1 "register_operand" "v")
                      (match_operand:VI 2 "register_operand" "v")]
***************
*** 4317,4539 ****
    [(set_attr "length" "4")
     (set_attr "type" "vecsimple")])
  
- (define_insn "darn_32"
-   [(set (match_operand:SI 0 "register_operand" "=r")
-         (unspec:SI [(const_int 0)] UNSPEC_DARN_32))]
-   "TARGET_P9_MISC"
-   "darn %0,0"
-   [(set_attr "type" "integer")])
- 
- (define_insn "darn_raw"
-   [(set (match_operand:DI 0 "register_operand" "=r")
-         (unspec:DI [(const_int 0)] UNSPEC_DARN_RAW))]
-   "TARGET_P9_MISC && TARGET_64BIT"
-   "darn %0,2"
-   [(set_attr "type" "integer")])
- 
- (define_insn "darn"
-   [(set (match_operand:DI 0 "register_operand" "=r")
-         (unspec:DI [(const_int 0)] UNSPEC_DARN))]
-   "TARGET_P9_MISC && TARGET_64BIT"
-   "darn %0,1"
-   [(set_attr "type" "integer")])
- 
- ;; Test byte within range.
- ;;
- ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
- ;; represents a byte whose value is ignored in this context and
- ;; vv, the least significant byte, holds the byte value that is to
- ;; be tested for membership within the range specified by operand 2.
- ;; The bytes of operand 2 are organized as xx:xx:hi:lo.
- ;;
- ;; Return in target register operand 0 a value of 1 if lo <= vv and
- ;; vv <= hi.  Otherwise, set register operand 0 to 0.
- ;;
- ;; Though the instructions to which this expansion maps operate on
- ;; 64-bit registers, the current implementation only operates on
- ;; SI-mode operands as the high-order bits provide no information
- ;; that is not already available in the low-order bits.  To avoid the
- ;; costs of data widening operations, future enhancements might allow
- ;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
- (define_expand "cmprb"
-   [(set (match_dup 3)
- 	(unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
- 		    (match_operand:SI 2 "gpc_reg_operand" "r")]
- 	 UNSPEC_CMPRB))
-    (set (match_operand:SI 0 "gpc_reg_operand" "=r")
- 	(if_then_else:SI (lt (match_dup 3)
- 			     (const_int 0))
- 			 (const_int -1)
- 			 (if_then_else (gt (match_dup 3)
- 					   (const_int 0))
- 				       (const_int 1)
- 				       (const_int 0))))]
-   "TARGET_P9_MISC"
- {
-   operands[3] = gen_reg_rtx (CCmode);
- })
- 
- ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
- ;; represents a byte whose value is ignored in this context and
- ;; vv, the least significant byte, holds the byte value that is to
- ;; be tested for membership within the range specified by operand 2.
- ;; The bytes of operand 2 are organized as xx:xx:hi:lo.
- ;;
- ;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if
- ;; lo <= vv and vv <= hi.  Otherwise, set the GT bit to 0.  The other
- ;; 3 bits of the target CR register are all set to 0.
- (define_insn "*cmprb_internal"
-   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
- 	(unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
- 		    (match_operand:SI 2 "gpc_reg_operand" "r")]
- 	 UNSPEC_CMPRB))]
-   "TARGET_P9_MISC"
-   "cmprb %0,0,%1,%2"
-   [(set_attr "type" "logical")])
- 
- ;; Set operand 0 register to -1 if the LT bit (0x8) of condition
- ;; register operand 1 is on.  Otherwise, set operand 0 register to 1
- ;; if the GT bit (0x4) of condition register operand 1 is on.
- ;; Otherwise, set operand 0 to 0.  Note that the result stored into
- ;; register operand 0 is non-zero iff either the LT or GT bits are on
- ;; within condition register operand 1.
- (define_insn "setb_signed"
-    [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- 	 (if_then_else:SI (lt (match_operand:CC 1 "cc_reg_operand" "y")
- 			      (const_int 0))
- 			  (const_int -1)
- 			  (if_then_else (gt (match_dup 1)
- 					    (const_int 0))
- 					(const_int 1)
- 					(const_int 0))))]
-   "TARGET_P9_MISC"
-   "setb %0,%1"
-   [(set_attr "type" "logical")])
- 
- (define_insn "setb_unsigned"
-    [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
- 	 (if_then_else:SI (ltu (match_operand:CCUNS 1 "cc_reg_operand" "y")
- 			      (const_int 0))
- 			  (const_int -1)
- 			  (if_then_else (gtu (match_dup 1)
- 					    (const_int 0))
- 					(const_int 1)
- 					(const_int 0))))]
-   "TARGET_P9_MISC"
-   "setb %0,%1"
-   [(set_attr "type" "logical")])
- 
- ;; Test byte within two ranges.
- ;;
- ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
- ;; represents a byte whose value is ignored in this context and
- ;; vv, the least significant byte, holds the byte value that is to
- ;; be tested for membership within the range specified by operand 2.
- ;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2.
- ;;
- ;; Return in target register operand 0 a value of 1 if (lo_1 <= vv and
- ;; vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2).  Otherwise, set register
- ;; operand 0 to 0.
- ;;
- ;; Though the instructions to which this expansion maps operate on
- ;; 64-bit registers, the current implementation only operates on
- ;; SI-mode operands as the high-order bits provide no information
- ;; that is not already available in the low-order bits.  To avoid the
- ;; costs of data widening operations, future enhancements might allow
- ;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
- (define_expand "cmprb2"
-   [(set (match_dup 3)
- 	(unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
- 		    (match_operand:SI 2 "gpc_reg_operand" "r")]
- 	 UNSPEC_CMPRB2))
-    (set (match_operand:SI 0 "gpc_reg_operand" "=r")
- 	(if_then_else:SI (lt (match_dup 3)
- 			     (const_int 0))
- 			 (const_int -1)
- 			 (if_then_else (gt (match_dup 3)
- 					   (const_int 0))
- 				       (const_int 1)
- 				       (const_int 0))))]
-   "TARGET_P9_MISC"
- {
-   operands[3] = gen_reg_rtx (CCmode);
- })
- 
- ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
- ;; represents a byte whose value is ignored in this context and
- ;; vv, the least significant byte, holds the byte value that is to
- ;; be tested for membership within the ranges specified by operand 2.
- ;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2.
- ;;
- ;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if
- ;; (lo_1 <= vv and vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2).
- ;; Otherwise, set the GT bit to 0.  The other 3 bits of the target
- ;; CR register are all set to 0.
- (define_insn "*cmprb2_internal"
-   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
- 	(unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
- 		    (match_operand:SI 2 "gpc_reg_operand" "r")]
- 	 UNSPEC_CMPRB2))]
-   "TARGET_P9_MISC"
-   "cmprb %0,1,%1,%2"
-   [(set_attr "type" "logical")])
- 
- ;; Test byte membership within set of 8 bytes.
- ;;
- ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
- ;; represents a byte whose value is ignored in this context and
- ;; vv, the least significant byte, holds the byte value that is to
- ;; be tested for membership within the set specified by operand 2.
- ;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7.
- ;;
- ;; Return in target register operand 0 a value of 1 if vv equals one
- ;; of the values e0, e1, e2, e3, e4, e5, e6, or e7.  Otherwise, set
- ;; register operand 0 to 0.  Note that the 8 byte values held within
- ;; operand 2 need not be unique.
- ;;
- ;; Though the instructions to which this expansion maps operate on
- ;; 64-bit registers, the current implementation requires that operands
- ;; 0 and 1 have mode SI as the high-order bits provide no information
- ;; that is not already available in the low-order bits.  To avoid the
- ;; costs of data widening operations, future enhancements might allow
- ;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
- (define_expand "cmpeqb"
-   [(set (match_dup 3)
- 	(unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
- 		    (match_operand:DI 2 "gpc_reg_operand" "r")]
- 	 UNSPEC_CMPEQB))
-    (set (match_operand:SI 0 "gpc_reg_operand" "=r")
- 	(if_then_else:SI (lt (match_dup 3)
- 			     (const_int 0))
- 			 (const_int -1)
- 			 (if_then_else (gt (match_dup 3)
- 					   (const_int 0))
- 				       (const_int 1)
- 				       (const_int 0))))]
-   "TARGET_P9_MISC && TARGET_64BIT"
- {
-   operands[3] = gen_reg_rtx (CCmode);
- })
- 
- ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
- ;; represents a byte whose value is ignored in this context and
- ;; vv, the least significant byte, holds the byte value that is to
- ;; be tested for membership within the set specified by operand 2.
- ;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7.
- ;;
- ;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if vv
- ;; equals one of the values e0, e1, e2, e3, e4, e5, e6, or e7.  Otherwise,
- ;; set the GT bit to zero.  The other 3 bits of the target CR register
- ;; are all set to 0.
- (define_insn "*cmpeqb_internal"
-   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
- 	 (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
- 		     (match_operand:DI 2 "gpc_reg_operand" "r")]
- 	  UNSPEC_CMPEQB))]
-   "TARGET_P9_MISC && TARGET_64BIT"
-   "cmpeqb %0,%1,%2"
-   [(set_attr "type" "logical")])
- 
  (define_expand "bcd<bcd_add_sub>_<code>"
    [(parallel [(set (reg:CCFP CR6_REGNO)
  		   (compare:CCFP
--- 4311,4316 ----
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/crypto.md gcc-8.4.0/gcc/config/rs6000/crypto.md
*** gcc-8.3.0/gcc/config/rs6000/crypto.md	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/rs6000/crypto.md	Wed Mar  4 08:30:00 2020
***************
*** 48,53 ****
--- 48,56 ----
  ;; Iterator for VSHASIGMAD/VSHASIGMAW
  (define_mode_iterator CR_hash [V4SI V2DI])
  
+ ;; Iterator for VSBOX/VCIPHER/VNCIPHER/VCIPHERLAST/VNCIPHERLAST
+ (define_mode_iterator CR_vqdi [V16QI V2DI])
+ 
  ;; Iterator for the other crypto functions
  (define_int_iterator CR_code   [UNSPEC_VCIPHER
  				UNSPEC_VNCIPHER
***************
*** 60,69 ****
  			  (UNSPEC_VNCIPHERLAST "vncipherlast")])
  
  ;; 2 operand crypto instructions
! (define_insn "crypto_<CR_insn>"
!   [(set (match_operand:V2DI 0 "register_operand" "=v")
! 	(unspec:V2DI [(match_operand:V2DI 1 "register_operand" "v")
! 		      (match_operand:V2DI 2 "register_operand" "v")]
  		     CR_code))]
    "TARGET_CRYPTO"
    "<CR_insn> %0,%1,%2"
--- 63,72 ----
  			  (UNSPEC_VNCIPHERLAST "vncipherlast")])
  
  ;; 2 operand crypto instructions
! (define_insn "crypto_<CR_insn>_<mode>"
!   [(set (match_operand:CR_vqdi 0 "register_operand" "=v")
! 	(unspec:CR_vqdi [(match_operand:CR_vqdi 1 "register_operand" "v")
! 		      (match_operand:CR_vqdi 2 "register_operand" "v")]
  		     CR_code))]
    "TARGET_CRYPTO"
    "<CR_insn> %0,%1,%2"
***************
*** 90,98 ****
    [(set_attr "type" "vecperm")])
  
  ;; 1 operand crypto instruction
! (define_insn "crypto_vsbox"
!   [(set (match_operand:V2DI 0 "register_operand" "=v")
! 	(unspec:V2DI [(match_operand:V2DI 1 "register_operand" "v")]
  		     UNSPEC_VSBOX))]
    "TARGET_CRYPTO"
    "vsbox %0,%1"
--- 93,101 ----
    [(set_attr "type" "vecperm")])
  
  ;; 1 operand crypto instruction
! (define_insn "crypto_vsbox_<mode>"
!   [(set (match_operand:CR_vqdi 0 "register_operand" "=v")
! 	(unspec:CR_vqdi [(match_operand:CR_vqdi 1 "register_operand" "v")]
  		     UNSPEC_VSBOX))]
    "TARGET_CRYPTO"
    "vsbox %0,%1"
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/darwin.h gcc-8.4.0/gcc/config/rs6000/darwin.h
*** gcc-8.3.0/gcc/config/rs6000/darwin.h	Sun Oct 28 10:02:06 2018
--- gcc-8.4.0/gcc/config/rs6000/darwin.h	Wed Mar  4 08:30:00 2020
***************
*** 53,69 ****
  #define TARGET_OS_CPP_BUILTINS()			\
    do							\
      {							\
-       if (!TARGET_64BIT) builtin_define ("__ppc__");	\
-       if (TARGET_64BIT) builtin_define ("__ppc64__");	\
        builtin_define ("__POWERPC__");			\
        builtin_define ("__NATURAL_ALIGNMENT__");		\
        darwin_cpp_builtins (pfile);			\
      }							\
    while (0)
  
- /* Generate branch islands stubs if this is true.  */
- extern int darwin_emit_branch_islands;
- 
  #define SUBTARGET_OVERRIDE_OPTIONS darwin_rs6000_override_options ()
  
  #define C_COMMON_OVERRIDE_OPTIONS do {					\
--- 53,80 ----
  #define TARGET_OS_CPP_BUILTINS()			\
    do							\
      {							\
        builtin_define ("__POWERPC__");			\
+       builtin_define ("__PPC__");			\
+       if (TARGET_64BIT)					\
+ 	{						\
+ 	  builtin_define ("__ppc64__");			\
+ 	  builtin_define ("__PPC64__");			\
+ 	  builtin_define ("__powerpc64__");		\
+ 	  builtin_assert ("cpu=powerpc64");		\
+ 	  builtin_assert ("machine=powerpc64");		\
+ 	}						\
+       else						\
+ 	{						\
+ 	  builtin_define ("__ppc__");			\
+ 	  builtin_define_std ("PPC");			\
+ 	  builtin_assert ("cpu=powerpc");		\
+ 	  builtin_assert ("machine=powerpc");		\
+ 	}						\
        builtin_define ("__NATURAL_ALIGNMENT__");		\
        darwin_cpp_builtins (pfile);			\
      }							\
    while (0)
  
  #define SUBTARGET_OVERRIDE_OPTIONS darwin_rs6000_override_options ()
  
  #define C_COMMON_OVERRIDE_OPTIONS do {					\
*************** extern int darwin_emit_branch_islands;
*** 98,108 ****
    %<faltivec %<fno-altivec " \
    DARWIN_CC1_SPEC
  
! #define DARWIN_ARCH_SPEC "%{m64:ppc64;:ppc}"
  
  #define DARWIN_SUBARCH_SPEC "			\
-  %{m64: ppc64}					\
-  %{!m64:					\
   %{mcpu=601:ppc601;				\
     mcpu=603:ppc603;				\
     mcpu=603e:ppc603;				\
--- 109,118 ----
    %<faltivec %<fno-altivec " \
    DARWIN_CC1_SPEC
  
! /* Default to PPC for single arch builds.  */
! #define DARWIN_ARCH_SPEC "ppc"
  
  #define DARWIN_SUBARCH_SPEC "			\
   %{mcpu=601:ppc601;				\
     mcpu=603:ppc603;				\
     mcpu=603e:ppc603;				\
*************** extern int darwin_emit_branch_islands;
*** 117,127 ****
     mcpu=970:ppc970;				\
     mcpu=power4:ppc970;				\
     mcpu=G5:ppc970;				\
!    :ppc}}"
  
! /* crt2.o is at least partially required for 10.3.x and earlier.  */
  #define DARWIN_CRT2_SPEC \
!   "%{!m64:%:version-compare(!> 10.4 mmacosx-version-min= crt2.o%s)}"
  
  #undef SUBTARGET_EXTRA_SPECS
  #define SUBTARGET_EXTRA_SPECS			\
--- 127,177 ----
     mcpu=970:ppc970;				\
     mcpu=power4:ppc970;				\
     mcpu=G5:ppc970;				\
!    :ppc}"
  
! /* We need to jam the crt to 10.5 for 10.6 (Rosetta) use.  */
! #undef DARWIN_CRT1_SPEC
! #define DARWIN_CRT1_SPEC						\
!   "%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o)		\
!    %:version-compare(>< 10.5 10.7 mmacosx-version-min= -lcrt1.10.5.o)	\
!    %{fgnu-tm: -lcrttms.o}"
! 
! /* crt2.o is at least partially required for 10.3.x and earlier.
!    It deals with registration of the unwind frames, where this is not
!    automatically provided by the system.  So we need it for any case that
!    might use exceptions.  */
! #undef DARWIN_CRT2_SPEC
  #define DARWIN_CRT2_SPEC \
! "%{!m64:%{shared-libgcc|static-libstdc++|fexceptions|fobjc-exceptions|fgnu-runtime: \
!    %:version-compare(!> 10.4 mmacosx-version-min= crt2.o%s) \
!   }}"
! 
! /* crt3 deals with providing cxa_atexit on earlier systems (or fixing it up,
!    for broken versions).  It's only needed for c++ code, so we can make it
!    conditional on shared-libgcc since that's forced on for c++.  */
! #undef DARWIN_CRT3_SPEC
! #define DARWIN_CRT3_SPEC \
! "%{!m64:%{shared-libgcc|static-libstdc++:							\
!    %:version-compare(>< 10.4 10.5 mmacosx-version-min= crt3.o%s) \
!    %:version-compare(!> 10.4 mmacosx-version-min= crt3_2.o%s) \
!   }}"
! 
! /* As for crt1, we need to force the dylib crt for 10.6.  */
! #undef DARWIN_DYLIB1_SPEC
! #define DARWIN_DYLIB1_SPEC						\
!   "%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o)		\
!    %:version-compare(>< 10.5 10.7 mmacosx-version-min= -ldylib1.10.5.o)"
! 
! /* Likewise, the bundle crt.  */
! #undef DARWIN_BUNDLE1_SPEC
! #define DARWIN_BUNDLE1_SPEC \
! "%{!static:%:version-compare(< 10.7 mmacosx-version-min= -lbundle1.o)	\
! 	   %{fgnu-tm: -lcrttms.o}}"
! 
! /* The PPC regs save/restore functions are leaves and could, conceivably
!    be used by the tm destructor.  */
! #undef ENDFILE_SPEC
! #define ENDFILE_SPEC TM_DESTRUCTOR " -lef_ppc"
  
  #undef SUBTARGET_EXTRA_SPECS
  #define SUBTARGET_EXTRA_SPECS			\
*************** extern int darwin_emit_branch_islands;
*** 265,273 ****
  /* This is supported in cctools 465 and later.  The macro test
     above prevents using it in earlier build environments.  */
  #define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP)          \
!   if ((LOG) != 0)                                             \
      {                                                         \
!       if ((MAX_SKIP) == 0)                                    \
          fprintf ((FILE), "\t.p2align %d\n", (LOG));           \
        else                                                    \
          fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
--- 315,323 ----
  /* This is supported in cctools 465 and later.  The macro test
     above prevents using it in earlier build environments.  */
  #define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP)          \
!   if ((LOG) > 0)                                             \
      {                                                         \
!       if ((MAX_SKIP) <= 0)                                    \
          fprintf ((FILE), "\t.p2align %d\n", (LOG));           \
        else                                                    \
          fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
*************** extern int darwin_emit_branch_islands;
*** 382,387 ****
--- 432,438 ----
    do \
      { \
        DARWIN_REGISTER_TARGET_PRAGMAS(); \
+       targetm.target_option.pragma_parse = rs6000_pragma_target_parse; \
        targetm.resolve_overloaded_builtin = altivec_resolve_overloaded_builtin; \
      } \
    while (0)
*************** do {									\
*** 441,446 ****
--- 492,500 ----
     this will need to be modified similar to the x86 case.  */
  #define TARGET_FOLD_BUILTIN SUBTARGET_FOLD_BUILTIN
  
+ /* First available SYMBOL flag bit for use by subtargets.  */
+ #define SYMBOL_FLAG_SUBT_DEP (SYMBOL_FLAG_MACH_DEP)
+ 
  /* Use standard DWARF numbering for DWARF debugging information.  */
  #define RS6000_USE_DWARF_NUMBERING
  
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/darwin.md gcc-8.4.0/gcc/config/rs6000/darwin.md
*** gcc-8.3.0/gcc/config/rs6000/darwin.md	Thu Feb 22 01:09:18 2018
--- gcc-8.4.0/gcc/config/rs6000/darwin.md	Wed Mar  4 08:30:00 2020
*************** You should have received a copy of the G
*** 137,174 ****
    [(set_attr "type" "store")
     (set_attr "length" "4")])
  
- ;; 64-bit MachO load/store support
- (define_insn "movdi_low"
-   [(set (match_operand:DI 0 "gpc_reg_operand" "=r,*!d")
-         (mem:DI (lo_sum:DI (match_operand:DI 1 "gpc_reg_operand" "b,b")
-                            (match_operand 2 "" ""))))]
-   "TARGET_MACHO && TARGET_64BIT"
-   "@
-    ld %0,lo16(%2)(%1)
-    lfd %0,lo16(%2)(%1)"
-   [(set_attr "type" "load")
-    (set_attr "length" "4")])
- 
- (define_insn "movsi_low_st"
-   [(set (mem:SI (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b")
-                            (match_operand 2 "" "")))
- 	(match_operand:SI 0 "gpc_reg_operand" "r"))]
-   "TARGET_MACHO && ! TARGET_64BIT"
-   "stw %0,lo16(%2)(%1)"
-   [(set_attr "type" "store")
-    (set_attr "length" "4")])
- 
- (define_insn "movdi_low_st"
-   [(set (mem:DI (lo_sum:DI (match_operand:DI 1 "gpc_reg_operand" "b,b")
-                            (match_operand 2 "" "")))
- 	(match_operand:DI 0 "gpc_reg_operand" "r,*!d"))]
-   "TARGET_MACHO && TARGET_64BIT"
-   "@
-    std %0,lo16(%2)(%1)
-    stfd %0,lo16(%2)(%1)"
-   [(set_attr "type" "store")
-    (set_attr "length" "4")])
- 
  ;; Mach-O PIC trickery.
  (define_expand "macho_high"
    [(set (match_operand 0 "")
--- 137,142 ----
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/darwin32-biarch.h gcc-8.4.0/gcc/config/rs6000/darwin32-biarch.h
*** gcc-8.3.0/gcc/config/rs6000/darwin32-biarch.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/config/rs6000/darwin32-biarch.h	Wed Mar  4 08:30:00 2020
***************
*** 0 ****
--- 1,49 ----
+ /* Target definitions for PowerPC running Darwin (Mac OS X) for a 32b host
+    with a 64b miultilib.
+    Copyright (C) 2019 Free Software Foundation, Inc.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 3, or (at your
+    option) any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+    License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #undef DARWIN_ARCH_SPEC
+ #define DARWIN_ARCH_SPEC "%{m64:ppc64;:ppc}"
+ 
+ #undef DARWIN_SUBARCH_SPEC
+ #define DARWIN_SUBARCH_SPEC "			\
+  %{m64: ppc64}					\
+  %{!m64:					\
+  %{mcpu=601:ppc601;				\
+    mcpu=603:ppc603;				\
+    mcpu=603e:ppc603;				\
+    mcpu=604:ppc604;				\
+    mcpu=604e:ppc604e;				\
+    mcpu=740:ppc750;				\
+    mcpu=750:ppc750;				\
+    mcpu=G3:ppc750;				\
+    mcpu=7400:ppc7400;				\
+    mcpu=G4:ppc7400;				\
+    mcpu=7450:ppc7450;				\
+    mcpu=970:ppc970;				\
+    mcpu=power4:ppc970;				\
+    mcpu=G5:ppc970;				\
+    :ppc}}"
+ 
+ #undef SUBTARGET_EXTRA_SPECS
+ #define SUBTARGET_EXTRA_SPECS			\
+   DARWIN_EXTRA_SPECS                            \
+   { "darwin_arch", DARWIN_ARCH_SPEC },		\
+   { "darwin_crt2", DARWIN_CRT2_SPEC },		\
+   { "darwin_subarch", DARWIN_SUBARCH_SPEC },
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/darwin64-biarch.h gcc-8.4.0/gcc/config/rs6000/darwin64-biarch.h
*** gcc-8.3.0/gcc/config/rs6000/darwin64-biarch.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/config/rs6000/darwin64-biarch.h	Wed Mar  4 08:30:00 2020
***************
*** 0 ****
--- 1,38 ----
+ /* Target definitions for PowerPC64 running Darwin (Mac OS X) for a 64b host
+    supporting a 32b multilib.
+    Copyright (C) 2006-2019 Free Software Foundation, Inc.
+    Contributed by Apple Computer 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/>.  */
+ 
+ #undef  TARGET_DEFAULT
+ #define TARGET_DEFAULT (MASK_POWERPC64 | MASK_64BIT \
+ 			| MASK_MULTIPLE | MASK_PPC_GFXOPT)
+ 
+ #undef DARWIN_ARCH_SPEC
+ #define DARWIN_ARCH_SPEC "%{m32:ppc;:ppc64}"
+ 
+ /* Actually, there's really only 970 as an active option.  */
+ #undef DARWIN_SUBARCH_SPEC
+ #define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC
+ 
+ #undef SUBTARGET_EXTRA_SPECS
+ #define SUBTARGET_EXTRA_SPECS			\
+   DARWIN_EXTRA_SPECS                            \
+   { "darwin_arch", DARWIN_ARCH_SPEC },		\
+   { "darwin_crt2", "" },			\
+   { "darwin_subarch", DARWIN_SUBARCH_SPEC },
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/darwin64.h gcc-8.4.0/gcc/config/rs6000/darwin64.h
*** gcc-8.3.0/gcc/config/rs6000/darwin64.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/rs6000/darwin64.h	Thu Jan  1 00:00:00 1970
***************
*** 1,32 ****
- /* Target definitions for PowerPC running Darwin (Mac OS X).
-    Copyright (C) 2006-2018 Free Software Foundation, Inc.
-    Contributed by Apple Computer 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/>.  */
- 
- #undef  TARGET_DEFAULT
- #define TARGET_DEFAULT (MASK_POWERPC64 | MASK_64BIT \
- 			| MASK_MULTIPLE | MASK_PPC_GFXOPT)
- 
- #undef DARWIN_ARCH_SPEC
- #define DARWIN_ARCH_SPEC "%{m32:ppc;:ppc64}"
- 
- #undef DARWIN_SUBARCH_SPEC
- #define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC
- 
- #undef DARWIN_CRT2_SPEC
- #define DARWIN_CRT2_SPEC ""
--- 0 ----
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/mmintrin.h gcc-8.4.0/gcc/config/rs6000/mmintrin.h
*** gcc-8.3.0/gcc/config/rs6000/mmintrin.h	Tue Apr  3 19:06:28 2018
--- gcc-8.4.0/gcc/config/rs6000/mmintrin.h	Wed Mar  4 08:30:00 2020
*************** _mm_sub_pi32 (__m64 __m1, __m64 __m2)
*** 581,587 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _m_psubd (__m64 __m1, __m64 __m2)
  {
!   return _mm_add_pi32 (__m1, __m2);
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 581,587 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _m_psubd (__m64 __m1, __m64 __m2)
  {
!   return _mm_sub_pi32 (__m1, __m2);
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/power9.md gcc-8.4.0/gcc/config/rs6000/power9.md
*** gcc-8.3.0/gcc/config/rs6000/power9.md	Mon Jan 15 23:02:03 2018
--- gcc-8.4.0/gcc/config/rs6000/power9.md	Wed Mar  4 08:30:00 2020
***************
*** 236,241 ****
--- 236,244 ----
         (eq_attr "cpu" "power9"))
    "DU_super_power9,LSU_pair_power9")
  
+ ; Store forwarding latency is 6
+ (define_bypass 6 "power9-*store*" "power9-*load*")
+ 
  (define_insn_reservation "power9-larx" 4
    (and (eq_attr "type" "load_l")
         (eq_attr "cpu" "power9"))
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/predicates.md gcc-8.4.0/gcc/config/rs6000/predicates.md
*** gcc-8.3.0/gcc/config/rs6000/predicates.md	Wed Feb  7 23:42:51 2018
--- gcc-8.4.0/gcc/config/rs6000/predicates.md	Wed Mar  4 08:30:00 2020
***************
*** 1085,1092 ****
      return 1;
  
    /* Allow any integer constant.  */
!   if (GET_MODE_CLASS (mode) == MODE_INT
!       && CONST_SCALAR_INT_P (op))
      return 1;
  
    /* Allow easy vector constants.  */
--- 1085,1091 ----
      return 1;
  
    /* Allow any integer constant.  */
!   if (SCALAR_INT_MODE_P (mode) && CONST_SCALAR_INT_P (op))
      return 1;
  
    /* Allow easy vector constants.  */
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/rs6000-builtin.def gcc-8.4.0/gcc/config/rs6000/rs6000-builtin.def
*** gcc-8.3.0/gcc/config/rs6000/rs6000-builtin.def	Fri Jun 22 14:11:56 2018
--- gcc-8.4.0/gcc/config/rs6000/rs6000-builtin.def	Wed Mar  4 08:30:00 2020
*************** BU_ALTIVEC_2 (VADDUWS,	      "vadduws",
*** 1048,1059 ****
  BU_ALTIVEC_2 (VADDSWS,	      "vaddsws",	CONST,	altivec_vaddsws)
  BU_ALTIVEC_2 (VAND,	      "vand",		CONST,	andv4si3)
  BU_ALTIVEC_2 (VANDC,	      "vandc",		CONST,	andcv4si3)
! BU_ALTIVEC_2 (VAVGUB,	      "vavgub",		CONST,	altivec_vavgub)
! BU_ALTIVEC_2 (VAVGSB,	      "vavgsb",		CONST,	altivec_vavgsb)
! BU_ALTIVEC_2 (VAVGUH,	      "vavguh",		CONST,	altivec_vavguh)
! BU_ALTIVEC_2 (VAVGSH,	      "vavgsh",		CONST,	altivec_vavgsh)
! BU_ALTIVEC_2 (VAVGUW,	      "vavguw",		CONST,	altivec_vavguw)
! BU_ALTIVEC_2 (VAVGSW,	      "vavgsw",		CONST,	altivec_vavgsw)
  BU_ALTIVEC_2 (VCFUX,	      "vcfux",		CONST,	altivec_vcfux)
  BU_ALTIVEC_2 (VCFSX,	      "vcfsx",		CONST,	altivec_vcfsx)
  BU_ALTIVEC_2 (VCMPBFP,	      "vcmpbfp",	CONST,	altivec_vcmpbfp)
--- 1048,1059 ----
  BU_ALTIVEC_2 (VADDSWS,	      "vaddsws",	CONST,	altivec_vaddsws)
  BU_ALTIVEC_2 (VAND,	      "vand",		CONST,	andv4si3)
  BU_ALTIVEC_2 (VANDC,	      "vandc",		CONST,	andcv4si3)
! BU_ALTIVEC_2 (VAVGUB,	      "vavgub",		CONST,	uavgv16qi3_ceil)
! BU_ALTIVEC_2 (VAVGSB,	      "vavgsb",		CONST,	avgv16qi3_ceil)
! BU_ALTIVEC_2 (VAVGUH,	      "vavguh",		CONST,	uavgv8hi3_ceil)
! BU_ALTIVEC_2 (VAVGSH,	      "vavgsh",		CONST,	avgv8hi3_ceil)
! BU_ALTIVEC_2 (VAVGUW,	      "vavguw",		CONST,	uavgv4si3_ceil)
! BU_ALTIVEC_2 (VAVGSW,	      "vavgsw",		CONST,	avgv4si3_ceil)
  BU_ALTIVEC_2 (VCFUX,	      "vcfux",		CONST,	altivec_vcfux)
  BU_ALTIVEC_2 (VCFSX,	      "vcfsx",		CONST,	altivec_vcfsx)
  BU_ALTIVEC_2 (VCMPBFP,	      "vcmpbfp",	CONST,	altivec_vcmpbfp)
*************** BU_ALTIVEC_X (MTVSCR,		"mtvscr",	    MIS
*** 1223,1248 ****
  BU_ALTIVEC_X (MFVSCR,		"mfvscr",	    MISC)
  BU_ALTIVEC_X (DSSALL,		"dssall",	    MISC)
  BU_ALTIVEC_X (DSS,		"dss",		    MISC)
! BU_ALTIVEC_X (LVSL,		"lvsl",		    MEM)
! BU_ALTIVEC_X (LVSR,		"lvsr",		    MEM)
! BU_ALTIVEC_X (LVEBX,		"lvebx",	    MEM)
! BU_ALTIVEC_X (LVEHX,		"lvehx",	    MEM)
! BU_ALTIVEC_X (LVEWX,		"lvewx",	    MEM)
! BU_ALTIVEC_X (LVXL,		"lvxl",		    MEM)
! BU_ALTIVEC_X (LVXL_V2DF,	"lvxl_v2df",	    MEM)
! BU_ALTIVEC_X (LVXL_V2DI,	"lvxl_v2di",	    MEM)
! BU_ALTIVEC_X (LVXL_V4SF,	"lvxl_v4sf",	    MEM)
! BU_ALTIVEC_X (LVXL_V4SI,	"lvxl_v4si",	    MEM)
! BU_ALTIVEC_X (LVXL_V8HI,	"lvxl_v8hi",	    MEM)
! BU_ALTIVEC_X (LVXL_V16QI,	"lvxl_v16qi",	    MEM)
! BU_ALTIVEC_X (LVX,		"lvx",		    MEM)
! BU_ALTIVEC_X (LVX_V1TI,		"lvx_v1ti",	    MEM)
! BU_ALTIVEC_X (LVX_V2DF,		"lvx_v2df",	    MEM)
! BU_ALTIVEC_X (LVX_V2DI,		"lvx_v2di",	    MEM)
! BU_ALTIVEC_X (LVX_V4SF,		"lvx_v4sf",	    MEM)
! BU_ALTIVEC_X (LVX_V4SI,		"lvx_v4si",	    MEM)
! BU_ALTIVEC_X (LVX_V8HI,		"lvx_v8hi",	    MEM)
! BU_ALTIVEC_X (LVX_V16QI,	"lvx_v16qi",	    MEM)
  BU_ALTIVEC_X (STVX,		"stvx",		    MEM)
  BU_ALTIVEC_X (STVX_V2DF,	"stvx_v2df",	    MEM)
  BU_ALTIVEC_X (STVX_V2DI,	"stvx_v2di",	    MEM)
--- 1223,1248 ----
  BU_ALTIVEC_X (MFVSCR,		"mfvscr",	    MISC)
  BU_ALTIVEC_X (DSSALL,		"dssall",	    MISC)
  BU_ALTIVEC_X (DSS,		"dss",		    MISC)
! BU_ALTIVEC_X (LVSL,		"lvsl",		    PURE)
! BU_ALTIVEC_X (LVSR,		"lvsr",		    PURE)
! BU_ALTIVEC_X (LVEBX,		"lvebx",	    PURE)
! BU_ALTIVEC_X (LVEHX,		"lvehx",	    PURE)
! BU_ALTIVEC_X (LVEWX,		"lvewx",	    PURE)
! BU_ALTIVEC_X (LVXL,		"lvxl",		    PURE)
! BU_ALTIVEC_X (LVXL_V2DF,	"lvxl_v2df",	    PURE)
! BU_ALTIVEC_X (LVXL_V2DI,	"lvxl_v2di",	    PURE)
! BU_ALTIVEC_X (LVXL_V4SF,	"lvxl_v4sf",	    PURE)
! BU_ALTIVEC_X (LVXL_V4SI,	"lvxl_v4si",	    PURE)
! BU_ALTIVEC_X (LVXL_V8HI,	"lvxl_v8hi",	    PURE)
! BU_ALTIVEC_X (LVXL_V16QI,	"lvxl_v16qi",	    PURE)
! BU_ALTIVEC_X (LVX,		"lvx",		    PURE)
! BU_ALTIVEC_X (LVX_V1TI,		"lvx_v1ti",	    PURE)
! BU_ALTIVEC_X (LVX_V2DF,		"lvx_v2df",	    PURE)
! BU_ALTIVEC_X (LVX_V2DI,		"lvx_v2di",	    PURE)
! BU_ALTIVEC_X (LVX_V4SF,		"lvx_v4sf",	    PURE)
! BU_ALTIVEC_X (LVX_V4SI,		"lvx_v4si",	    PURE)
! BU_ALTIVEC_X (LVX_V8HI,		"lvx_v8hi",	    PURE)
! BU_ALTIVEC_X (LVX_V16QI,	"lvx_v16qi",	    PURE)
  BU_ALTIVEC_X (STVX,		"stvx",		    MEM)
  BU_ALTIVEC_X (STVX_V2DF,	"stvx_v2df",	    MEM)
  BU_ALTIVEC_X (STVX_V2DI,	"stvx_v2di",	    MEM)
*************** BU_ALTIVEC_X (STVX_V4SF,	"stvx_v4sf",
*** 1250,1259 ****
  BU_ALTIVEC_X (STVX_V4SI,	"stvx_v4si",	    MEM)
  BU_ALTIVEC_X (STVX_V8HI,	"stvx_v8hi",	    MEM)
  BU_ALTIVEC_X (STVX_V16QI,	"stvx_v16qi",	    MEM)
! BU_ALTIVEC_C (LVLX,		"lvlx",		    MEM)
! BU_ALTIVEC_C (LVLXL,		"lvlxl",	    MEM)
! BU_ALTIVEC_C (LVRX,		"lvrx",		    MEM)
! BU_ALTIVEC_C (LVRXL,		"lvrxl",	    MEM)
  BU_ALTIVEC_X (STVEBX,		"stvebx",	    MEM)
  BU_ALTIVEC_X (STVEHX,		"stvehx",	    MEM)
  BU_ALTIVEC_X (STVEWX,		"stvewx",	    MEM)
--- 1250,1259 ----
  BU_ALTIVEC_X (STVX_V4SI,	"stvx_v4si",	    MEM)
  BU_ALTIVEC_X (STVX_V8HI,	"stvx_v8hi",	    MEM)
  BU_ALTIVEC_X (STVX_V16QI,	"stvx_v16qi",	    MEM)
! BU_ALTIVEC_C (LVLX,		"lvlx",		    PURE)
! BU_ALTIVEC_C (LVLXL,		"lvlxl",	    PURE)
! BU_ALTIVEC_C (LVRX,		"lvrx",		    PURE)
! BU_ALTIVEC_C (LVRXL,		"lvrxl",	    PURE)
  BU_ALTIVEC_X (STVEBX,		"stvebx",	    MEM)
  BU_ALTIVEC_X (STVEHX,		"stvehx",	    MEM)
  BU_ALTIVEC_X (STVEWX,		"stvewx",	    MEM)
*************** BU_VSX_P (XVCMPGEDP_P,	      "xvcmpgedp_
*** 1764,1778 ****
  BU_VSX_P (XVCMPGTDP_P,	      "xvcmpgtdp_p",	CONST,	vector_gt_v2df_p)
  
  /* VSX builtins that are handled as special cases.  */
! BU_VSX_X (LXSDX,	      "lxsdx",		MEM)
! BU_VSX_X (LXVD2X_V1TI,	      "lxvd2x_v1ti",	MEM)
! BU_VSX_X (LXVD2X_V2DF,	      "lxvd2x_v2df",	MEM)
! BU_VSX_X (LXVD2X_V2DI,	      "lxvd2x_v2di",	MEM)
! BU_VSX_X (LXVDSX,	      "lxvdsx",		MEM)
! BU_VSX_X (LXVW4X_V4SF,	      "lxvw4x_v4sf",	MEM)
! BU_VSX_X (LXVW4X_V4SI,        "lxvw4x_v4si",	MEM)
! BU_VSX_X (LXVW4X_V8HI,        "lxvw4x_v8hi",	MEM)
! BU_VSX_X (LXVW4X_V16QI,	      "lxvw4x_v16qi",	MEM)
  BU_VSX_X (STXSDX,	      "stxsdx",		MEM)
  BU_VSX_X (STXVD2X_V1TI,	      "stxvd2x_v1ti",	MEM)
  BU_VSX_X (STXVD2X_V2DF,	      "stxvd2x_v2df",	MEM)
--- 1764,1778 ----
  BU_VSX_P (XVCMPGTDP_P,	      "xvcmpgtdp_p",	CONST,	vector_gt_v2df_p)
  
  /* VSX builtins that are handled as special cases.  */
! BU_VSX_X (LXSDX,	      "lxsdx",		PURE)
! BU_VSX_X (LXVD2X_V1TI,	      "lxvd2x_v1ti",	PURE)
! BU_VSX_X (LXVD2X_V2DF,	      "lxvd2x_v2df",	PURE)
! BU_VSX_X (LXVD2X_V2DI,	      "lxvd2x_v2di",	PURE)
! BU_VSX_X (LXVDSX,	      "lxvdsx",		PURE)
! BU_VSX_X (LXVW4X_V4SF,	      "lxvw4x_v4sf",	PURE)
! BU_VSX_X (LXVW4X_V4SI,	      "lxvw4x_v4si",	PURE)
! BU_VSX_X (LXVW4X_V8HI,	      "lxvw4x_v8hi",	PURE)
! BU_VSX_X (LXVW4X_V16QI,	      "lxvw4x_v16qi",	PURE)
  BU_VSX_X (STXSDX,	      "stxsdx",		MEM)
  BU_VSX_X (STXVD2X_V1TI,	      "stxvd2x_v1ti",	MEM)
  BU_VSX_X (STXVD2X_V2DF,	      "stxvd2x_v2df",	MEM)
*************** BU_VSX_X (STXVW4X_V4SF,	      "stxvw4x_v
*** 1781,1793 ****
  BU_VSX_X (STXVW4X_V4SI,	      "stxvw4x_v4si",	MEM)
  BU_VSX_X (STXVW4X_V8HI,	      "stxvw4x_v8hi",	MEM)
  BU_VSX_X (STXVW4X_V16QI,      "stxvw4x_v16qi",	MEM)
! BU_VSX_X (LD_ELEMREV_V1TI,    "ld_elemrev_v1ti",  MEM)
! BU_VSX_X (LD_ELEMREV_V2DF,    "ld_elemrev_v2df",  MEM)
! BU_VSX_X (LD_ELEMREV_V2DI,    "ld_elemrev_v2di",  MEM)
! BU_VSX_X (LD_ELEMREV_V4SF,    "ld_elemrev_v4sf",  MEM)
! BU_VSX_X (LD_ELEMREV_V4SI,    "ld_elemrev_v4si",  MEM)
! BU_VSX_X (LD_ELEMREV_V8HI,    "ld_elemrev_v8hi",  MEM)
! BU_VSX_X (LD_ELEMREV_V16QI,   "ld_elemrev_v16qi", MEM)
  BU_VSX_X (ST_ELEMREV_V1TI,    "st_elemrev_v1ti",  MEM)
  BU_VSX_X (ST_ELEMREV_V2DF,    "st_elemrev_v2df",  MEM)
  BU_VSX_X (ST_ELEMREV_V2DI,    "st_elemrev_v2di",  MEM)
--- 1781,1793 ----
  BU_VSX_X (STXVW4X_V4SI,	      "stxvw4x_v4si",	MEM)
  BU_VSX_X (STXVW4X_V8HI,	      "stxvw4x_v8hi",	MEM)
  BU_VSX_X (STXVW4X_V16QI,      "stxvw4x_v16qi",	MEM)
! BU_VSX_X (LD_ELEMREV_V1TI,    "ld_elemrev_v1ti",  PURE)
! BU_VSX_X (LD_ELEMREV_V2DF,    "ld_elemrev_v2df",  PURE)
! BU_VSX_X (LD_ELEMREV_V2DI,    "ld_elemrev_v2di",  PURE)
! BU_VSX_X (LD_ELEMREV_V4SF,    "ld_elemrev_v4sf",  PURE)
! BU_VSX_X (LD_ELEMREV_V4SI,    "ld_elemrev_v4si",  PURE)
! BU_VSX_X (LD_ELEMREV_V8HI,    "ld_elemrev_v8hi",  PURE)
! BU_VSX_X (LD_ELEMREV_V16QI,   "ld_elemrev_v16qi", PURE)
  BU_VSX_X (ST_ELEMREV_V1TI,    "st_elemrev_v1ti",  MEM)
  BU_VSX_X (ST_ELEMREV_V2DF,    "st_elemrev_v2df",  MEM)
  BU_VSX_X (ST_ELEMREV_V2DI,    "st_elemrev_v2di",  MEM)
*************** BU_P9_OVERLOAD_2 (CMPRB2,	"byte_in_eithe
*** 2442,2454 ****
  BU_P9_OVERLOAD_2 (CMPEQB,	"byte_in_set")
  
  /* 1 argument crypto functions.  */
! BU_CRYPTO_1 (VSBOX,		"vsbox",	  CONST, crypto_vsbox)
  
  /* 2 argument crypto functions.  */
! BU_CRYPTO_2 (VCIPHER,		"vcipher",	  CONST, crypto_vcipher)
! BU_CRYPTO_2 (VCIPHERLAST,	"vcipherlast",	  CONST, crypto_vcipherlast)
! BU_CRYPTO_2 (VNCIPHER,		"vncipher",	  CONST, crypto_vncipher)
! BU_CRYPTO_2 (VNCIPHERLAST,	"vncipherlast",	  CONST, crypto_vncipherlast)
  BU_CRYPTO_2A (VPMSUMB,		"vpmsumb",	  CONST, crypto_vpmsumb)
  BU_CRYPTO_2A (VPMSUMH,		"vpmsumh",	  CONST, crypto_vpmsumh)
  BU_CRYPTO_2A (VPMSUMW,		"vpmsumw",	  CONST, crypto_vpmsumw)
--- 2442,2463 ----
  BU_P9_OVERLOAD_2 (CMPEQB,	"byte_in_set")
  
  /* 1 argument crypto functions.  */
! BU_CRYPTO_1 (VSBOX,		"vsbox",	  CONST, crypto_vsbox_v2di)
! BU_CRYPTO_1 (VSBOX_BE,		"vsbox_be",	  CONST, crypto_vsbox_v16qi)
  
  /* 2 argument crypto functions.  */
! BU_CRYPTO_2 (VCIPHER,		"vcipher",	  CONST, crypto_vcipher_v2di)
! BU_CRYPTO_2 (VCIPHER_BE,	"vcipher_be",	  CONST, crypto_vcipher_v16qi)
! BU_CRYPTO_2 (VCIPHERLAST,	"vcipherlast",
! 	     CONST, crypto_vcipherlast_v2di)
! BU_CRYPTO_2 (VCIPHERLAST_BE,	"vcipherlast_be",
! 	     CONST, crypto_vcipherlast_v16qi)
! BU_CRYPTO_2 (VNCIPHER,		"vncipher",	  CONST, crypto_vncipher_v2di)
! BU_CRYPTO_2 (VNCIPHER_BE,	"vncipher_be",	  CONST, crypto_vncipher_v16qi)
! BU_CRYPTO_2 (VNCIPHERLAST,	"vncipherlast",
! 	     CONST, crypto_vncipherlast_v2di)
! BU_CRYPTO_2 (VNCIPHERLAST_BE,	"vncipherlast_be",
! 	     CONST, crypto_vncipherlast_v16qi)
  BU_CRYPTO_2A (VPMSUMB,		"vpmsumb",	  CONST, crypto_vpmsumb)
  BU_CRYPTO_2A (VPMSUMH,		"vpmsumh",	  CONST, crypto_vpmsumh)
  BU_CRYPTO_2A (VPMSUMW,		"vpmsumw",	  CONST, crypto_vpmsumw)
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/rs6000-c.c gcc-8.4.0/gcc/config/rs6000/rs6000-c.c
*** gcc-8.3.0/gcc/config/rs6000/rs6000-c.c	Tue Feb  5 19:42:57 2019
--- gcc-8.4.0/gcc/config/rs6000/rs6000-c.c	Wed Mar  4 08:30:00 2020
*************** altivec_resolve_overloaded_builtin (loca
*** 6605,6616 ****
  
  	  arg2 = fold_for_warn (arg2);
  
! 	  /* If the second argument is an integer constant, if the value is in
! 	     the expected range, generate the built-in code if we can.  We need
! 	     64-bit and direct move to extract the small integer vectors.  */
! 	  if (TREE_CODE (arg2) == INTEGER_CST
! 	      && wi::ltu_p (wi::to_wide (arg2), nunits))
  	    {
  	      switch (mode)
  		{
  		default:
--- 6605,6618 ----
  
  	  arg2 = fold_for_warn (arg2);
  
! 	  /* If the second argument is an integer constant, generate
! 	     the built-in code if we can.  We need 64-bit and direct
! 	     move to extract the small integer vectors.  */
! 	  if (TREE_CODE (arg2) == INTEGER_CST)
  	    {
+ 	      wide_int selector = wi::to_wide (arg2);
+ 	      selector = wi::umod_trunc (selector, nunits);
+ 	      arg2 = wide_int_to_tree (TREE_TYPE (arg2), selector);
  	      switch (mode)
  		{
  		default:
*************** altivec_resolve_overloaded_builtin (loca
*** 6785,6795 ****
        /* If we can use the VSX xxpermdi instruction, use that for insert.  */
        mode = TYPE_MODE (arg1_type);
        if ((mode == V2DFmode || mode == V2DImode) && VECTOR_UNIT_VSX_P (mode)
! 	  && TREE_CODE (arg2) == INTEGER_CST
! 	  && wi::ltu_p (wi::to_wide (arg2), 2))
  	{
  	  tree call = NULL_TREE;
  
  	  if (mode == V2DFmode)
  	    call = rs6000_builtin_decls[VSX_BUILTIN_VEC_SET_V2DF];
  	  else if (mode == V2DImode)
--- 6787,6799 ----
        /* If we can use the VSX xxpermdi instruction, use that for insert.  */
        mode = TYPE_MODE (arg1_type);
        if ((mode == V2DFmode || mode == V2DImode) && VECTOR_UNIT_VSX_P (mode)
! 	  && TREE_CODE (arg2) == INTEGER_CST)
  	{
+ 	  wide_int selector = wi::to_wide (arg2);
+ 	  selector = wi::umod_trunc (selector, 2);
  	  tree call = NULL_TREE;
  
+ 	  arg2 = wide_int_to_tree (TREE_TYPE (arg2), selector);
  	  if (mode == V2DFmode)
  	    call = rs6000_builtin_decls[VSX_BUILTIN_VEC_SET_V2DF];
  	  else if (mode == V2DImode)
*************** altivec_resolve_overloaded_builtin (loca
*** 6801,6811 ****
  	    return build_call_expr (call, 3, arg1, arg0, arg2);
  	}
        else if (mode == V1TImode && VECTOR_UNIT_VSX_P (mode)
! 	       && TREE_CODE (arg2) == INTEGER_CST
! 	       && wi::eq_p (wi::to_wide (arg2), 0))
  	{
  	  tree call = rs6000_builtin_decls[VSX_BUILTIN_VEC_SET_V1TI];
  
  	  /* Note, __builtin_vec_insert_<xxx> has vector and scalar types
  	     reversed.  */
  	  return build_call_expr (call, 3, arg1, arg0, arg2);
--- 6805,6816 ----
  	    return build_call_expr (call, 3, arg1, arg0, arg2);
  	}
        else if (mode == V1TImode && VECTOR_UNIT_VSX_P (mode)
! 	       && TREE_CODE (arg2) == INTEGER_CST)
  	{
  	  tree call = rs6000_builtin_decls[VSX_BUILTIN_VEC_SET_V1TI];
+ 	  wide_int selector = wi::zero(32);
  
+ 	  arg2 = wide_int_to_tree (TREE_TYPE (arg2), selector);
  	  /* Note, __builtin_vec_insert_<xxx> has vector and scalar types
  	     reversed.  */
  	  return build_call_expr (call, 3, arg1, arg0, arg2);
*************** altivec_resolve_overloaded_builtin (loca
*** 6813,6822 ****
  
        /* Build *(((arg1_inner_type*)&(vector type){arg1})+arg2) = arg0. */
        arg1_inner_type = TREE_TYPE (arg1_type);
!       arg2 = build_binary_op (loc, BIT_AND_EXPR, arg2,
! 			      build_int_cst (TREE_TYPE (arg2),
! 					     TYPE_VECTOR_SUBPARTS (arg1_type)
! 					     - 1), 0);
        decl = build_decl (loc, VAR_DECL, NULL_TREE, arg1_type);
        DECL_EXTERNAL (decl) = 0;
        TREE_PUBLIC (decl) = 0;
--- 6818,6830 ----
  
        /* Build *(((arg1_inner_type*)&(vector type){arg1})+arg2) = arg0. */
        arg1_inner_type = TREE_TYPE (arg1_type);
!       if (TYPE_VECTOR_SUBPARTS (arg1_type) == 1)
! 	arg2 = build_int_cst (TREE_TYPE (arg2), 0);
!       else
! 	arg2 = build_binary_op (loc, BIT_AND_EXPR, arg2,
! 				build_int_cst (TREE_TYPE (arg2),
! 					       TYPE_VECTOR_SUBPARTS (arg1_type)
! 					       - 1), 0);
        decl = build_decl (loc, VAR_DECL, NULL_TREE, arg1_type);
        DECL_EXTERNAL (decl) = 0;
        TREE_PUBLIC (decl) = 0;
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/rs6000-p8swap.c gcc-8.4.0/gcc/config/rs6000/rs6000-p8swap.c
*** gcc-8.3.0/gcc/config/rs6000/rs6000-p8swap.c	Tue Apr 24 16:05:19 2018
--- gcc-8.4.0/gcc/config/rs6000/rs6000-p8swap.c	Wed Mar  4 08:30:00 2020
*************** rtx_is_swappable_p (rtx op, unsigned int
*** 792,797 ****
--- 792,802 ----
  	  case UNSPEC_REDUC_PLUS:
  	  case UNSPEC_REDUC:
  	    return 1;
+ 	  case UNSPEC_VPMSUM:
+ 	    /* vpmsumd is not swappable, but vpmsum[bhw] are.  */
+ 	    if (GET_MODE (op) == V2DImode)
+ 	      return 0;
+ 	    break;
  	  }
        }
  
*************** rs6000_analyze_swaps (function *fun)
*** 2317,2323 ****
--- 2322,2335 ----
  
    /* Pre-pass to recombine lvx and stvx patterns so we don't lose info.  */
    recombine_lvx_stvx_patterns (fun);
+ 
+   /* Rebuild ud- and du-chains.  */
+   df_remove_problem (df_chain);
    df_process_deferred_rescans ();
+   df_set_flags (DF_RD_PRUNE_DEAD_DEFS);
+   df_chain_add_problem (DF_DU_CHAIN | DF_UD_CHAIN);
+   df_analyze ();
+   df_set_flags (DF_DEFER_INSN_RESCAN);
  
    /* Allocate structure to represent webs of insns.  */
    insn_entry = XCNEWVEC (swap_web_entry, get_max_uid ());
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/rs6000.c gcc-8.4.0/gcc/config/rs6000/rs6000.c
*** gcc-8.3.0/gcc/config/rs6000/rs6000.c	Wed Feb 13 19:20:56 2019
--- gcc-8.4.0/gcc/config/rs6000/rs6000.c	Wed Mar  4 08:30:00 2020
*************** darwin_rs6000_override_options (void)
*** 3880,3889 ****
        rs6000_isa_flags |= OPTION_MASK_POWERPC64;
        warning (0, "%qs requires PowerPC64 architecture, enabling", "-m64");
      }
    if (flag_mkernel)
      {
        rs6000_default_long_calls = 1;
!       rs6000_isa_flags |= OPTION_MASK_SOFT_FLOAT;
      }
  
    /* Make -m64 imply -maltivec.  Darwin's 64-bit ABI includes
--- 3880,3901 ----
        rs6000_isa_flags |= OPTION_MASK_POWERPC64;
        warning (0, "%qs requires PowerPC64 architecture, enabling", "-m64");
      }
+ 
+   /* The linkers [ld64] that support 64Bit do not need the JBSR longcall
+      optimisation, and will not work with the most generic case (where the
+      symbol is undefined external, but there is no symbl stub).  */
+   if (TARGET_64BIT)
+     rs6000_default_long_calls = 0;
+ 
+   /* ld_classic is (so far) still used for kernel (static) code, and supports
+      the JBSR longcall / branch islands.  */
    if (flag_mkernel)
      {
        rs6000_default_long_calls = 1;
! 
!       /* Allow a kext author to do -mkernel -mhard-float.  */
!       if (! (rs6000_isa_flags_explicit & OPTION_MASK_SOFT_FLOAT))
!         rs6000_isa_flags |= OPTION_MASK_SOFT_FLOAT;
      }
  
    /* Make -m64 imply -maltivec.  Darwin's 64-bit ABI includes
*************** rs6000_expand_vector_extract (rtx target
*** 7374,7380 ****
  	default:
  	  break;
  	case E_V1TImode:
- 	  gcc_assert (INTVAL (elt) == 0 && inner_mode == TImode);
  	  emit_move_insn (target, gen_lowpart (TImode, vec));
  	  break;
  	case E_V2DFmode:
--- 7386,7391 ----
*************** rs6000_expand_vector_extract (rtx target
*** 7425,7430 ****
--- 7436,7445 ----
  
        switch (mode)
  	{
+ 	case E_V1TImode:
+ 	  emit_move_insn (target, gen_lowpart (TImode, vec));
+ 	  return;
+ 
  	case E_V2DFmode:
  	  emit_insn (gen_vsx_extract_v2df_var (target, vec, elt));
  	  return;
*************** rs6000_expand_vector_extract (rtx target
*** 7454,7471 ****
  	}
      }
  
-   gcc_assert (CONST_INT_P (elt));
- 
    /* Allocate mode-sized buffer.  */
    mem = assign_stack_temp (mode, GET_MODE_SIZE (mode));
  
    emit_move_insn (mem, vec);
  
!   /* Add offset to field within buffer matching vector element.  */
!   mem = adjust_address_nv (mem, inner_mode,
! 			   INTVAL (elt) * GET_MODE_SIZE (inner_mode));
  
!   emit_move_insn (target, adjust_address_nv (mem, inner_mode, 0));
  }
  
  /* Helper function to return the register number of a RTX.  */
--- 7469,7500 ----
  	}
      }
  
    /* Allocate mode-sized buffer.  */
    mem = assign_stack_temp (mode, GET_MODE_SIZE (mode));
  
    emit_move_insn (mem, vec);
+   if (CONST_INT_P (elt))
+     {
+       int modulo_elt = INTVAL (elt) % GET_MODE_NUNITS (mode);
  
!       /* Add offset to field within buffer matching vector element.  */
!       mem = adjust_address_nv (mem, inner_mode,
! 			       modulo_elt * GET_MODE_SIZE (inner_mode));
!       emit_move_insn (target, adjust_address_nv (mem, inner_mode, 0));
!     }
!   else
!     {
!       unsigned int ele_size = GET_MODE_SIZE (inner_mode);
!       rtx num_ele_m1 = GEN_INT (GET_MODE_NUNITS (mode) - 1);
!       rtx new_addr = gen_reg_rtx (Pmode);
  
!       elt = gen_rtx_AND (Pmode, elt, num_ele_m1);
!       if (ele_size > 1)
! 	elt = gen_rtx_MULT (Pmode, elt, GEN_INT (ele_size));
!       new_addr = gen_rtx_PLUS (Pmode, XEXP (mem, 0), elt);
!       new_addr = change_address (mem, inner_mode, new_addr);
!       emit_move_insn (target, new_addr);
!     }
  }
  
  /* Helper function to return the register number of a RTX.  */
*************** rs6000_split_vec_extract_var (rtx dest,
*** 7646,7652 ****
  			      rtx tmp_altivec)
  {
    machine_mode mode = GET_MODE (src);
!   machine_mode scalar_mode = GET_MODE (dest);
    unsigned scalar_size = GET_MODE_SIZE (scalar_mode);
    int byte_shift = exact_log2 (scalar_size);
  
--- 7675,7681 ----
  			      rtx tmp_altivec)
  {
    machine_mode mode = GET_MODE (src);
!   machine_mode scalar_mode = GET_MODE_INNER (GET_MODE (src));
    unsigned scalar_size = GET_MODE_SIZE (scalar_mode);
    int byte_shift = exact_log2 (scalar_size);
  
*************** rs6000_split_vec_extract_var (rtx dest,
*** 7657,7662 ****
--- 7686,7695 ----
       systems.  */
    if (MEM_P (src))
      {
+       int num_elements = GET_MODE_NUNITS (mode);
+       rtx num_ele_m1 = GEN_INT (num_elements - 1);
+ 
+       emit_insn (gen_anddi3 (element, element, num_ele_m1));
        gcc_assert (REG_P (tmp_gpr));
        emit_move_insn (dest, rs6000_adjust_vec_address (dest, src, element,
  						       tmp_gpr, scalar_mode));
*************** rs6000_split_vec_extract_var (rtx dest,
*** 7665,7671 ****
  
    else if (REG_P (src) || SUBREG_P (src))
      {
!       int bit_shift = byte_shift + 3;
        rtx element2;
        int dest_regno = regno_or_subregno (dest);
        int src_regno = regno_or_subregno (src);
--- 7698,7706 ----
  
    else if (REG_P (src) || SUBREG_P (src))
      {
!       int num_elements = GET_MODE_NUNITS (mode);
!       int bits_in_element = mode_to_bits (GET_MODE_INNER (mode));
!       int bit_shift = 7 - exact_log2 (num_elements);
        rtx element2;
        int dest_regno = regno_or_subregno (dest);
        int src_regno = regno_or_subregno (src);
*************** rs6000_split_vec_extract_var (rtx dest,
*** 7741,7747 ****
  	{
  	  if (!VECTOR_ELT_ORDER_BIG)
  	    {
! 	      rtx num_ele_m1 = GEN_INT (GET_MODE_NUNITS (mode) - 1);
  
  	      emit_insn (gen_anddi3 (tmp_gpr, element, num_ele_m1));
  	      emit_insn (gen_subdi3 (tmp_gpr, num_ele_m1, tmp_gpr));
--- 7776,7782 ----
  	{
  	  if (!VECTOR_ELT_ORDER_BIG)
  	    {
! 	      rtx num_ele_m1 = GEN_INT (num_elements - 1);
  
  	      emit_insn (gen_anddi3 (tmp_gpr, element, num_ele_m1));
  	      emit_insn (gen_subdi3 (tmp_gpr, num_ele_m1, tmp_gpr));
*************** rs6000_split_vec_extract_var (rtx dest,
*** 7799,7806 ****
  	    emit_insn (gen_vsx_vslo_v2di (tmp_altivec_di, src_v2di,
  					  tmp_altivec));
  	    emit_move_insn (tmp_gpr_di, tmp_altivec_di);
! 	    emit_insn (gen_ashrdi3 (tmp_gpr_di, tmp_gpr_di,
! 				    GEN_INT (64 - (8 * scalar_size))));
  	    return;
  	  }
  
--- 7834,7841 ----
  	    emit_insn (gen_vsx_vslo_v2di (tmp_altivec_di, src_v2di,
  					  tmp_altivec));
  	    emit_move_insn (tmp_gpr_di, tmp_altivec_di);
! 	    emit_insn (gen_lshrdi3 (tmp_gpr_di, tmp_gpr_di,
! 				    GEN_INT (64 - bits_in_element)));
  	    return;
  	  }
  
*************** address_offset (rtx op)
*** 8223,8228 ****
--- 8258,8358 ----
    return NULL_RTX;
  }
  
+ /* This tests that a lo_sum {constant, symbol, symbol+offset} is valid for
+    the mode.  If we can't find (or don't know) the alignment of the symbol
+    we assume (optimistically) that it's sufficiently aligned [??? maybe we
+    should be pessimistic].  Offsets are validated in the same way as for
+    reg + offset.  */
+ static bool
+ darwin_rs6000_legitimate_lo_sum_const_p (rtx x, machine_mode mode)
+ {
+   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;
+ 
+   if (GET_CODE (x) == PLUS)
+     {
+       sym = XEXP (x, 0);
+       if (! SYMBOL_REF_P (sym))
+ 	return false;
+       if (!CONST_INT_P (XEXP (x, 1)))
+ 	return false;
+       offset = INTVAL (XEXP (x, 1));
+     }
+   else if (SYMBOL_REF_P (x))
+     sym = x;
+   else if (CONST_INT_P (x))
+     offset = INTVAL (x);
+   else if (GET_CODE (x) == LABEL_REF)
+     offset = 0; // We assume code labels are Pmode aligned
+   else
+     return false; // not sure what we have here.
+ 
+   /* If we don't know the alignment of the thing to which the symbol refers,
+      we assume optimistically it is "enough".
+      ??? maybe we should be pessimistic instead.  */
+   unsigned align = 0;
+ 
+   if (sym)
+     {
+       tree decl = SYMBOL_REF_DECL (sym);
+ #if TARGET_MACHO
+       if (MACHO_SYMBOL_INDIRECTION_P (sym))
+       /* The decl in an indirection symbol is the original one, which might
+ 	 be less aligned than the indirection.  Our indirections are always
+ 	 pointer-aligned.  */
+ 	;
+       else
+ #endif
+       if (decl && DECL_ALIGN (decl))
+ 	align = DECL_ALIGN_UNIT (decl);
+    }
+ 
+   unsigned int extra = 0;
+   switch (mode)
+     {
+     case E_DFmode:
+     case E_DDmode:
+     case E_DImode:
+       /* If we are using VSX scalar loads, restrict ourselves to reg+reg
+ 	 addressing.  */
+       if (VECTOR_MEM_VSX_P (mode))
+ 	return false;
+ 
+       if (!TARGET_POWERPC64)
+ 	extra = 4;
+       else if ((offset & 3) || (align & 3))
+ 	return false;
+       break;
+ 
+     case E_TFmode:
+     case E_IFmode:
+     case E_KFmode:
+     case E_TDmode:
+     case E_TImode:
+     case E_PTImode:
+       extra = 8;
+       if (!TARGET_POWERPC64)
+ 	extra = 12;
+       else if ((offset & 3) || (align & 3))
+ 	return false;
+       break;
+ 
+     default:
+       break;
+     }
+ 
+   /* We only care if the access(es) would cause a change to the high part.  */
+   offset = ((offset & 0xffff) ^ 0x8000) - 0x8000;
+   return IN_RANGE (offset, -(HOST_WIDE_INT_1 << 15),
+                             (HOST_WIDE_INT_1 << 15) - 1 - extra);
+ }
+ 
  /* Return true if the MEM operand is a memory operand suitable for use
     with a (full width, possibly multiple) gpr load/store.  On
     powerpc64 this means the offset must be divisible by 4.
*************** mem_operand_gpr (rtx op, machine_mode mo
*** 8257,8263 ****
        && legitimate_indirect_address_p (XEXP (addr, 0), false))
      return true;
  
!   /* Don't allow non-offsettable addresses.  See PRs 83969 and 84279.  */
    if (!rs6000_offsettable_memref_p (op, mode, false))
      return false;
  
--- 8387,8399 ----
        && legitimate_indirect_address_p (XEXP (addr, 0), false))
      return true;
  
!   /* We need to look through Mach-O PIC unspecs to determine if a lo_sum is
!      really OK.  Doing this early avoids teaching all the other machinery
!      about them.  */
!   if (TARGET_MACHO && GET_CODE (addr) == LO_SUM)
!     return darwin_rs6000_legitimate_lo_sum_const_p (XEXP (addr, 1), mode);
! 
!   /* Only allow offsettable addresses.  See PRs 83969 and 84279.  */
    if (!rs6000_offsettable_memref_p (op, mode, false))
      return false;
  
*************** rs6000_function_arg (cumulative_args_t c
*** 12592,12598 ****
        if (elt_mode == TDmode && (cum->fregno % 2) == 1)
  	cum->fregno++;
  
!       if (USE_FP_FOR_ARG_P (cum, elt_mode))
  	{
  	  rtx rvec[GP_ARG_NUM_REG + AGGR_ARG_NUM_REG + 1];
  	  rtx r, off;
--- 12728,12736 ----
        if (elt_mode == TDmode && (cum->fregno % 2) == 1)
  	cum->fregno++;
  
!       if (USE_FP_FOR_ARG_P (cum, elt_mode)
! 	  && !(TARGET_AIX && !TARGET_ELF
! 	       && type != NULL && AGGREGATE_TYPE_P (type)))
  	{
  	  rtx rvec[GP_ARG_NUM_REG + AGGR_ARG_NUM_REG + 1];
  	  rtx r, off;
*************** rs6000_arg_partial_bytes (cumulative_arg
*** 12728,12734 ****
  
    align_words = rs6000_parm_start (mode, type, cum->words);
  
!   if (USE_FP_FOR_ARG_P (cum, elt_mode))
      {
        unsigned long n_fpreg = (GET_MODE_SIZE (elt_mode) + 7) >> 3;
  
--- 12866,12874 ----
  
    align_words = rs6000_parm_start (mode, type, cum->words);
  
!   if (USE_FP_FOR_ARG_P (cum, elt_mode)
!       && !(TARGET_AIX && !TARGET_ELF
! 	   && type != NULL && AGGREGATE_TYPE_P (type)))
      {
        unsigned long n_fpreg = (GET_MODE_SIZE (elt_mode) + 7) >> 3;
  
*************** altivec_expand_vec_ext_builtin (tree exp
*** 15417,15425 ****
    op0 = expand_normal (arg0);
    op1 = expand_normal (arg1);
  
-   /* Call get_element_number to validate arg1 if it is a constant.  */
    if (TREE_CODE (arg1) == INTEGER_CST)
!     (void) get_element_number (TREE_TYPE (arg0), arg1);
  
    tmode = TYPE_MODE (TREE_TYPE (TREE_TYPE (arg0)));
    mode0 = TYPE_MODE (TREE_TYPE (arg0));
--- 15557,15573 ----
    op0 = expand_normal (arg0);
    op1 = expand_normal (arg1);
  
    if (TREE_CODE (arg1) == INTEGER_CST)
!     {
!       unsigned HOST_WIDE_INT elt;
!       unsigned HOST_WIDE_INT size = TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg0));
!       unsigned int truncated_selector;
!       /* Even if !tree_fits_uhwi_p (arg1)), TREE_INT_CST_LOW (arg0)
! 	 returns low-order bits of INTEGER_CST for modulo indexing.  */
!       elt = TREE_INT_CST_LOW (arg1);
!       truncated_selector = elt % size;
!       op1 = GEN_INT (truncated_selector);
!     }
  
    tmode = TYPE_MODE (TREE_TYPE (TREE_TYPE (arg0)));
    mode0 = TYPE_MODE (TREE_TYPE (arg0));
*************** rs6000_gimple_fold_builtin (gimple_stmt_
*** 16765,16787 ****
      case ALTIVEC_BUILTIN_VSPLTISH:
      case ALTIVEC_BUILTIN_VSPLTISW:
        {
- 	 int size;
- 
-          if (fn_code == ALTIVEC_BUILTIN_VSPLTISB)
-            size = 8;
-          else if (fn_code == ALTIVEC_BUILTIN_VSPLTISH)
-            size = 16;
-          else
-            size = 32;
- 
  	 arg0 = gimple_call_arg (stmt, 0);
  	 lhs = gimple_call_lhs (stmt);
  
  	 /* Only fold the vec_splat_*() if the lower bits of arg 0 is a
  	    5-bit signed constant in range -16 to +15.  */
  	 if (TREE_CODE (arg0) != INTEGER_CST
! 	     || !IN_RANGE (sext_hwi(TREE_INT_CST_LOW (arg0), size),
! 			   -16, 15))
  	   return false;
  	 gimple_seq stmts = NULL;
  	 location_t loc = gimple_location (stmt);
--- 16913,16925 ----
      case ALTIVEC_BUILTIN_VSPLTISH:
      case ALTIVEC_BUILTIN_VSPLTISW:
        {
  	 arg0 = gimple_call_arg (stmt, 0);
  	 lhs = gimple_call_lhs (stmt);
  
  	 /* Only fold the vec_splat_*() if the lower bits of arg 0 is a
  	    5-bit signed constant in range -16 to +15.  */
  	 if (TREE_CODE (arg0) != INTEGER_CST
! 	     || !IN_RANGE (TREE_INT_CST_LOW (arg0), -16, 15))
  	   return false;
  	 gimple_seq stmts = NULL;
  	 location_t loc = gimple_location (stmt);
*************** builtin_function_type (machine_mode mode
*** 18261,18266 ****
--- 18399,18405 ----
      {
      /* unsigned 1 argument functions.  */
      case CRYPTO_BUILTIN_VSBOX:
+     case CRYPTO_BUILTIN_VSBOX_BE:
      case P8V_BUILTIN_VGBBD:
      case MISC_BUILTIN_CDTBCD:
      case MISC_BUILTIN_CBCDTD:
*************** builtin_function_type (machine_mode mode
*** 18276,18284 ****
--- 18415,18427 ----
      case ALTIVEC_BUILTIN_VMULOUH:
      case P8V_BUILTIN_VMULOUW:
      case CRYPTO_BUILTIN_VCIPHER:
+     case CRYPTO_BUILTIN_VCIPHER_BE:
      case CRYPTO_BUILTIN_VCIPHERLAST:
+     case CRYPTO_BUILTIN_VCIPHERLAST_BE:
      case CRYPTO_BUILTIN_VNCIPHER:
+     case CRYPTO_BUILTIN_VNCIPHER_BE:
      case CRYPTO_BUILTIN_VNCIPHERLAST:
+     case CRYPTO_BUILTIN_VNCIPHERLAST_BE:
      case CRYPTO_BUILTIN_VPMSUMB:
      case CRYPTO_BUILTIN_VPMSUMH:
      case CRYPTO_BUILTIN_VPMSUMW:
*************** print_operand (FILE *file, rtx x, int co
*** 21883,21889 ****
  	{
  	  const char *name = XSTR (x, 0);
  #if TARGET_MACHO
! 	  if (darwin_emit_branch_islands
  	      && MACHOPIC_INDIRECT
  	      && machopic_classify_symbol (x) == MACHOPIC_UNDEFINED_FUNCTION)
  	    name = machopic_indirection_name (x, /*stub_p=*/true);
--- 22026,22032 ----
  	{
  	  const char *name = XSTR (x, 0);
  #if TARGET_MACHO
! 	  if (darwin_symbol_stubs
  	      && MACHOPIC_INDIRECT
  	      && machopic_classify_symbol (x) == MACHOPIC_UNDEFINED_FUNCTION)
  	    name = machopic_indirection_name (x, /*stub_p=*/true);
*************** rs6000_emit_cmove (rtx dest, rtx op, rtx
*** 23408,23413 ****
--- 23551,23561 ----
  
    /* At this point we know we can use fsel.  */
  
+   /* Don't allow compare_mode other than SFmode or DFmode, for others there
+      is no fsel instruction.  */
+   if (compare_mode != SFmode && compare_mode != DFmode)
+     return 0;
+ 
    /* Reduce the comparison to a comparison against zero.  */
    if (! is_against_zero)
      {
*************** rs6000_emit_allocate_stack (HOST_WIDE_IN
*** 25996,26005 ****
  						    stack_limit_rtx,
  						    GEN_INT (size)));
  
! 	  emit_insn (gen_elf_high (tmp_reg, toload));
! 	  emit_insn (gen_elf_low (tmp_reg, tmp_reg, toload));
! 	  emit_insn (gen_cond_trap (LTU, stack_reg, tmp_reg,
! 				    const0_rtx));
  	}
        else
  	warning (0, "stack limit expression is not supported");
--- 26144,26157 ----
  						    stack_limit_rtx,
  						    GEN_INT (size)));
  
! 	  /* We cannot use r0 with elf_low.  Lamely solve this problem by
! 	     moving registers around.  */
! 	  rtx r11_reg = gen_rtx_REG (Pmode, 11);
! 	  emit_move_insn (tmp_reg, r11_reg);
! 	  emit_insn (gen_elf_high (r11_reg, toload));
! 	  emit_insn (gen_elf_low (r11_reg, r11_reg, toload));
! 	  emit_insn (gen_cond_trap (LTU, stack_reg, r11_reg, const0_rtx));
! 	  emit_move_insn (r11_reg, tmp_reg);
  	}
        else
  	warning (0, "stack limit expression is not supported");
*************** output_call (rtx_insn *insn, rtx *operan
*** 33632,33638 ****
  	     int cookie_operand_number)
  {
    static char buf[256];
!   if (darwin_emit_branch_islands
        && GET_CODE (operands[dest_operand_number]) == SYMBOL_REF
        && (INTVAL (operands[cookie_operand_number]) & CALL_LONG))
      {
--- 33784,33790 ----
  	     int cookie_operand_number)
  {
    static char buf[256];
!   if (darwin_symbol_stubs
        && GET_CODE (operands[dest_operand_number]) == SYMBOL_REF
        && (INTVAL (operands[cookie_operand_number]) & CALL_LONG))
      {
*************** rs6000_xcoff_asm_init_sections (void)
*** 34192,34197 ****
--- 34344,34353 ----
  			   rs6000_xcoff_output_readwrite_section_asm_op,
  			   &xcoff_private_data_section_name);
  
+   read_only_private_data_section
+     = get_unnamed_section (0, rs6000_xcoff_output_readonly_section_asm_op,
+ 			   &xcoff_private_rodata_section_name);
+ 
    tls_data_section
      = get_unnamed_section (SECTION_TLS,
  			   rs6000_xcoff_output_tls_section_asm_op,
*************** rs6000_xcoff_asm_init_sections (void)
*** 34202,34211 ****
  			   rs6000_xcoff_output_tls_section_asm_op,
  			   &xcoff_private_data_section_name);
  
-   read_only_private_data_section
-     = get_unnamed_section (0, rs6000_xcoff_output_readonly_section_asm_op,
- 			   &xcoff_private_data_section_name);
- 
    toc_section
      = get_unnamed_section (0, rs6000_xcoff_output_toc_section_asm_op, NULL);
  
--- 34358,34363 ----
*************** rs6000_xcoff_file_start (void)
*** 34386,34391 ****
--- 34538,34545 ----
  			   main_input_filename, ".bss_");
    rs6000_gen_section_name (&xcoff_private_data_section_name,
  			   main_input_filename, ".rw_");
+   rs6000_gen_section_name (&xcoff_private_rodata_section_name,
+ 			   main_input_filename, ".rop_");
    rs6000_gen_section_name (&xcoff_read_only_section_name,
  			   main_input_filename, ".ro_");
    rs6000_gen_section_name (&xcoff_tls_data_section_name,
*************** rs6000_init_dwarf_reg_sizes_extra (tree
*** 36605,36614 ****
  unsigned int
  rs6000_dbx_register_number (unsigned int regno, unsigned int format)
  {
!   /* Except for the above, we use the internal number for non-DWARF
!      debug information, and also for .eh_frame.  */
    if ((format == 0 && write_symbols != DWARF2_DEBUG) || format == 2)
!     return regno;
  
    /* On some platforms, we use the standard DWARF register
       numbering for .debug_info and .debug_frame.  */
--- 36759,36778 ----
  unsigned int
  rs6000_dbx_register_number (unsigned int regno, unsigned int format)
  {
!   /* We use the GCC 7 (and before) internal number for non-DWARF debug
!      information, and also for .eh_frame.  */
    if ((format == 0 && write_symbols != DWARF2_DEBUG) || format == 2)
!     {
!       /* Translate the regnos to their numbers in GCC 7 (and before).  */
!       if (regno == TFHAR_REGNO)
! 	regno = 114;
!       else if (regno == TFIAR_REGNO)
! 	regno = 115;
!       else if (regno == TEXASR_REGNO)
! 	regno = 116;
! 
!       return regno;
!     }
  
    /* On some platforms, we use the standard DWARF register
       numbering for .debug_info and .debug_frame.  */
*************** rs6000_dbx_register_number (unsigned int
*** 36635,36640 ****
--- 36799,36810 ----
      return 356;
    if (regno == VSCR_REGNO)
      return 67;
+   if (regno == TFHAR_REGNO)
+     return 228;
+   if (regno == TFIAR_REGNO)
+     return 229;
+   if (regno == TEXASR_REGNO)
+     return 230;
  #endif
    return regno;
  }
*************** make_resolver_func (const tree default_d
*** 37840,37845 ****
--- 38010,38016 ----
  
    /* Build result decl and add to function_decl.  */
    tree t = build_decl (UNKNOWN_LOCATION, RESULT_DECL, NULL_TREE, ptr_type_node);
+   DECL_CONTEXT (t) = decl;
    DECL_ARTIFICIAL (t) = 1;
    DECL_IGNORED_P (t) = 1;
    DECL_RESULT (decl) = t;
*************** rs6000_can_inline_p (tree caller, tree c
*** 38061,38085 ****
    tree caller_tree = DECL_FUNCTION_SPECIFIC_TARGET (caller);
    tree callee_tree = DECL_FUNCTION_SPECIFIC_TARGET (callee);
  
!   /* If callee has no option attributes, then it is ok to inline.  */
    if (!callee_tree)
      ret = true;
  
-   /* If caller has no option attributes, but callee does then it is not ok to
-      inline.  */
-   else if (!caller_tree)
-     ret = false;
- 
    else
      {
!       struct cl_target_option *caller_opts = TREE_TARGET_OPTION (caller_tree);
        struct cl_target_option *callee_opts = TREE_TARGET_OPTION (callee_tree);
  
!       /* Callee's options should a subset of the caller's, i.e. a vsx function
! 	 can inline an altivec function but a non-vsx function can't inline a
! 	 vsx function.  */
!       if ((caller_opts->x_rs6000_isa_flags & callee_opts->x_rs6000_isa_flags)
! 	  == callee_opts->x_rs6000_isa_flags)
  	ret = true;
      }
  
--- 38232,38262 ----
    tree caller_tree = DECL_FUNCTION_SPECIFIC_TARGET (caller);
    tree callee_tree = DECL_FUNCTION_SPECIFIC_TARGET (callee);
  
!   /* If the callee has no option attributes, then it is ok to inline.  */
    if (!callee_tree)
      ret = true;
  
    else
      {
!       HOST_WIDE_INT caller_isa;
        struct cl_target_option *callee_opts = TREE_TARGET_OPTION (callee_tree);
+       HOST_WIDE_INT callee_isa = callee_opts->x_rs6000_isa_flags;
+       HOST_WIDE_INT explicit_isa = callee_opts->x_rs6000_isa_flags_explicit;
  
!       /* If the caller has option attributes, then use them.
! 	 Otherwise, use the command line options.  */
!       if (caller_tree)
! 	caller_isa = TREE_TARGET_OPTION (caller_tree)->x_rs6000_isa_flags;
!       else
! 	caller_isa = rs6000_isa_flags;
! 
!       /* 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
! 	 callee has explicitly enabled or disabled, then we must enforce that
! 	 the callee's and caller's options match exactly; see PR70010.  */
!       if (((caller_isa & callee_isa) == callee_isa)
! 	  && (caller_isa & explicit_isa) == (callee_isa & explicit_isa))
  	ret = true;
      }
  
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/rs6000.md gcc-8.4.0/gcc/config/rs6000/rs6000.md
*** gcc-8.3.0/gcc/config/rs6000/rs6000.md	Thu Feb 14 19:03:54 2019
--- gcc-8.4.0/gcc/config/rs6000/rs6000.md	Wed Mar  4 08:30:00 2020
***************
*** 136,141 ****
--- 136,144 ----
     UNSPEC_LSQ
     UNSPEC_FUSION_GPR
     UNSPEC_STACK_CHECK
+    UNSPEC_CMPRB
+    UNSPEC_CMPRB2
+    UNSPEC_CMPEQB
     UNSPEC_FUSION_P9
     UNSPEC_FUSION_ADDIS
     UNSPEC_ADD_ROUND_TO_ODD
***************
*** 162,167 ****
--- 165,173 ----
     UNSPECV_EH_RR		; eh_reg_restore
     UNSPECV_ISYNC		; isync instruction
     UNSPECV_MFTB			; move from time base
+    UNSPECV_DARN			; darn 1 (deliver a random number)
+    UNSPECV_DARN_32		; darn 2
+    UNSPECV_DARN_RAW		; darn 0
     UNSPECV_NLGR			; non-local goto receiver
     UNSPECV_MFFS			; Move from FPSCR
     UNSPECV_MTFSF		; Move to FPSCR Fields
***************
*** 6692,6705 ****
  ;; do the load 16-bits at a time.  We could do this by loading from memory,
  ;; and this is even supposed to be faster, but it is simpler not to get
  ;; integers in the TOC.
- (define_insn "movsi_low"
-   [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
-         (mem:SI (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b")
-                            (match_operand 2 "" ""))))]
-   "TARGET_MACHO && ! TARGET_64BIT"
-   "lwz %0,lo16(%2)(%1)"
-   [(set_attr "type" "load")
-    (set_attr "length" "4")])
  
  ;;		MR           LA           LWZ          LFIWZX       LXSIWZX
  ;;		STW          STFIWX       STXSIWX      LI           LIS
--- 6698,6703 ----
***************
*** 12594,12608 ****
    [(unspec [(const_int 0)] UNSPEC_GRP_END_NOP)]
    ""
  {
!   if (rs6000_tune == PROCESSOR_POWER6)
!     return "ori 1,1,0";
!   return "ori 2,2,0";
  })
  
  (define_insn "rs6000_speculation_barrier"
    [(unspec_volatile:BLK [(const_int 0)] UNSPECV_SPEC_BARRIER)]
    ""
!   "ori 31,31,0")
  
  ;; Define the subtract-one-and-jump insns, starting with the template
  ;; so loop.c knows what to generate.
--- 12592,12609 ----
    [(unspec [(const_int 0)] UNSPEC_GRP_END_NOP)]
    ""
  {
!   operands[0] = gen_rtx_REG (Pmode,
! 			     rs6000_tune == PROCESSOR_POWER6 ? 1 : 2);
!   return "ori %0,%0,0";
  })
  
  (define_insn "rs6000_speculation_barrier"
    [(unspec_volatile:BLK [(const_int 0)] UNSPECV_SPEC_BARRIER)]
    ""
! {
!   operands[0] = gen_rtx_REG (Pmode, 31);
!   return "ori %0,%0,0";
! })
  
  ;; Define the subtract-one-and-jump insns, starting with the template
  ;; so loop.c knows what to generate.
***************
*** 12699,12705 ****
  				const0_rtx);
    emit_insn (gen_rtx_SET (operands[3],
  			  gen_rtx_COMPARE (CCmode, operands[1], const1_rtx)));
!   if (gpc_reg_operand (operands[0], <MODE>mode))
      emit_insn (gen_add<mode>3 (operands[0], operands[1], constm1_rtx));
    else
      {
--- 12700,12706 ----
  				const0_rtx);
    emit_insn (gen_rtx_SET (operands[3],
  			  gen_rtx_COMPARE (CCmode, operands[1], const1_rtx)));
!   if (int_reg_operand (operands[0], <MODE>mode))
      emit_insn (gen_add<mode>3 (operands[0], operands[1], constm1_rtx));
    else
      {
***************
*** 12768,12774 ****
  		       (const_int 0)]))
  	  (match_operand 4)
  	  (match_operand 5)))
!    (set (match_operand:P 6 "int_reg_operand")
  	(plus:P (match_dup 0)
  		(const_int -1)))
     (clobber (match_scratch:P 7))
--- 12769,12775 ----
  		       (const_int 0)]))
  	  (match_operand 4)
  	  (match_operand 5)))
!    (set (match_operand:P 6 "nonimmediate_operand")
  	(plus:P (match_dup 0)
  		(const_int -1)))
     (clobber (match_scratch:P 7))
***************
*** 12801,12807 ****
    else
       emit_insn (gen_cceq_ior_compare_complement (operands[9], andexpr, ctrcmpcc,
  						 operands[8], cccmp, ccin));
!   if (gpc_reg_operand (operands[0], <MODE>mode))
       emit_insn (gen_add<mode>3 (ctrout, ctr, constm1_rtx));
    else
      {
--- 12802,12808 ----
    else
       emit_insn (gen_cceq_ior_compare_complement (operands[9], andexpr, ctrcmpcc,
  						 operands[8], cccmp, ccin));
!   if (int_reg_operand (ctrout, <MODE>mode))
       emit_insn (gen_add<mode>3 (ctrout, ctr, constm1_rtx));
    else
      {
***************
*** 14597,14603 ****
--- 14598,14822 ----
     "xscmpuqp %0,%1,%2"
    [(set_attr "type" "veccmp")
     (set_attr "size" "128")])
+ 
+ ;; Miscellaneous ISA 3.0 (power9) instructions
+ 
+ (define_insn "darn_32"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+         (unspec_volatile:SI [(const_int 0)] UNSPECV_DARN_32))]
+   "TARGET_P9_MISC"
+   "darn %0,0"
+   [(set_attr "type" "integer")])
  
+ (define_insn "darn_raw"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (unspec_volatile:DI [(const_int 0)] UNSPECV_DARN_RAW))]
+   "TARGET_P9_MISC && TARGET_64BIT"
+   "darn %0,2"
+   [(set_attr "type" "integer")])
+ 
+ (define_insn "darn"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (unspec_volatile:DI [(const_int 0)] UNSPECV_DARN))]
+   "TARGET_P9_MISC && TARGET_64BIT"
+   "darn %0,1"
+   [(set_attr "type" "integer")])
+ 
+ ;; Test byte within range.
+ ;;
+ ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
+ ;; represents a byte whose value is ignored in this context and
+ ;; vv, the least significant byte, holds the byte value that is to
+ ;; be tested for membership within the range specified by operand 2.
+ ;; The bytes of operand 2 are organized as xx:xx:hi:lo.
+ ;;
+ ;; Return in target register operand 0 a value of 1 if lo <= vv and
+ ;; vv <= hi.  Otherwise, set register operand 0 to 0.
+ ;;
+ ;; Though the instructions to which this expansion maps operate on
+ ;; 64-bit registers, the current implementation only operates on
+ ;; SI-mode operands as the high-order bits provide no information
+ ;; that is not already available in the low-order bits.  To avoid the
+ ;; costs of data widening operations, future enhancements might allow
+ ;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
+ (define_expand "cmprb"
+   [(set (match_dup 3)
+ 	(unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
+ 		    (match_operand:SI 2 "gpc_reg_operand" "r")]
+ 	 UNSPEC_CMPRB))
+    (set (match_operand:SI 0 "gpc_reg_operand" "=r")
+ 	(if_then_else:SI (lt (match_dup 3)
+ 			     (const_int 0))
+ 			 (const_int -1)
+ 			 (if_then_else (gt (match_dup 3)
+ 					   (const_int 0))
+ 				       (const_int 1)
+ 				       (const_int 0))))]
+   "TARGET_P9_MISC"
+ {
+   operands[3] = gen_reg_rtx (CCmode);
+ })
+ 
+ ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
+ ;; represents a byte whose value is ignored in this context and
+ ;; vv, the least significant byte, holds the byte value that is to
+ ;; be tested for membership within the range specified by operand 2.
+ ;; The bytes of operand 2 are organized as xx:xx:hi:lo.
+ ;;
+ ;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if
+ ;; lo <= vv and vv <= hi.  Otherwise, set the GT bit to 0.  The other
+ ;; 3 bits of the target CR register are all set to 0.
+ (define_insn "*cmprb_internal"
+   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
+ 	(unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
+ 		    (match_operand:SI 2 "gpc_reg_operand" "r")]
+ 	 UNSPEC_CMPRB))]
+   "TARGET_P9_MISC"
+   "cmprb %0,0,%1,%2"
+   [(set_attr "type" "logical")])
+ 
+ ;; Set operand 0 register to -1 if the LT bit (0x8) of condition
+ ;; register operand 1 is on.  Otherwise, set operand 0 register to 1
+ ;; if the GT bit (0x4) of condition register operand 1 is on.
+ ;; Otherwise, set operand 0 to 0.  Note that the result stored into
+ ;; register operand 0 is non-zero iff either the LT or GT bits are on
+ ;; within condition register operand 1.
+ (define_insn "setb_signed"
+    [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
+ 	 (if_then_else:SI (lt (match_operand:CC 1 "cc_reg_operand" "y")
+ 			      (const_int 0))
+ 			  (const_int -1)
+ 			  (if_then_else (gt (match_dup 1)
+ 					    (const_int 0))
+ 					(const_int 1)
+ 					(const_int 0))))]
+   "TARGET_P9_MISC"
+   "setb %0,%1"
+   [(set_attr "type" "logical")])
+ 
+ (define_insn "setb_unsigned"
+    [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
+ 	 (if_then_else:SI (ltu (match_operand:CCUNS 1 "cc_reg_operand" "y")
+ 			      (const_int 0))
+ 			  (const_int -1)
+ 			  (if_then_else (gtu (match_dup 1)
+ 					    (const_int 0))
+ 					(const_int 1)
+ 					(const_int 0))))]
+   "TARGET_P9_MISC"
+   "setb %0,%1"
+   [(set_attr "type" "logical")])
+ 
+ ;; Test byte within two ranges.
+ ;;
+ ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
+ ;; represents a byte whose value is ignored in this context and
+ ;; vv, the least significant byte, holds the byte value that is to
+ ;; be tested for membership within the range specified by operand 2.
+ ;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2.
+ ;;
+ ;; Return in target register operand 0 a value of 1 if (lo_1 <= vv and
+ ;; vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2).  Otherwise, set register
+ ;; operand 0 to 0.
+ ;;
+ ;; Though the instructions to which this expansion maps operate on
+ ;; 64-bit registers, the current implementation only operates on
+ ;; SI-mode operands as the high-order bits provide no information
+ ;; that is not already available in the low-order bits.  To avoid the
+ ;; costs of data widening operations, future enhancements might allow
+ ;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
+ (define_expand "cmprb2"
+   [(set (match_dup 3)
+ 	(unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
+ 		    (match_operand:SI 2 "gpc_reg_operand" "r")]
+ 	 UNSPEC_CMPRB2))
+    (set (match_operand:SI 0 "gpc_reg_operand" "=r")
+ 	(if_then_else:SI (lt (match_dup 3)
+ 			     (const_int 0))
+ 			 (const_int -1)
+ 			 (if_then_else (gt (match_dup 3)
+ 					   (const_int 0))
+ 				       (const_int 1)
+ 				       (const_int 0))))]
+   "TARGET_P9_MISC"
+ {
+   operands[3] = gen_reg_rtx (CCmode);
+ })
+ 
+ ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
+ ;; represents a byte whose value is ignored in this context and
+ ;; vv, the least significant byte, holds the byte value that is to
+ ;; be tested for membership within the ranges specified by operand 2.
+ ;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2.
+ ;;
+ ;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if
+ ;; (lo_1 <= vv and vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2).
+ ;; Otherwise, set the GT bit to 0.  The other 3 bits of the target
+ ;; CR register are all set to 0.
+ (define_insn "*cmprb2_internal"
+   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
+ 	(unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
+ 		    (match_operand:SI 2 "gpc_reg_operand" "r")]
+ 	 UNSPEC_CMPRB2))]
+   "TARGET_P9_MISC"
+   "cmprb %0,1,%1,%2"
+   [(set_attr "type" "logical")])
+ 
+ ;; Test byte membership within set of 8 bytes.
+ ;;
+ ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
+ ;; represents a byte whose value is ignored in this context and
+ ;; vv, the least significant byte, holds the byte value that is to
+ ;; be tested for membership within the set specified by operand 2.
+ ;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7.
+ ;;
+ ;; Return in target register operand 0 a value of 1 if vv equals one
+ ;; of the values e0, e1, e2, e3, e4, e5, e6, or e7.  Otherwise, set
+ ;; register operand 0 to 0.  Note that the 8 byte values held within
+ ;; operand 2 need not be unique.
+ ;;
+ ;; Though the instructions to which this expansion maps operate on
+ ;; 64-bit registers, the current implementation requires that operands
+ ;; 0 and 1 have mode SI as the high-order bits provide no information
+ ;; that is not already available in the low-order bits.  To avoid the
+ ;; costs of data widening operations, future enhancements might allow
+ ;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
+ (define_expand "cmpeqb"
+   [(set (match_dup 3)
+ 	(unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
+ 		    (match_operand:DI 2 "gpc_reg_operand" "r")]
+ 	 UNSPEC_CMPEQB))
+    (set (match_operand:SI 0 "gpc_reg_operand" "=r")
+ 	(if_then_else:SI (lt (match_dup 3)
+ 			     (const_int 0))
+ 			 (const_int -1)
+ 			 (if_then_else (gt (match_dup 3)
+ 					   (const_int 0))
+ 				       (const_int 1)
+ 				       (const_int 0))))]
+   "TARGET_P9_MISC && TARGET_64BIT"
+ {
+   operands[3] = gen_reg_rtx (CCmode);
+ })
+ 
+ ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
+ ;; represents a byte whose value is ignored in this context and
+ ;; vv, the least significant byte, holds the byte value that is to
+ ;; be tested for membership within the set specified by operand 2.
+ ;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7.
+ ;;
+ ;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if vv
+ ;; equals one of the values e0, e1, e2, e3, e4, e5, e6, or e7.  Otherwise,
+ ;; set the GT bit to zero.  The other 3 bits of the target CR register
+ ;; are all set to 0.
+ (define_insn "*cmpeqb_internal"
+   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
+ 	 (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
+ 		     (match_operand:DI 2 "gpc_reg_operand" "r")]
+ 	  UNSPEC_CMPEQB))]
+   "TARGET_P9_MISC && TARGET_64BIT"
+   "cmpeqb %0,%1,%2"
+   [(set_attr "type" "logical")])
  
  
  (include "sync.md")
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/t-darwin32-biarch gcc-8.4.0/gcc/config/rs6000/t-darwin32-biarch
*** gcc-8.3.0/gcc/config/rs6000/t-darwin32-biarch	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/config/rs6000/t-darwin32-biarch	Wed Mar  4 08:30:00 2020
***************
*** 0 ****
--- 1,3 ----
+ # 64-bit libraries can only be built in Darwin 8.x or later.
+ MULTILIB_OPTIONS = m64
+ MULTILIB_DIRNAMES = ppc64
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/t-darwin64 gcc-8.4.0/gcc/config/rs6000/t-darwin64
*** gcc-8.3.0/gcc/config/rs6000/t-darwin64	Wed Nov  2 15:23:48 2011
--- gcc-8.4.0/gcc/config/rs6000/t-darwin64	Thu Jan  1 00:00:00 1970
***************
*** 1,2 ****
- MULTILIB_OPTIONS = m32
- MULTILIB_DIRNAMES = ppc
--- 0 ----
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/t-darwin64-biarch gcc-8.4.0/gcc/config/rs6000/t-darwin64-biarch
*** gcc-8.3.0/gcc/config/rs6000/t-darwin64-biarch	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/config/rs6000/t-darwin64-biarch	Wed Mar  4 08:30:00 2020
***************
*** 0 ****
--- 1,2 ----
+ MULTILIB_OPTIONS = m32
+ MULTILIB_DIRNAMES = ppc
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/t-darwin8 gcc-8.4.0/gcc/config/rs6000/t-darwin8
*** gcc-8.3.0/gcc/config/rs6000/t-darwin8	Thu Sep 29 00:42:21 2005
--- gcc-8.4.0/gcc/config/rs6000/t-darwin8	Thu Jan  1 00:00:00 1970
***************
*** 1,3 ****
- # 64-bit libraries can only be built in Darwin 8.x or later.
- MULTILIB_OPTIONS = m64
- MULTILIB_DIRNAMES = ppc64
--- 0 ----
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/t-linux gcc-8.4.0/gcc/config/rs6000/t-linux
*** gcc-8.3.0/gcc/config/rs6000/t-linux	Tue Jun 13 17:14:25 2017
--- gcc-8.4.0/gcc/config/rs6000/t-linux	Wed Mar  4 08:30:00 2020
*************** ifeq (,$(filter $(with_cpu),$(SOFT_FLOAT
*** 4,10 ****
  ifneq (,$(findstring powerpc64,$(target)))
  MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu)
  else
! MULTIARCH_DIRNAME := powerpc-linux-gnu
  endif
  ifneq (,$(findstring powerpcle,$(target)))
  MULTIARCH_DIRNAME := $(subst -linux,le-linux,$(MULTIARCH_DIRNAME))
--- 4,10 ----
  ifneq (,$(findstring powerpc64,$(target)))
  MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu)
  else
! MULTIARCH_DIRNAME := $(call if_multiarch,powerpc-linux-gnu)
  endif
  ifneq (,$(findstring powerpcle,$(target)))
  MULTIARCH_DIRNAME := $(subst -linux,le-linux,$(MULTIARCH_DIRNAME))
diff -Nrcpad gcc-8.3.0/gcc/config/rs6000/vsx.md gcc-8.4.0/gcc/config/rs6000/vsx.md
*** gcc-8.3.0/gcc/config/rs6000/vsx.md	Mon Feb  4 16:47:12 2019
--- gcc-8.4.0/gcc/config/rs6000/vsx.md	Wed Mar  4 08:30:00 2020
***************
*** 3756,3764 ****
    DONE;
  })
  
! (define_insn_and_split "*vsx_extract_<VSX_EXTRACT_I:mode>_<SDI:mode>_var"
!   [(set (match_operand:SDI 0 "gpc_reg_operand" "=r,r,r")
! 	(zero_extend:SDI
  	 (unspec:<VSX_EXTRACT_I:VS_scalar>
  	  [(match_operand:VSX_EXTRACT_I 1 "input_operand" "wK,v,m")
  	   (match_operand:DI 2 "gpc_reg_operand" "r,r,r")]
--- 3756,3764 ----
    DONE;
  })
  
! (define_insn_and_split "*vsx_extract_<mode>_<VS_scalar>mode_var"
!   [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=r,r,r")
! 	(zero_extend:<VS_scalar>
  	 (unspec:<VSX_EXTRACT_I:VS_scalar>
  	  [(match_operand:VSX_EXTRACT_I 1 "input_operand" "wK,v,m")
  	   (match_operand:DI 2 "gpc_reg_operand" "r,r,r")]
***************
*** 3770,3776 ****
    "&& reload_completed"
    [(const_int 0)]
  {
!   machine_mode smode = <VSX_EXTRACT_I:MODE>mode;
    rs6000_split_vec_extract_var (gen_rtx_REG (smode, REGNO (operands[0])),
  				operands[1], operands[2],
  				operands[3], operands[4]);
--- 3770,3776 ----
    "&& reload_completed"
    [(const_int 0)]
  {
!   machine_mode smode = <VS_scalar>mode;
    rs6000_split_vec_extract_var (gen_rtx_REG (smode, REGNO (operands[0])),
  				operands[1], operands[2],
  				operands[3], operands[4]);
diff -Nrcpad gcc-8.3.0/gcc/config/s390/s390-builtin-types.def gcc-8.4.0/gcc/config/s390/s390-builtin-types.def
*** gcc-8.3.0/gcc/config/s390/s390-builtin-types.def	Tue Jun  5 07:30:59 2018
--- gcc-8.4.0/gcc/config/s390/s390-builtin-types.def	Wed Mar  4 08:30:00 2020
*************** DEF_FN_TYPE_2 (BT_FN_V4SF_FLT_INT, BT_V4
*** 260,265 ****
--- 260,266 ----
  DEF_FN_TYPE_2 (BT_FN_V4SF_V4SF_UCHAR, BT_V4SF, BT_V4SF, BT_UCHAR)
  DEF_FN_TYPE_2 (BT_FN_V4SF_V4SF_V4SF, BT_V4SF, BT_V4SF, BT_V4SF)
  DEF_FN_TYPE_2 (BT_FN_V4SI_BV4SI_V4SI, BT_V4SI, BT_BV4SI, BT_V4SI)
+ DEF_FN_TYPE_2 (BT_FN_V4SI_INT_VOIDCONSTPTR, BT_V4SI, BT_INT, BT_VOIDCONSTPTR)
  DEF_FN_TYPE_2 (BT_FN_V4SI_INT_VOIDPTR, BT_V4SI, BT_INT, BT_VOIDPTR)
  DEF_FN_TYPE_2 (BT_FN_V4SI_UV4SI_UV4SI, BT_V4SI, BT_UV4SI, BT_UV4SI)
  DEF_FN_TYPE_2 (BT_FN_V4SI_V2DI_V2DI, BT_V4SI, BT_V2DI, BT_V2DI)
*************** DEF_OV_TYPE (BT_OV_USHORT_UV8HI_INT, BT_
*** 492,497 ****
--- 493,499 ----
  DEF_OV_TYPE (BT_OV_UV16QI_BV16QI_BV16QI, BT_UV16QI, BT_BV16QI, BT_BV16QI)
  DEF_OV_TYPE (BT_OV_UV16QI_BV16QI_BV16QI_INTPTR, BT_UV16QI, BT_BV16QI, BT_BV16QI, BT_INTPTR)
  DEF_OV_TYPE (BT_OV_UV16QI_BV16QI_UV16QI, BT_UV16QI, BT_BV16QI, BT_UV16QI)
+ DEF_OV_TYPE (BT_OV_UV16QI_LONG_UCHARCONSTPTR, BT_UV16QI, BT_LONG, BT_UCHARCONSTPTR)
  DEF_OV_TYPE (BT_OV_UV16QI_LONG_UCHARPTR, BT_UV16QI, BT_LONG, BT_UCHARPTR)
  DEF_OV_TYPE (BT_OV_UV16QI_UCHAR, BT_UV16QI, BT_UCHAR)
  DEF_OV_TYPE (BT_OV_UV16QI_UCHARCONSTPTR, BT_UV16QI, BT_UCHARCONSTPTR)
*************** DEF_OV_TYPE (BT_OV_UV16QI_UV8HI_UV8HI_IN
*** 523,528 ****
--- 525,531 ----
  DEF_OV_TYPE (BT_OV_UV16QI_V16QI, BT_UV16QI, BT_V16QI)
  DEF_OV_TYPE (BT_OV_UV16QI_V8HI_V8HI, BT_UV16QI, BT_V8HI, BT_V8HI)
  DEF_OV_TYPE (BT_OV_UV2DI_BV2DI_UV2DI, BT_UV2DI, BT_BV2DI, BT_UV2DI)
+ DEF_OV_TYPE (BT_OV_UV2DI_LONG_ULONGLONGCONSTPTR, BT_UV2DI, BT_LONG, BT_ULONGLONGCONSTPTR)
  DEF_OV_TYPE (BT_OV_UV2DI_LONG_ULONGLONGPTR, BT_UV2DI, BT_LONG, BT_ULONGLONGPTR)
  DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONG, BT_UV2DI, BT_ULONGLONG)
  DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONGCONSTPTR, BT_UV2DI, BT_ULONGLONGCONSTPTR)
*************** DEF_OV_TYPE (BT_OV_UV2DI_V2DI, BT_UV2DI,
*** 556,561 ****
--- 559,566 ----
  DEF_OV_TYPE (BT_OV_UV4SI_BV4SI_BV4SI, BT_UV4SI, BT_BV4SI, BT_BV4SI)
  DEF_OV_TYPE (BT_OV_UV4SI_BV4SI_BV4SI_INTPTR, BT_UV4SI, BT_BV4SI, BT_BV4SI, BT_INTPTR)
  DEF_OV_TYPE (BT_OV_UV4SI_BV4SI_UV4SI, BT_UV4SI, BT_BV4SI, BT_UV4SI)
+ DEF_OV_TYPE (BT_OV_UV4SI_LONG_FLTPTR, BT_UV4SI, BT_LONG, BT_FLTPTR)
+ DEF_OV_TYPE (BT_OV_UV4SI_LONG_UINTCONSTPTR, BT_UV4SI, BT_LONG, BT_UINTCONSTPTR)
  DEF_OV_TYPE (BT_OV_UV4SI_LONG_UINTPTR, BT_UV4SI, BT_LONG, BT_UINTPTR)
  DEF_OV_TYPE (BT_OV_UV4SI_UINT, BT_UV4SI, BT_UINT)
  DEF_OV_TYPE (BT_OV_UV4SI_UINTCONSTPTR, BT_UV4SI, BT_UINTCONSTPTR)
*************** DEF_OV_TYPE (BT_OV_UV4SI_V4SI, BT_UV4SI,
*** 593,598 ****
--- 598,604 ----
  DEF_OV_TYPE (BT_OV_UV8HI_BV8HI_BV8HI, BT_UV8HI, BT_BV8HI, BT_BV8HI)
  DEF_OV_TYPE (BT_OV_UV8HI_BV8HI_BV8HI_INTPTR, BT_UV8HI, BT_BV8HI, BT_BV8HI, BT_INTPTR)
  DEF_OV_TYPE (BT_OV_UV8HI_BV8HI_UV8HI, BT_UV8HI, BT_BV8HI, BT_UV8HI)
+ DEF_OV_TYPE (BT_OV_UV8HI_LONG_USHORTCONSTPTR, BT_UV8HI, BT_LONG, BT_USHORTCONSTPTR)
  DEF_OV_TYPE (BT_OV_UV8HI_LONG_USHORTPTR, BT_UV8HI, BT_LONG, BT_USHORTPTR)
  DEF_OV_TYPE (BT_OV_UV8HI_USHORT, BT_UV8HI, BT_USHORT)
  DEF_OV_TYPE (BT_OV_UV8HI_USHORTCONSTPTR, BT_UV8HI, BT_USHORTCONSTPTR)
*************** DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_V8HI, BT_
*** 626,631 ****
--- 632,638 ----
  DEF_OV_TYPE (BT_OV_UV8HI_V4SI_V4SI, BT_UV8HI, BT_V4SI, BT_V4SI)
  DEF_OV_TYPE (BT_OV_UV8HI_V8HI, BT_UV8HI, BT_V8HI)
  DEF_OV_TYPE (BT_OV_V16QI_BV16QI_V16QI, BT_V16QI, BT_BV16QI, BT_V16QI)
+ DEF_OV_TYPE (BT_OV_V16QI_LONG_SCHARCONSTPTR, BT_V16QI, BT_LONG, BT_SCHARCONSTPTR)
  DEF_OV_TYPE (BT_OV_V16QI_LONG_SCHARPTR, BT_V16QI, BT_LONG, BT_SCHARPTR)
  DEF_OV_TYPE (BT_OV_V16QI_SCHAR, BT_V16QI, BT_SCHAR)
  DEF_OV_TYPE (BT_OV_V16QI_SCHARCONSTPTR, BT_V16QI, BT_SCHARCONSTPTR)
*************** DEF_OV_TYPE (BT_OV_V2DF_DBLCONSTPTR_UINT
*** 660,665 ****
--- 667,673 ----
  DEF_OV_TYPE (BT_OV_V2DF_DBLCONSTPTR_USHORT, BT_V2DF, BT_DBLCONSTPTR, BT_USHORT)
  DEF_OV_TYPE (BT_OV_V2DF_DBL_INT, BT_V2DF, BT_DBL, BT_INT)
  DEF_OV_TYPE (BT_OV_V2DF_DBL_V2DF_INT, BT_V2DF, BT_DBL, BT_V2DF, BT_INT)
+ DEF_OV_TYPE (BT_OV_V2DF_LONG_DBLCONSTPTR, BT_V2DF, BT_LONG, BT_DBLCONSTPTR)
  DEF_OV_TYPE (BT_OV_V2DF_LONG_DBLPTR, BT_V2DF, BT_LONG, BT_DBLPTR)
  DEF_OV_TYPE (BT_OV_V2DF_UV2DI, BT_V2DF, BT_UV2DI)
  DEF_OV_TYPE (BT_OV_V2DF_UV2DI_INT, BT_V2DF, BT_UV2DI, BT_INT)
*************** DEF_OV_TYPE (BT_OV_V2DI_LONGLONGCONSTPTR
*** 687,692 ****
--- 695,701 ----
  DEF_OV_TYPE (BT_OV_V2DI_LONGLONG_INT, BT_V2DI, BT_LONGLONG, BT_INT)
  DEF_OV_TYPE (BT_OV_V2DI_LONGLONG_LONGLONG, BT_V2DI, BT_LONGLONG, BT_LONGLONG)
  DEF_OV_TYPE (BT_OV_V2DI_LONGLONG_V2DI_INT, BT_V2DI, BT_LONGLONG, BT_V2DI, BT_INT)
+ DEF_OV_TYPE (BT_OV_V2DI_LONG_LONGLONGCONSTPTR, BT_V2DI, BT_LONG, BT_LONGLONGCONSTPTR)
  DEF_OV_TYPE (BT_OV_V2DI_LONG_LONGLONGPTR, BT_V2DI, BT_LONG, BT_LONGLONGPTR)
  DEF_OV_TYPE (BT_OV_V2DI_V16QI, BT_V2DI, BT_V16QI)
  DEF_OV_TYPE (BT_OV_V2DI_V2DI, BT_V2DI, BT_V2DI)
*************** DEF_OV_TYPE (BT_OV_V4SF_FLTCONSTPTR_UINT
*** 716,722 ****
  DEF_OV_TYPE (BT_OV_V4SF_FLTCONSTPTR_USHORT, BT_V4SF, BT_FLTCONSTPTR, BT_USHORT)
  DEF_OV_TYPE (BT_OV_V4SF_FLT_INT, BT_V4SF, BT_FLT, BT_INT)
  DEF_OV_TYPE (BT_OV_V4SF_FLT_V4SF_INT, BT_V4SF, BT_FLT, BT_V4SF, BT_INT)
! DEF_OV_TYPE (BT_OV_V4SF_LONG_FLTPTR, BT_V4SF, BT_LONG, BT_FLTPTR)
  DEF_OV_TYPE (BT_OV_V4SF_V4SF, BT_V4SF, BT_V4SF)
  DEF_OV_TYPE (BT_OV_V4SF_V4SF_BV4SI, BT_V4SF, BT_V4SF, BT_BV4SI)
  DEF_OV_TYPE (BT_OV_V4SF_V4SF_UCHAR, BT_V4SF, BT_V4SF, BT_UCHAR)
--- 725,731 ----
  DEF_OV_TYPE (BT_OV_V4SF_FLTCONSTPTR_USHORT, BT_V4SF, BT_FLTCONSTPTR, BT_USHORT)
  DEF_OV_TYPE (BT_OV_V4SF_FLT_INT, BT_V4SF, BT_FLT, BT_INT)
  DEF_OV_TYPE (BT_OV_V4SF_FLT_V4SF_INT, BT_V4SF, BT_FLT, BT_V4SF, BT_INT)
! DEF_OV_TYPE (BT_OV_V4SF_LONG_FLTCONSTPTR, BT_V4SF, BT_LONG, BT_FLTCONSTPTR)
  DEF_OV_TYPE (BT_OV_V4SF_V4SF, BT_V4SF, BT_V4SF)
  DEF_OV_TYPE (BT_OV_V4SF_V4SF_BV4SI, BT_V4SF, BT_V4SF, BT_BV4SI)
  DEF_OV_TYPE (BT_OV_V4SF_V4SF_UCHAR, BT_V4SF, BT_V4SF, BT_UCHAR)
*************** DEF_OV_TYPE (BT_OV_V4SI_INTCONSTPTR_UINT
*** 737,742 ****
--- 746,752 ----
  DEF_OV_TYPE (BT_OV_V4SI_INTCONSTPTR_USHORT, BT_V4SI, BT_INTCONSTPTR, BT_USHORT)
  DEF_OV_TYPE (BT_OV_V4SI_INT_INT, BT_V4SI, BT_INT, BT_INT)
  DEF_OV_TYPE (BT_OV_V4SI_INT_V4SI_INT, BT_V4SI, BT_INT, BT_V4SI, BT_INT)
+ DEF_OV_TYPE (BT_OV_V4SI_LONG_INTCONSTPTR, BT_V4SI, BT_LONG, BT_INTCONSTPTR)
  DEF_OV_TYPE (BT_OV_V4SI_LONG_INTPTR, BT_V4SI, BT_LONG, BT_INTPTR)
  DEF_OV_TYPE (BT_OV_V4SI_UV4SI_V4SI_V4SI, BT_V4SI, BT_UV4SI, BT_V4SI, BT_V4SI)
  DEF_OV_TYPE (BT_OV_V4SI_V2DI_V2DI, BT_V4SI, BT_V2DI, BT_V2DI)
*************** DEF_OV_TYPE (BT_OV_V4SI_V8HI, BT_V4SI, B
*** 764,769 ****
--- 774,780 ----
  DEF_OV_TYPE (BT_OV_V4SI_V8HI_V8HI, BT_V4SI, BT_V8HI, BT_V8HI)
  DEF_OV_TYPE (BT_OV_V4SI_V8HI_V8HI_V4SI, BT_V4SI, BT_V8HI, BT_V8HI, BT_V4SI)
  DEF_OV_TYPE (BT_OV_V8HI_BV8HI_V8HI, BT_V8HI, BT_BV8HI, BT_V8HI)
+ DEF_OV_TYPE (BT_OV_V8HI_LONG_SHORTCONSTPTR, BT_V8HI, BT_LONG, BT_SHORTCONSTPTR)
  DEF_OV_TYPE (BT_OV_V8HI_LONG_SHORTPTR, BT_V8HI, BT_LONG, BT_SHORTPTR)
  DEF_OV_TYPE (BT_OV_V8HI_SHORT, BT_V8HI, BT_SHORT)
  DEF_OV_TYPE (BT_OV_V8HI_SHORTCONSTPTR, BT_V8HI, BT_SHORTCONSTPTR)
*************** DEF_OV_TYPE (BT_OV_VOID_UV16QI_UCHARPTR_
*** 802,807 ****
--- 813,819 ----
  DEF_OV_TYPE (BT_OV_VOID_UV2DI_LONG_ULONGLONGPTR, BT_VOID, BT_UV2DI, BT_LONG, BT_ULONGLONGPTR)
  DEF_OV_TYPE (BT_OV_VOID_UV2DI_ULONGLONGPTR_UINT, BT_VOID, BT_UV2DI, BT_ULONGLONGPTR, BT_UINT)
  DEF_OV_TYPE (BT_OV_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG, BT_VOID, BT_UV2DI, BT_UV2DI, BT_ULONGLONGPTR, BT_ULONGLONG)
+ DEF_OV_TYPE (BT_OV_VOID_UV4SI_LONG_FLTPTR, BT_VOID, BT_UV4SI, BT_LONG, BT_FLTPTR)
  DEF_OV_TYPE (BT_OV_VOID_UV4SI_LONG_UINTPTR, BT_VOID, BT_UV4SI, BT_LONG, BT_UINTPTR)
  DEF_OV_TYPE (BT_OV_VOID_UV4SI_UINTPTR_UINT, BT_VOID, BT_UV4SI, BT_UINTPTR, BT_UINT)
  DEF_OV_TYPE (BT_OV_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG, BT_VOID, BT_UV4SI, BT_UV4SI, BT_UINTPTR, BT_ULONGLONG)
diff -Nrcpad gcc-8.3.0/gcc/config/s390/s390-builtins.def gcc-8.4.0/gcc/config/s390/s390-builtins.def
*** gcc-8.3.0/gcc/config/s390/s390-builtins.def	Thu Dec 13 12:04:46 2018
--- gcc-8.4.0/gcc/config/s390/s390-builtins.def	Wed Mar  4 08:30:00 2020
*************** B_DEF      (s390_vgmh,
*** 328,363 ****
  B_DEF      (s390_vgmf,                  vec_genmaskv4si,    0,                  B_VX,               O1_U8 | O2_U8,      BT_FN_UV4SI_UCHAR_UCHAR)
  B_DEF      (s390_vgmg,                  vec_genmaskv2di,    0,                  B_VX,               O1_U8 | O2_U8,      BT_FN_UV2DI_UCHAR_UCHAR)
  
! OB_DEF     (s390_vec_xl,                s390_vec_xl_s8,     s390_vec_xl_dbl,    B_VX,               BT_FN_V4SI_INT_VOIDPTR)
! OB_DEF_VAR (s390_vec_xl_s8,             MAX,                0,                  O1_LIT,             BT_OV_V16QI_LONG_SCHARPTR)               /* vl */
! OB_DEF_VAR (s390_vec_xl_u8,             MAX,                0,                  O1_LIT,             BT_OV_UV16QI_LONG_UCHARPTR)              /* vl */
! OB_DEF_VAR (s390_vec_xl_s16,            MAX,                0,                  O1_LIT,             BT_OV_V8HI_LONG_SHORTPTR)                /* vl */
! OB_DEF_VAR (s390_vec_xl_u16,            MAX,                0,                  O1_LIT,             BT_OV_UV8HI_LONG_USHORTPTR)              /* vl */
! OB_DEF_VAR (s390_vec_xl_s32,            MAX,                0,                  O1_LIT,             BT_OV_V4SI_LONG_INTPTR)                  /* vl */
! OB_DEF_VAR (s390_vec_xl_u32,            MAX,                0,                  O1_LIT,             BT_OV_UV4SI_LONG_UINTPTR)                /* vl */
! OB_DEF_VAR (s390_vec_xl_s64,            MAX,                0,                  O1_LIT,             BT_OV_V2DI_LONG_LONGLONGPTR)             /* vl */
! OB_DEF_VAR (s390_vec_xl_u64,            MAX,                0,                  O1_LIT,             BT_OV_UV2DI_LONG_ULONGLONGPTR)           /* vl */
! OB_DEF_VAR (s390_vec_xl_flt,            MAX,                0,                  O1_LIT,             BT_OV_V4SF_LONG_FLTPTR)                  /* vl */
! OB_DEF_VAR (s390_vec_xl_dbl,            MAX,                0,                  O1_LIT,             BT_OV_V2DF_LONG_DBLPTR)                  /* vl */
  
! OB_DEF     (s390_vec_xld2,              s390_vec_xld2_s8,   s390_vec_xld2_dbl,  B_DEP | B_VX,       BT_FN_V4SI_INT_VOIDPTR)
! OB_DEF_VAR (s390_vec_xld2_s8,           MAX,                0,                  O1_LIT,             BT_OV_V16QI_LONG_SCHARPTR)               /* vl */
! OB_DEF_VAR (s390_vec_xld2_u8,           MAX,                0,                  O1_LIT,             BT_OV_UV16QI_LONG_UCHARPTR)              /* vl */
! OB_DEF_VAR (s390_vec_xld2_s16,          MAX,                0,                  O1_LIT,             BT_OV_V8HI_LONG_SHORTPTR)                /* vl */
! OB_DEF_VAR (s390_vec_xld2_u16,          MAX,                0,                  O1_LIT,             BT_OV_UV8HI_LONG_USHORTPTR)              /* vl */
! OB_DEF_VAR (s390_vec_xld2_s32,          MAX,                0,                  O1_LIT,             BT_OV_V4SI_LONG_INTPTR)                  /* vl */
! OB_DEF_VAR (s390_vec_xld2_u32,          MAX,                0,                  O1_LIT,             BT_OV_UV4SI_LONG_UINTPTR)                /* vl */
! OB_DEF_VAR (s390_vec_xld2_s64,          MAX,                0,                  O1_LIT,             BT_OV_V2DI_LONG_LONGLONGPTR)             /* vl */
! OB_DEF_VAR (s390_vec_xld2_u64,          MAX,                0,                  O1_LIT,             BT_OV_UV2DI_LONG_ULONGLONGPTR)           /* vl */
! OB_DEF_VAR (s390_vec_xld2_dbl,          MAX,                0,                  O1_LIT,             BT_OV_V2DF_LONG_DBLPTR)                  /* vl */
  
! OB_DEF     (s390_vec_xlw4,              s390_vec_xlw4_s8,   s390_vec_xlw4_u32,  B_DEP | B_VX,       BT_FN_V4SI_INT_VOIDPTR)
! OB_DEF_VAR (s390_vec_xlw4_s8,           MAX,                0,                  O1_LIT,             BT_OV_V16QI_LONG_SCHARPTR)               /* vl */
! OB_DEF_VAR (s390_vec_xlw4_u8,           MAX,                0,                  O1_LIT,             BT_OV_UV16QI_LONG_UCHARPTR)              /* vl */
! OB_DEF_VAR (s390_vec_xlw4_s16,          MAX,                0,                  O1_LIT,             BT_OV_V8HI_LONG_SHORTPTR)                /* vl */
! OB_DEF_VAR (s390_vec_xlw4_u16,          MAX,                0,                  O1_LIT,             BT_OV_UV8HI_LONG_USHORTPTR)              /* vl */
! OB_DEF_VAR (s390_vec_xlw4_s32,          MAX,                0,                  O1_LIT,             BT_OV_V4SI_LONG_INTPTR)                  /* vl */
! OB_DEF_VAR (s390_vec_xlw4_u32,          MAX,                0,                  O1_LIT,             BT_OV_UV4SI_LONG_UINTPTR)                /* vl */
  
  OB_DEF     (s390_vec_splats,            s390_vec_splats_s8, s390_vec_splats_dbl,B_VX,               BT_FN_OV4SI_INT)
  OB_DEF_VAR (s390_vec_splats_s8,         s390_vlrepb,        0,                  0,                  BT_OV_V16QI_SCHAR)
--- 328,365 ----
  B_DEF      (s390_vgmf,                  vec_genmaskv4si,    0,                  B_VX,               O1_U8 | O2_U8,      BT_FN_UV4SI_UCHAR_UCHAR)
  B_DEF      (s390_vgmg,                  vec_genmaskv2di,    0,                  B_VX,               O1_U8 | O2_U8,      BT_FN_UV2DI_UCHAR_UCHAR)
  
! OB_DEF     (s390_vec_xl,                s390_vec_xl_s8,     s390_vec_xl_dbl,    B_VX,               BT_FN_V4SI_INT_VOIDCONSTPTR)
! OB_DEF_VAR (s390_vec_xl_s8,             MAX,                0,                  O1_LIT,             BT_OV_V16QI_LONG_SCHARCONSTPTR)          /* vl */
! OB_DEF_VAR (s390_vec_xl_u8,             MAX,                0,                  O1_LIT,             BT_OV_UV16QI_LONG_UCHARCONSTPTR)         /* vl */
! OB_DEF_VAR (s390_vec_xl_s16,            MAX,                0,                  O1_LIT,             BT_OV_V8HI_LONG_SHORTCONSTPTR)           /* vl */
! OB_DEF_VAR (s390_vec_xl_u16,            MAX,                0,                  O1_LIT,             BT_OV_UV8HI_LONG_USHORTCONSTPTR)         /* vl */
! OB_DEF_VAR (s390_vec_xl_s32,            MAX,                0,                  O1_LIT,             BT_OV_V4SI_LONG_INTCONSTPTR)             /* vl */
! OB_DEF_VAR (s390_vec_xl_u32,            MAX,                0,                  O1_LIT,             BT_OV_UV4SI_LONG_UINTCONSTPTR)           /* vl */
! OB_DEF_VAR (s390_vec_xl_s64,            MAX,                0,                  O1_LIT,             BT_OV_V2DI_LONG_LONGLONGCONSTPTR)        /* vl */
! OB_DEF_VAR (s390_vec_xl_u64,            MAX,                0,                  O1_LIT,             BT_OV_UV2DI_LONG_ULONGLONGCONSTPTR)      /* vl */
! OB_DEF_VAR (s390_vec_xl_flt,            MAX,                0,                  O1_LIT,             BT_OV_V4SF_LONG_FLTCONSTPTR)             /* vl */
! OB_DEF_VAR (s390_vec_xl_dbl,            MAX,                0,                  O1_LIT,             BT_OV_V2DF_LONG_DBLCONSTPTR)             /* vl */
  
! OB_DEF     (s390_vec_xld2,              s390_vec_xld2_s8,   s390_vec_xld2_dbl,  B_DEP | B_VX,       BT_FN_V4SI_INT_VOIDCONSTPTR)
! OB_DEF_VAR (s390_vec_xld2_s8,           MAX,                0,                  O1_LIT,             BT_OV_V16QI_LONG_SCHARCONSTPTR)          /* vl */
! OB_DEF_VAR (s390_vec_xld2_u8,           MAX,                0,                  O1_LIT,             BT_OV_UV16QI_LONG_UCHARCONSTPTR)         /* vl */
! OB_DEF_VAR (s390_vec_xld2_s16,          MAX,                0,                  O1_LIT,             BT_OV_V8HI_LONG_SHORTCONSTPTR)           /* vl */
! OB_DEF_VAR (s390_vec_xld2_u16,          MAX,                0,                  O1_LIT,             BT_OV_UV8HI_LONG_USHORTCONSTPTR)         /* vl */
! OB_DEF_VAR (s390_vec_xld2_s32,          MAX,                0,                  O1_LIT,             BT_OV_V4SI_LONG_INTCONSTPTR)             /* vl */
! OB_DEF_VAR (s390_vec_xld2_u32,          MAX,                0,                  O1_LIT,             BT_OV_UV4SI_LONG_UINTCONSTPTR)           /* vl */
! OB_DEF_VAR (s390_vec_xld2_s64,          MAX,                0,                  O1_LIT,             BT_OV_V2DI_LONG_LONGLONGCONSTPTR)        /* vl */
! OB_DEF_VAR (s390_vec_xld2_u64,          MAX,                0,                  O1_LIT,             BT_OV_UV2DI_LONG_ULONGLONGCONSTPTR)      /* vl */
! OB_DEF_VAR (s390_vec_xld2_flt,          MAX,                B_VXE,              O1_LIT,             BT_OV_V4SF_LONG_FLTCONSTPTR)             /* vl */
! OB_DEF_VAR (s390_vec_xld2_dbl,          MAX,                0,                  O1_LIT,             BT_OV_V2DF_LONG_DBLCONSTPTR)             /* vl */
  
! OB_DEF     (s390_vec_xlw4,              s390_vec_xlw4_s8,   s390_vec_xlw4_flt,  B_DEP | B_VX,       BT_FN_V4SI_INT_VOIDCONSTPTR)
! OB_DEF_VAR (s390_vec_xlw4_s8,           MAX,                0,                  O1_LIT,             BT_OV_V16QI_LONG_SCHARCONSTPTR)          /* vl */
! OB_DEF_VAR (s390_vec_xlw4_u8,           MAX,                0,                  O1_LIT,             BT_OV_UV16QI_LONG_UCHARCONSTPTR)         /* vl */
! OB_DEF_VAR (s390_vec_xlw4_s16,          MAX,                0,                  O1_LIT,             BT_OV_V8HI_LONG_SHORTCONSTPTR)           /* vl */
! OB_DEF_VAR (s390_vec_xlw4_u16,          MAX,                0,                  O1_LIT,             BT_OV_UV8HI_LONG_USHORTCONSTPTR)         /* vl */
! OB_DEF_VAR (s390_vec_xlw4_s32,          MAX,                0,                  O1_LIT,             BT_OV_V4SI_LONG_INTCONSTPTR)             /* vl */
! OB_DEF_VAR (s390_vec_xlw4_u32,          MAX,                0,                  O1_LIT,             BT_OV_UV4SI_LONG_UINTCONSTPTR)           /* vl */
! OB_DEF_VAR (s390_vec_xlw4_flt,          MAX,                B_VXE,              O1_LIT,             BT_OV_V4SF_LONG_FLTCONSTPTR)             /* vl */
  
  OB_DEF     (s390_vec_splats,            s390_vec_splats_s8, s390_vec_splats_dbl,B_VX,               BT_FN_OV4SI_INT)
  OB_DEF_VAR (s390_vec_splats_s8,         s390_vlrepb,        0,                  0,                  BT_OV_V16QI_SCHAR)
*************** OB_DEF_VAR (s390_vec_xstd2_s64,
*** 746,758 ****
  OB_DEF_VAR (s390_vec_xstd2_u64,         MAX,                0,                  O2_LIT,             BT_OV_VOID_UV2DI_LONG_ULONGLONGPTR)      /* vst */
  OB_DEF_VAR (s390_vec_xstd2_dbl,         MAX,                0,                  O2_LIT,             BT_OV_VOID_V2DF_LONG_DBLPTR)             /* vst */
  
! OB_DEF     (s390_vec_xstw4,             s390_vec_xstw4_s8,  s390_vec_xstw4_u32, B_DEP | B_VX,       BT_FN_VOID_OV4SI_INT_VOIDPTR)
  OB_DEF_VAR (s390_vec_xstw4_s8,          MAX,                0,                  O2_LIT,             BT_OV_VOID_V16QI_LONG_SCHARPTR)          /* vst */
  OB_DEF_VAR (s390_vec_xstw4_u8,          MAX,                0,                  O2_LIT,             BT_OV_VOID_UV16QI_LONG_UCHARPTR)         /* vst */
  OB_DEF_VAR (s390_vec_xstw4_s16,         MAX,                0,                  O2_LIT,             BT_OV_VOID_V8HI_LONG_SHORTPTR)           /* vst */
  OB_DEF_VAR (s390_vec_xstw4_u16,         MAX,                0,                  O2_LIT,             BT_OV_VOID_UV8HI_LONG_USHORTPTR)         /* vst */
  OB_DEF_VAR (s390_vec_xstw4_s32,         MAX,                0,                  O2_LIT,             BT_OV_VOID_V4SI_LONG_INTPTR)             /* vst */
  OB_DEF_VAR (s390_vec_xstw4_u32,         MAX,                0,                  O2_LIT,             BT_OV_VOID_UV4SI_LONG_UINTPTR)           /* vst */
  
  OB_DEF     (s390_vec_store_len,         s390_vec_store_len_s8,s390_vec_store_len_dbl,B_VX,          BT_FN_VOID_OV4SI_VOIDPTR_UINT)
  OB_DEF_VAR (s390_vec_store_len_s8,      s390_vstl,          0,                  0,                  BT_OV_VOID_V16QI_SCHARPTR_UINT)
--- 748,761 ----
  OB_DEF_VAR (s390_vec_xstd2_u64,         MAX,                0,                  O2_LIT,             BT_OV_VOID_UV2DI_LONG_ULONGLONGPTR)      /* vst */
  OB_DEF_VAR (s390_vec_xstd2_dbl,         MAX,                0,                  O2_LIT,             BT_OV_VOID_V2DF_LONG_DBLPTR)             /* vst */
  
! OB_DEF     (s390_vec_xstw4,             s390_vec_xstw4_s8,  s390_vec_xstw4_flt, B_DEP | B_VX,       BT_FN_VOID_OV4SI_INT_VOIDPTR)
  OB_DEF_VAR (s390_vec_xstw4_s8,          MAX,                0,                  O2_LIT,             BT_OV_VOID_V16QI_LONG_SCHARPTR)          /* vst */
  OB_DEF_VAR (s390_vec_xstw4_u8,          MAX,                0,                  O2_LIT,             BT_OV_VOID_UV16QI_LONG_UCHARPTR)         /* vst */
  OB_DEF_VAR (s390_vec_xstw4_s16,         MAX,                0,                  O2_LIT,             BT_OV_VOID_V8HI_LONG_SHORTPTR)           /* vst */
  OB_DEF_VAR (s390_vec_xstw4_u16,         MAX,                0,                  O2_LIT,             BT_OV_VOID_UV8HI_LONG_USHORTPTR)         /* vst */
  OB_DEF_VAR (s390_vec_xstw4_s32,         MAX,                0,                  O2_LIT,             BT_OV_VOID_V4SI_LONG_INTPTR)             /* vst */
  OB_DEF_VAR (s390_vec_xstw4_u32,         MAX,                0,                  O2_LIT,             BT_OV_VOID_UV4SI_LONG_UINTPTR)           /* vst */
+ OB_DEF_VAR (s390_vec_xstw4_flt,         MAX,                B_VXE,              O2_LIT,             BT_OV_VOID_V4SF_LONG_FLTPTR)             /* vst */
  
  OB_DEF     (s390_vec_store_len,         s390_vec_store_len_s8,s390_vec_store_len_dbl,B_VX,          BT_FN_VOID_OV4SI_VOIDPTR_UINT)
  OB_DEF_VAR (s390_vec_store_len_s8,      s390_vstl,          0,                  0,                  BT_OV_VOID_V16QI_SCHARPTR_UINT)
diff -Nrcpad gcc-8.3.0/gcc/config/s390/s390-c.c gcc-8.4.0/gcc/config/s390/s390-c.c
*** gcc-8.3.0/gcc/config/s390/s390-c.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/s390/s390-c.c	Wed Mar  4 08:30:00 2020
*************** s390_expand_overloaded_builtin (location
*** 477,492 ****
      case S390_OVERLOADED_BUILTIN_s390_vec_xl:
      case S390_OVERLOADED_BUILTIN_s390_vec_xld2:
      case S390_OVERLOADED_BUILTIN_s390_vec_xlw4:
!       return build2 (MEM_REF, return_type,
! 		     fold_build_pointer_plus ((*arglist)[1], (*arglist)[0]),
! 		     build_int_cst (TREE_TYPE ((*arglist)[1]), 0));
      case S390_OVERLOADED_BUILTIN_s390_vec_xst:
      case S390_OVERLOADED_BUILTIN_s390_vec_xstd2:
      case S390_OVERLOADED_BUILTIN_s390_vec_xstw4:
!       return build2 (MODIFY_EXPR, TREE_TYPE((*arglist)[0]),
! 		     build1 (INDIRECT_REF, TREE_TYPE((*arglist)[0]),
! 			     fold_build_pointer_plus ((*arglist)[2], (*arglist)[1])),
! 		     (*arglist)[0]);
      case S390_OVERLOADED_BUILTIN_s390_vec_load_pair:
        return build_constructor_va (return_type, 2,
  				   NULL_TREE, (*arglist)[0],
--- 477,506 ----
      case S390_OVERLOADED_BUILTIN_s390_vec_xl:
      case S390_OVERLOADED_BUILTIN_s390_vec_xld2:
      case S390_OVERLOADED_BUILTIN_s390_vec_xlw4:
!       {
! 	/* Build a vector type with the alignment of the source
! 	   location in order to enable correct alignment hints to be
! 	   generated for vl.  */
! 	tree mem_type = build_aligned_type (return_type,
! 					    TYPE_ALIGN (TREE_TYPE (TREE_TYPE ((*arglist)[1]))));
! 	return build2 (MEM_REF, mem_type,
! 		       fold_build_pointer_plus ((*arglist)[1], (*arglist)[0]),
! 		       build_int_cst (TREE_TYPE ((*arglist)[1]), 0));
!       }
      case S390_OVERLOADED_BUILTIN_s390_vec_xst:
      case S390_OVERLOADED_BUILTIN_s390_vec_xstd2:
      case S390_OVERLOADED_BUILTIN_s390_vec_xstw4:
!       {
! 	/* Build a vector type with the alignment of the target
! 	   location in order to enable correct alignment hints to be
! 	   generated for vst.  */
! 	tree mem_type = build_aligned_type (TREE_TYPE((*arglist)[0]),
! 					    TYPE_ALIGN (TREE_TYPE (TREE_TYPE ((*arglist)[2]))));
! 	return build2 (MODIFY_EXPR, mem_type,
! 		       build1 (INDIRECT_REF, mem_type,
! 			       fold_build_pointer_plus ((*arglist)[2], (*arglist)[1])),
! 		       (*arglist)[0]);
!       }
      case S390_OVERLOADED_BUILTIN_s390_vec_load_pair:
        return build_constructor_va (return_type, 2,
  				   NULL_TREE, (*arglist)[0],
diff -Nrcpad gcc-8.3.0/gcc/config/s390/s390.c gcc-8.4.0/gcc/config/s390/s390.c
*** gcc-8.3.0/gcc/config/s390/s390.c	Fri Oct 19 08:53:39 2018
--- gcc-8.4.0/gcc/config/s390/s390.c	Wed Mar  4 08:30:00 2020
*************** s390_expand_builtin (tree exp, rtx targe
*** 937,942 ****
--- 937,944 ----
  	  continue;
  	}
  
+       /* A memory operand is rejected by the memory_operand predicate.
+ 	 Try making the address legal by copying it into a register.  */
        if (MEM_P (op[arity])
  	  && insn_op->predicate == memory_operand
  	  && (GET_MODE (XEXP (op[arity], 0)) == Pmode
*************** s390_expand_builtin (tree exp, rtx targe
*** 960,969 ****
  	{
  	  op[arity] = tmp_rtx;
  	}
!       else if (GET_MODE (op[arity]) == insn_op->mode
! 	       || GET_MODE (op[arity]) == VOIDmode
! 	       || (insn_op->predicate == address_operand
! 		   && GET_MODE (op[arity]) == Pmode))
  	{
  	  /* An address_operand usually has VOIDmode in the expander
  	     so we cannot use this.  */
--- 962,975 ----
  	{
  	  op[arity] = tmp_rtx;
  	}
! 
!       /* The predicate rejects the operand although the mode is fine.
! 	 Copy the operand to register.  */
!       if (!insn_op->predicate (op[arity], insn_op->mode)
! 	  && (GET_MODE (op[arity]) == insn_op->mode
! 	      || GET_MODE (op[arity]) == VOIDmode
! 	      || (insn_op->predicate == address_operand
! 		  && GET_MODE (op[arity]) == Pmode)))
  	{
  	  /* An address_operand usually has VOIDmode in the expander
  	     so we cannot use this.  */
*************** s390_register_info ()
*** 10106,10111 ****
--- 10112,10132 ----
    s390_register_info_stdarg_gpr ();
  }
  
+ /* Return true if REGNO is a global register, but not one
+    of the special ones that need to be saved/restored in anyway.  */
+ 
+ static inline bool
+ global_not_special_regno_p (int regno)
+ {
+   return (global_regs[regno]
+ 	  /* These registers are special and need to be
+ 	     restored in any case.  */
+ 	  && !(regno == STACK_POINTER_REGNUM
+ 	       || regno == RETURN_REGNUM
+ 	       || regno == BASE_REGNUM
+ 	       || (flag_pic && regno == (int)PIC_OFFSET_TABLE_REGNUM)));
+ }
+ 
  /* This function is called by s390_optimize_prologue in order to get
     rid of unnecessary GPR save/restore instructions.  The register info
     for the GPRs is re-computed and the ranges are re-calculated.  */
*************** s390_optimize_register_info ()
*** 10121,10128 ****
  
    s390_regs_ever_clobbered (clobbered_regs);
  
    for (i = 0; i < 32; i++)
!     clobbered_regs[i] = clobbered_regs[i] && !global_regs[i];
  
    /* There is still special treatment needed for cases invisible to
       s390_regs_ever_clobbered.  */
--- 10142,10151 ----
  
    s390_regs_ever_clobbered (clobbered_regs);
  
+   /* Global registers do not need to be saved and restored unless it
+      is one of our special regs.  (r12, r13, r14, or r15).  */
    for (i = 0; i < 32; i++)
!     clobbered_regs[i] = clobbered_regs[i] && !global_not_special_regno_p (i);
  
    /* There is still special treatment needed for cases invisible to
       s390_regs_ever_clobbered.  */
*************** restore_fpr (rtx base, int offset, int r
*** 10876,10896 ****
    return emit_move_insn (gen_rtx_REG (DFmode, regnum), addr);
  }
  
- /* Return true if REGNO is a global register, but not one
-    of the special ones that need to be saved/restored in anyway.  */
- 
- static inline bool
- global_not_special_regno_p (int regno)
- {
-   return (global_regs[regno]
- 	  /* These registers are special and need to be
- 	     restored in any case.  */
- 	  && !(regno == STACK_POINTER_REGNUM
- 	       || regno == RETURN_REGNUM
- 	       || regno == BASE_REGNUM
- 	       || (flag_pic && regno == (int)PIC_OFFSET_TABLE_REGNUM)));
- }
- 
  /* Generate insn to save registers FIRST to LAST into
     the register save area located at offset OFFSET
     relative to register BASE.  */
--- 10899,10904 ----
*************** s390_can_inline_p (tree caller, tree cal
*** 16039,16044 ****
--- 16047,16053 ----
  
    return ret;
  }
+ #endif
  
  /* Set VAL to correct enum value according to the indirect-branch or
     function-return attribute in ATTR.  */
*************** s390_indirect_branch_settings (tree fnde
*** 16112,16117 ****
--- 16121,16127 ----
      s390_indirect_branch_attrvalue (attr, &cfun->machine->function_return_mem);
  }
  
+ #if S390_USE_TARGET_ATTRIBUTE
  /* Restore targets globals from NEW_TREE and invalidate s390_previous_fndecl
     cache.  */
  
*************** s390_activate_target_options (tree new_t
*** 16127,16132 ****
--- 16137,16143 ----
      TREE_TARGET_GLOBALS (new_tree) = save_target_globals_default_opts ();
    s390_previous_fndecl = NULL_TREE;
  }
+ #endif
  
  /* Establish appropriate back-end context for processing the function
     FNDECL.  The argument might be NULL to indicate processing at top
*************** s390_activate_target_options (tree new_t
*** 16134,16139 ****
--- 16145,16151 ----
  static void
  s390_set_current_function (tree fndecl)
  {
+ #if S390_USE_TARGET_ATTRIBUTE
    /* Only change the context if the function changes.  This hook is called
       several times in the course of compiling a function, and we don't want to
       slow things down too much or call target_reinit when it isn't safe.  */
*************** s390_set_current_function (tree fndecl)
*** 16165,16174 ****
    if (old_tree != new_tree)
      s390_activate_target_options (new_tree);
    s390_previous_fndecl = fndecl;
! 
    s390_indirect_branch_settings (fndecl);
  }
- #endif
  
  /* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P.  */
  
--- 16177,16185 ----
    if (old_tree != new_tree)
      s390_activate_target_options (new_tree);
    s390_previous_fndecl = fndecl;
! #endif
    s390_indirect_branch_settings (fndecl);
  }
  
  /* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P.  */
  
*************** s390_case_values_threshold (void)
*** 16907,16916 ****
  #undef TARGET_ASM_FILE_END
  #define TARGET_ASM_FILE_END s390_asm_file_end
  
- #if S390_USE_TARGET_ATTRIBUTE
  #undef TARGET_SET_CURRENT_FUNCTION
  #define TARGET_SET_CURRENT_FUNCTION s390_set_current_function
  
  #undef TARGET_OPTION_VALID_ATTRIBUTE_P
  #define TARGET_OPTION_VALID_ATTRIBUTE_P s390_valid_target_attribute_p
  
--- 16918,16927 ----
  #undef TARGET_ASM_FILE_END
  #define TARGET_ASM_FILE_END s390_asm_file_end
  
  #undef TARGET_SET_CURRENT_FUNCTION
  #define TARGET_SET_CURRENT_FUNCTION s390_set_current_function
  
+ #if S390_USE_TARGET_ATTRIBUTE
  #undef TARGET_OPTION_VALID_ATTRIBUTE_P
  #define TARGET_OPTION_VALID_ATTRIBUTE_P s390_valid_target_attribute_p
  
diff -Nrcpad gcc-8.3.0/gcc/config/s390/vector.md gcc-8.4.0/gcc/config/s390/vector.md
*** gcc-8.3.0/gcc/config/s390/vector.md	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/s390/vector.md	Wed Mar  4 08:30:00 2020
***************
*** 289,297 ****
  ; However, this would probably be slower.
  
  (define_insn "mov<mode>"
!   [(set (match_operand:V_8 0 "nonimmediate_operand" "=v,v,d,v,R,  v,  v,  v,  v,d,  Q,  S,  Q,  S,  d,  d,d,d,d,R,T")
!         (match_operand:V_8 1 "general_operand"      " v,d,v,R,v,j00,jm1,jyy,jxx,d,j00,j00,jm1,jm1,j00,jm1,R,T,b,d,d"))]
!   ""
    "@
     vlr\t%v0,%v1
     vlvgb\t%v0,%1,0
--- 289,297 ----
  ; However, this would probably be slower.
  
  (define_insn "mov<mode>"
!   [(set (match_operand:V_8 0 "nonimmediate_operand" "=v,v,d,v,R,  v,  v,  v,  v,d,  Q,  S,  Q,  S,  d,  d,d,R,T")
!         (match_operand:V_8 1 "general_operand"      " v,d,v,R,v,j00,jm1,jyy,jxx,d,j00,j00,jm1,jm1,j00,jm1,T,d,d"))]
!   "TARGET_VX"
    "@
     vlr\t%v0,%v1
     vlvgb\t%v0,%1,0
***************
*** 309,320 ****
     mviy\t%0,-1
     lhi\t%0,0
     lhi\t%0,-1
!    lh\t%0,%1
!    lhy\t%0,%1
!    lhrl\t%0,%1
     stc\t%1,%0
     stcy\t%1,%0"
!   [(set_attr "op_type"      "VRR,VRS,VRS,VRX,VRX,VRI,VRI,VRI,VRI,RR,SI,SIY,SI,SIY,RI,RI,RX,RXY,RIL,RX,RXY")])
  
  (define_insn "mov<mode>"
    [(set (match_operand:V_16 0 "nonimmediate_operand" "=v,v,d,v,R,  v,  v,  v,  v,d,  Q,  Q,  d,  d,d,d,d,R,T,b")
--- 309,318 ----
     mviy\t%0,-1
     lhi\t%0,0
     lhi\t%0,-1
!    llc\t%0,%1
     stc\t%1,%0
     stcy\t%1,%0"
!   [(set_attr "op_type"      "VRR,VRS,VRS,VRX,VRX,VRI,VRI,VRI,VRI,RR,SI,SIY,SI,SIY,RI,RI,RXY,RX,RXY")])
  
  (define_insn "mov<mode>"
    [(set (match_operand:V_16 0 "nonimmediate_operand" "=v,v,d,v,R,  v,  v,  v,  v,d,  Q,  Q,  d,  d,d,d,d,R,T,b")
***************
*** 944,950 ****
  	(VEC_SHIFTS:VI (match_operand:VI 1 "register_operand"   "v")
  		       (match_operand:SI 2 "nonmemory_operand" "an")))]
    "TARGET_VX"
!   "<vec_shifts_mnem><bhfgq>\t%v0,%v1,%Y2"
    [(set_attr "op_type" "VRS")])
  
  ; Shift each element by corresponding vector element
--- 942,948 ----
  	(VEC_SHIFTS:VI (match_operand:VI 1 "register_operand"   "v")
  		       (match_operand:SI 2 "nonmemory_operand" "an")))]
    "TARGET_VX"
!   "<vec_shifts_mnem><bhfgq>\t%v0,%v1,<addr_style_op_ops>"
    [(set_attr "op_type" "VRS")])
  
  ; Shift each element by corresponding vector element
diff -Nrcpad gcc-8.3.0/gcc/config/sh/sh.c gcc-8.4.0/gcc/config/sh/sh.c
*** gcc-8.3.0/gcc/config/sh/sh.c	Mon Feb 19 21:58:04 2018
--- gcc-8.4.0/gcc/config/sh/sh.c	Wed Mar  4 08:30:00 2020
*************** got_mode_name:;
*** 736,742 ****
      {
        if (tokens[i] == "strict")
  	ret.strict = true;
!       else if (tokens[i].find ("gbr-offset=") == 0)
  	{
  	  std::string offset_str = tokens[i].substr (strlen ("gbr-offset="));
  	  ret.tcb_gbr_offset = integral_argument (offset_str.c_str ());
--- 736,742 ----
      {
        if (tokens[i] == "strict")
  	ret.strict = true;
!       else if (!tokens[i].compare (0, strlen ("gbr-offset="), "gbr-offset="))
  	{
  	  std::string offset_str = tokens[i].substr (strlen ("gbr-offset="));
  	  ret.tcb_gbr_offset = integral_argument (offset_str.c_str ());
*************** sh_option_override (void)
*** 957,967 ****
    if (flag_unsafe_math_optimizations)
      {
        /* Enable fsca insn for SH4A if not otherwise specified by the user.  */
!       if (global_options_set.x_TARGET_FSCA == 0 && TARGET_SH4A_FP)
  	TARGET_FSCA = 1;
  
        /* Enable fsrra insn for SH4A if not otherwise specified by the user.  */
!       if (global_options_set.x_TARGET_FSRRA == 0 && TARGET_SH4A_FP)
  	TARGET_FSRRA = 1;
      }
  
--- 957,969 ----
    if (flag_unsafe_math_optimizations)
      {
        /* Enable fsca insn for SH4A if not otherwise specified by the user.  */
!       if (global_options_set.x_TARGET_FSCA == 0
! 	  && (TARGET_SH4A_FP || TARGET_FPU_SH4_300))
  	TARGET_FSCA = 1;
  
        /* Enable fsrra insn for SH4A if not otherwise specified by the user.  */
!       if (global_options_set.x_TARGET_FSRRA == 0
! 	  && (TARGET_SH4A_FP || TARGET_FPU_SH4_300))
  	TARGET_FSRRA = 1;
      }
  
*************** sh_output_mi_thunk (FILE *file, tree thu
*** 10875,10886 ****
  	  emit_insn (gen_add2_insn (scratch0, GEN_INT (vcall_offset)));
  	  offset_addr = scratch0;
  	}
-       else if (scratch0 != scratch1)
- 	{
- 	  emit_move_insn (scratch1, GEN_INT (vcall_offset));
- 	  emit_insn (gen_add2_insn (scratch0, scratch1));
- 	  offset_addr = scratch0;
- 	}
        else
  	gcc_unreachable (); /* FIXME */
        emit_load_ptr (scratch0, offset_addr);
--- 10877,10882 ----
*************** sh_extending_set_of_reg::use_as_extended
*** 12077,12085 ****
  	rtx r = gen_reg_rtx (SImode);
  	rtx_insn* i0;
  	if (from_mode == QImode)
! 	  i0 = emit_insn_after (gen_extendqisi2 (r, set_src), insn);
  	else if (from_mode == HImode)
! 	  i0 = emit_insn_after (gen_extendhisi2 (r, set_src), insn);
  	else
  	  gcc_unreachable ();
  
--- 12073,12083 ----
  	rtx r = gen_reg_rtx (SImode);
  	rtx_insn* i0;
  	if (from_mode == QImode)
! 	  i0 = sh_check_add_incdec_notes (
! 			emit_insn_after (gen_extendqisi2 (r, set_src), insn));
  	else if (from_mode == HImode)
! 	  i0 = sh_check_add_incdec_notes (
! 			emit_insn_after (gen_extendhisi2 (r, set_src), insn));
  	else
  	  gcc_unreachable ();
  
*************** static void
*** 12497,12503 ****
  sh_emit_mode_set (int entity ATTRIBUTE_UNUSED, int mode,
  		  int prev_mode, HARD_REG_SET regs_live ATTRIBUTE_UNUSED)
  {
!   if ((TARGET_SH4A_FP || TARGET_SH4_300)
        && prev_mode != FP_MODE_NONE && prev_mode != mode)
      {
        emit_insn (gen_toggle_pr ());
--- 12495,12501 ----
  sh_emit_mode_set (int entity ATTRIBUTE_UNUSED, int mode,
  		  int prev_mode, HARD_REG_SET regs_live ATTRIBUTE_UNUSED)
  {
!   if ((TARGET_SH4A_FP || TARGET_FPU_SH4_300)
        && prev_mode != FP_MODE_NONE && prev_mode != mode)
      {
        emit_insn (gen_toggle_pr ());
diff -Nrcpad gcc-8.3.0/gcc/config/sh/sh.h gcc-8.4.0/gcc/config/sh/sh.h
*** gcc-8.3.0/gcc/config/sh/sh.h	Wed Jan  3 21:42:42 2018
--- gcc-8.4.0/gcc/config/sh/sh.h	Wed Mar  4 08:30:00 2020
*************** extern int code_for_indirect_jump_scratc
*** 69,74 ****
--- 69,76 ----
     FPU is disabled (which makes it compatible with SH4al-dsp).  */
  #define TARGET_SH4A_FP (TARGET_SH4A && TARGET_FPU_ANY)
  
+ /* True if the FPU is a SH4-300 variant.  */
+ #define TARGET_FPU_SH4_300 (TARGET_FPU_ANY && TARGET_SH4_300)
  
  /* This is not used by the SH2E calling convention  */
  #define TARGET_VARARGS_PRETEND_ARGS(FUN_DECL) \
diff -Nrcpad gcc-8.3.0/gcc/config/sh/sh.md gcc-8.4.0/gcc/config/sh/sh.md
*** gcc-8.3.0/gcc/config/sh/sh.md	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/sh/sh.md	Wed Mar  4 08:30:00 2020
***************
*** 9163,9169 ****
  	(xor:SI (reg:SI FPSCR_REG) (const_int FPSCR_PR)))
     (set (reg:SI FPSCR_MODES_REG)
  	(unspec_volatile:SI [(const_int 0)] UNSPECV_FPSCR_MODES))]
!   "TARGET_SH4A_FP"
    "fpchg"
    [(set_attr "type" "fpscr_toggle")])
  
--- 9163,9169 ----
  	(xor:SI (reg:SI FPSCR_REG) (const_int FPSCR_PR)))
     (set (reg:SI FPSCR_MODES_REG)
  	(unspec_volatile:SI [(const_int 0)] UNSPECV_FPSCR_MODES))]
!   "TARGET_SH4A_FP || TARGET_FPU_SH4_300"
    "fpchg"
    [(set_attr "type" "fpscr_toggle")])
  
***************
*** 9391,9405 ****
  (define_expand "negsf2"
    [(set (match_operand:SF 0 "fp_arith_reg_operand")
  	(neg:SF (match_operand:SF 1 "fp_arith_reg_operand")))]
!   "TARGET_SH2E")
  
! (define_insn "*negsf2_i"
    [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
  	(neg:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))]
!   "TARGET_SH2E"
    "fneg	%0"
    [(set_attr "type" "fmove")])
  
  (define_expand "sqrtsf2"
    [(set (match_operand:SF 0 "fp_arith_reg_operand" "")
  	(sqrt:SF (match_operand:SF 1 "fp_arith_reg_operand" "")))]
--- 9391,9421 ----
  (define_expand "negsf2"
    [(set (match_operand:SF 0 "fp_arith_reg_operand")
  	(neg:SF (match_operand:SF 1 "fp_arith_reg_operand")))]
!   "TARGET_FPU_ANY"
! {
!   if (TARGET_FPU_SH4_300)
!     emit_insn (gen_negsf2_fpscr (operands[0], operands[1]));
!   else
!     emit_insn (gen_negsf2_no_fpscr (operands[0], operands[1]));
!   DONE;
! })
  
! (define_insn "negsf2_no_fpscr"
    [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
  	(neg:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))]
!   "TARGET_FPU_ANY && !TARGET_FPU_SH4_300"
    "fneg	%0"
    [(set_attr "type" "fmove")])
  
+ (define_insn "negsf2_fpscr"
+   [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
+ 	(neg:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))
+    (use (reg:SI FPSCR_MODES_REG))]
+   "TARGET_FPU_SH4_300"
+   "fneg	%0"
+   [(set_attr "type" "fmove")
+    (set_attr "fp_mode" "single")])
+ 
  (define_expand "sqrtsf2"
    [(set (match_operand:SF 0 "fp_arith_reg_operand" "")
  	(sqrt:SF (match_operand:SF 1 "fp_arith_reg_operand" "")))]
***************
*** 9489,9503 ****
  (define_expand "abssf2"
    [(set (match_operand:SF 0 "fp_arith_reg_operand")
  	(abs:SF (match_operand:SF 1 "fp_arith_reg_operand")))]
!   "TARGET_SH2E")
  
! (define_insn "*abssf2_i"
    [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
  	(abs:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))]
!   "TARGET_SH2E"
    "fabs	%0"
    [(set_attr "type" "fmove")])
  
  (define_expand "adddf3"
    [(set (match_operand:DF 0 "fp_arith_reg_operand" "")
  	(plus:DF (match_operand:DF 1 "fp_arith_reg_operand" "")
--- 9505,9535 ----
  (define_expand "abssf2"
    [(set (match_operand:SF 0 "fp_arith_reg_operand")
  	(abs:SF (match_operand:SF 1 "fp_arith_reg_operand")))]
!   "TARGET_FPU_ANY"
! {
!   if (TARGET_FPU_SH4_300)
!     emit_insn (gen_abssf2_fpscr (operands[0], operands[1]));
!   else
!     emit_insn (gen_abssf2_no_fpscr (operands[0], operands[1]));
!   DONE;
! })
  
! (define_insn "abssf2_no_fpscr"
    [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
  	(abs:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))]
!   "TARGET_FPU_ANY && !TARGET_FPU_SH4_300"
    "fabs	%0"
    [(set_attr "type" "fmove")])
  
+ (define_insn "abssf2_fpscr"
+   [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
+ 	(abs:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))
+    (use (reg:SI FPSCR_MODES_REG))]
+   "TARGET_FPU_SH4_300"
+   "fabs	%0"
+   [(set_attr "type" "fmove")
+    (set_attr "fp_mode" "single")])
+ 
  (define_expand "adddf3"
    [(set (match_operand:DF 0 "fp_arith_reg_operand" "")
  	(plus:DF (match_operand:DF 1 "fp_arith_reg_operand" "")
***************
*** 9673,9684 ****
  (define_expand "negdf2"
    [(set (match_operand:DF 0 "fp_arith_reg_operand")
  	(neg:DF (match_operand:DF 1 "fp_arith_reg_operand")))]
!   "TARGET_FPU_DOUBLE")
  
! (define_insn "*negdf2_i"
    [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f")
  	(neg:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))]
!   "TARGET_FPU_DOUBLE"
    "fneg	%0"
    [(set_attr "type" "fmove")])
  
--- 9705,9732 ----
  (define_expand "negdf2"
    [(set (match_operand:DF 0 "fp_arith_reg_operand")
  	(neg:DF (match_operand:DF 1 "fp_arith_reg_operand")))]
!   "TARGET_FPU_DOUBLE"
! {
!   if (TARGET_FPU_SH4_300)
!     emit_insn (gen_negdf2_fpscr (operands[0], operands[1]));
!   else
!     emit_insn (gen_negdf2_no_fpscr (operands[0], operands[1]));
!   DONE;
! })
  
! (define_insn "negdf2_fpscr"
!   [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f")
! 	(neg:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))
!    (use (reg:SI FPSCR_MODES_REG))]
!   "TARGET_FPU_SH4_300"
!   "fneg	%0"
!   [(set_attr "type" "fmove")
!    (set_attr "fp_mode" "double")])
! 
! (define_insn "negdf2_no_fpscr"
    [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f")
  	(neg:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))]
!   "TARGET_FPU_DOUBLE && !TARGET_FPU_SH4_300"
    "fneg	%0"
    [(set_attr "type" "fmove")])
  
***************
*** 9704,9718 ****
  (define_expand "absdf2"
    [(set (match_operand:DF 0 "fp_arith_reg_operand")
  	(abs:DF (match_operand:DF 1 "fp_arith_reg_operand")))]
!   "TARGET_FPU_DOUBLE")
  
! (define_insn "*absdf2_i"
    [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f")
  	(abs:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))]
!   "TARGET_FPU_DOUBLE"
    "fabs	%0"
    [(set_attr "type" "fmove")])
  
  (define_expand "extendsfdf2"
    [(set (match_operand:DF 0 "fp_arith_reg_operand" "")
  	(float_extend:DF (match_operand:SF 1 "fpul_operand" "")))]
--- 9752,9782 ----
  (define_expand "absdf2"
    [(set (match_operand:DF 0 "fp_arith_reg_operand")
  	(abs:DF (match_operand:DF 1 "fp_arith_reg_operand")))]
!   "TARGET_FPU_DOUBLE"
! {
!   if (TARGET_FPU_SH4_300)
!     emit_insn (gen_absdf2_fpscr (operands[0], operands[1]));
!   else
!     emit_insn (gen_absdf2_no_fpscr (operands[0], operands[1]));
!   DONE;
! })
  
! (define_insn "absdf2_no_fpscr"
    [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f")
  	(abs:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))]
!   "TARGET_FPU_DOUBLE && !TARGET_FPU_SH4_300"
    "fabs	%0"
    [(set_attr "type" "fmove")])
  
+ (define_insn "absdf2_fpscr"
+   [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f")
+ 	(abs:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))
+    (use (reg:SI FPSCR_MODES_REG))]
+   "TARGET_FPU_SH4_300"
+   "fabs	%0"
+   [(set_attr "type" "fmove")
+    (set_attr "fp_mode" "double")])
+ 
  (define_expand "extendsfdf2"
    [(set (match_operand:DF 0 "fp_arith_reg_operand" "")
  	(float_extend:DF (match_operand:SF 1 "fpul_operand" "")))]
diff -Nrcpad gcc-8.3.0/gcc/config/sparc/sparc-protos.h gcc-8.4.0/gcc/config/sparc/sparc-protos.h
*** gcc-8.3.0/gcc/config/sparc/sparc-protos.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/config/sparc/sparc-protos.h	Wed Mar  4 08:30:00 2020
*************** extern void sparc_split_reg_mem (rtx, rt
*** 69,74 ****
--- 69,75 ----
  extern void sparc_split_mem_reg (rtx, rtx, machine_mode);
  extern int sparc_split_reg_reg_legitimate (rtx, rtx);
  extern void sparc_split_reg_reg (rtx, rtx, machine_mode);
+ extern const char *output_load_pcrel_sym (rtx *);
  extern const char *output_ubranch (rtx, rtx_insn *);
  extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *);
  extern const char *output_return (rtx_insn *);
diff -Nrcpad gcc-8.3.0/gcc/config/sparc/sparc.c gcc-8.4.0/gcc/config/sparc/sparc.c
*** gcc-8.3.0/gcc/config/sparc/sparc.c	Mon Feb  4 11:14:05 2019
--- gcc-8.4.0/gcc/config/sparc/sparc.c	Wed Mar  4 08:30:00 2020
*************** eligible_for_call_delay (rtx_insn *trial
*** 3967,3977 ****
    if (get_attr_in_branch_delay (trial) == IN_BRANCH_DELAY_FALSE)
      return 0;
  
!   /* Binutils allows
!        call __tls_get_addr, %tgd_call (foo)
!         add %l7, %o0, %o0, %tgd_add (foo)
!      while Sun as/ld does not.  */
!   if (TARGET_GNU_TLS || !TARGET_TLS)
      return 1;
  
    pat = PATTERN (trial);
--- 3967,3974 ----
    if (get_attr_in_branch_delay (trial) == IN_BRANCH_DELAY_FALSE)
      return 0;
  
!   /* The only problematic cases are TLS sequences with Sun as/ld.  */
!   if ((TARGET_GNU_TLS && HAVE_GNU_LD) || !TARGET_TLS)
      return 1;
  
    pat = PATTERN (trial);
*************** sparc_cannot_force_const_mem (machine_mo
*** 4238,4246 ****
  }
  
  /* Global Offset Table support.  */
- static GTY(()) rtx got_helper_rtx = NULL_RTX;
- static GTY(()) rtx got_register_rtx = NULL_RTX;
  static GTY(()) rtx got_symbol_rtx = NULL_RTX;
  
  /* Return the SYMBOL_REF for the Global Offset Table.  */
  
--- 4235,4245 ----
  }
  
  /* Global Offset Table support.  */
  static GTY(()) rtx got_symbol_rtx = NULL_RTX;
+ static GTY(()) rtx got_register_rtx = NULL_RTX;
+ static GTY(()) rtx got_helper_rtx = NULL_RTX;
+ 
+ static GTY(()) bool got_helper_needed = false;
  
  /* Return the SYMBOL_REF for the Global Offset Table.  */
  
*************** sparc_got (void)
*** 4253,4279 ****
    return got_symbol_rtx;
  }
  
- #ifdef HAVE_GAS_HIDDEN
- # define USE_HIDDEN_LINKONCE 1
- #else
- # define USE_HIDDEN_LINKONCE 0
- #endif
- 
- static void
- get_pc_thunk_name (char name[32], unsigned int regno)
- {
-   const char *reg_name = reg_names[regno];
- 
-   /* Skip the leading '%' as that cannot be used in a
-      symbol name.  */
-   reg_name += 1;
- 
-   if (USE_HIDDEN_LINKONCE)
-     sprintf (name, "__sparc_get_pc_thunk.%s", reg_name);
-   else
-     ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", regno);
- }
- 
  /* Wrapper around the load_pcrel_sym{si,di} patterns.  */
  
  static rtx
--- 4252,4257 ----
*************** gen_load_pcrel_sym (rtx op0, rtx op1, rt
*** 4293,4322 ****
    return insn;
  }
  
  /* Emit code to load the GOT register.  */
  
  void
  load_got_register (void)
  {
!   if (!got_register_rtx)
!     got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
  
    if (TARGET_VXWORKS_RTP)
!     emit_insn (gen_vxworks_load_got ());
    else
      {
        /* The GOT symbol is subject to a PC-relative relocation so we need a
  	 helper function to add the PC value and thus get the final value.  */
        if (!got_helper_rtx)
  	{
  	  char name[32];
! 	  get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM);
  	  got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
  	}
  
!       emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (),
! 				     got_helper_rtx));
      }
  }
  
  /* Ensure that we are not using patterns that are not OK with PIC.  */
--- 4271,4348 ----
    return insn;
  }
  
+ /* Output the load_pcrel_sym{si,di} patterns.  */
+ 
+ const char *
+ output_load_pcrel_sym (rtx *operands)
+ {
+   if (flag_delayed_branch)
+     {
+       output_asm_insn ("sethi\t%%hi(%a1-4), %0", operands);
+       output_asm_insn ("call\t%a2", operands);
+       output_asm_insn (" add\t%0, %%lo(%a1+4), %0", operands);
+     }
+   else
+     {
+       output_asm_insn ("sethi\t%%hi(%a1-8), %0", operands);
+       output_asm_insn ("add\t%0, %%lo(%a1-4), %0", operands);
+       output_asm_insn ("call\t%a2", operands);
+       output_asm_insn (" nop", NULL);
+     }
+ 
+   if (operands[2] == got_helper_rtx)
+     got_helper_needed = true;
+ 
+   return "";
+ }
+ 
+ #ifdef HAVE_GAS_HIDDEN
+ # define USE_HIDDEN_LINKONCE 1
+ #else
+ # define USE_HIDDEN_LINKONCE 0
+ #endif
+ 
  /* Emit code to load the GOT register.  */
  
  void
  load_got_register (void)
  {
!   rtx insn;
  
    if (TARGET_VXWORKS_RTP)
!     {
!       if (!got_register_rtx)
! 	got_register_rtx = pic_offset_table_rtx;
! 
!       insn = gen_vxworks_load_got ();
!     }
    else
      {
+       if (!got_register_rtx)
+ 	got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
+ 
        /* The GOT symbol is subject to a PC-relative relocation so we need a
  	 helper function to add the PC value and thus get the final value.  */
        if (!got_helper_rtx)
  	{
  	  char name[32];
! 
! 	  /* Skip the leading '%' as that cannot be used in a symbol name.  */
! 	  if (USE_HIDDEN_LINKONCE)
! 	    sprintf (name, "__sparc_get_pc_thunk.%s",
! 		     reg_names[REGNO (got_register_rtx)] + 1);
! 	  else
! 	    ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC",
! 					 REGNO (got_register_rtx));
! 
  	  got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
  	}
  
!       insn
! 	= gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx);
      }
+ 
+   emit_insn (insn);
  }
  
  /* Ensure that we are not using patterns that are not OK with PIC.  */
*************** sparc_pic_register_p (rtx x)
*** 4452,4458 ****
      return true;
  
    if (!HARD_REGISTER_P (pic_offset_table_rtx)
!       && (HARD_REGISTER_P (x) || lra_in_progress)
        && ORIGINAL_REGNO (x) == REGNO (pic_offset_table_rtx))
      return true;
  
--- 4478,4484 ----
      return true;
  
    if (!HARD_REGISTER_P (pic_offset_table_rtx)
!       && (HARD_REGISTER_P (x) || lra_in_progress || reload_in_progress)
        && ORIGINAL_REGNO (x) == REGNO (pic_offset_table_rtx))
      return true;
  
*************** save_local_or_in_reg_p (unsigned int reg
*** 5468,5474 ****
      return true;
  
    /* GOT register (%l7) if needed.  */
!   if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx)
      return true;
  
    /* If the function accesses prior frames, the frame pointer and the return
--- 5494,5500 ----
      return true;
  
    /* GOT register (%l7) if needed.  */
!   if (got_register_rtx && regno == REGNO (got_register_rtx))
      return true;
  
    /* If the function accesses prior frames, the frame pointer and the return
*************** static void
*** 12449,12458 ****
  sparc_file_end (void)
  {
    /* If we need to emit the special GOT helper function, do so now.  */
!   if (got_helper_rtx)
      {
        const char *name = XSTR (got_helper_rtx, 0);
-       const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM];
  #ifdef DWARF2_UNWIND_INFO
        bool do_cfi;
  #endif
--- 12475,12483 ----
  sparc_file_end (void)
  {
    /* If we need to emit the special GOT helper function, do so now.  */
!   if (got_helper_needed)
      {
        const char *name = XSTR (got_helper_rtx, 0);
  #ifdef DWARF2_UNWIND_INFO
        bool do_cfi;
  #endif
*************** sparc_file_end (void)
*** 12489,12505 ****
  #ifdef DWARF2_UNWIND_INFO
        do_cfi = dwarf2out_do_cfi_asm ();
        if (do_cfi)
! 	fprintf (asm_out_file, "\t.cfi_startproc\n");
  #endif
        if (flag_delayed_branch)
! 	fprintf (asm_out_file, "\tjmp\t%%o7+8\n\t add\t%%o7, %s, %s\n",
! 		 reg_name, reg_name);
        else
! 	fprintf (asm_out_file, "\tadd\t%%o7, %s, %s\n\tjmp\t%%o7+8\n\t nop\n",
! 		 reg_name, reg_name);
  #ifdef DWARF2_UNWIND_INFO
        if (do_cfi)
! 	fprintf (asm_out_file, "\t.cfi_endproc\n");
  #endif
      }
  
--- 12514,12535 ----
  #ifdef DWARF2_UNWIND_INFO
        do_cfi = dwarf2out_do_cfi_asm ();
        if (do_cfi)
! 	output_asm_insn (".cfi_startproc", NULL);
  #endif
        if (flag_delayed_branch)
! 	{
! 	  output_asm_insn ("jmp\t%%o7+8", NULL);
! 	  output_asm_insn (" add\t%%o7, %0, %0", &got_register_rtx);
! 	}
        else
! 	{
! 	  output_asm_insn ("add\t%%o7, %0, %0", &got_register_rtx);
! 	  output_asm_insn ("jmp\t%%o7+8", NULL);
! 	  output_asm_insn (" nop", NULL);
! 	}
  #ifdef DWARF2_UNWIND_INFO
        if (do_cfi)
! 	output_asm_insn (".cfi_endproc", NULL);
  #endif
      }
  
*************** sparc_init_pic_reg (void)
*** 13005,13011 ****
    edge entry_edge;
    rtx_insn *seq;
  
!   if (!crtl->uses_pic_offset_table)
      return;
  
    start_sequence ();
--- 13035,13044 ----
    edge entry_edge;
    rtx_insn *seq;
  
!   /* In PIC mode, we need to always initialize the PIC register if optimization
!      is enabled, because we are called from IRA and LRA may later force things
!      to the constant pool for optimization purposes.  */
!   if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize))
      return;
  
    start_sequence ();
diff -Nrcpad gcc-8.3.0/gcc/config/sparc/sparc.h gcc-8.4.0/gcc/config/sparc/sparc.h
*** gcc-8.3.0/gcc/config/sparc/sparc.h	Mon Feb  4 11:14:05 2019
--- gcc-8.4.0/gcc/config/sparc/sparc.h	Wed Mar  4 08:30:00 2020
*************** extern enum cmodel sparc_cmodel;
*** 748,753 ****
--- 748,760 ----
     register window instruction in the prologue.  */
  #define HARD_REGNO_RENAME_OK(FROM, TO) ((FROM) != 1)
  
+ /* Select a register mode required for caller save of hard regno REGNO.
+    Contrary to what is documented, the default is not the smallest suitable
+    mode but the largest suitable mode for the given (REGNO, NREGS) pair and
+    it quickly creates paradoxical subregs that can be problematic.  */
+ #define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \
+   ((MODE) == VOIDmode ? choose_hard_reg_mode (REGNO, NREGS, false) : (MODE))
+ 
  /* Specify the registers used for certain standard purposes.
     The values of these macros are register numbers.  */
  
diff -Nrcpad gcc-8.3.0/gcc/config/sparc/sparc.md gcc-8.4.0/gcc/config/sparc/sparc.md
*** gcc-8.3.0/gcc/config/sparc/sparc.md	Wed Jan  9 14:48:45 2019
--- gcc-8.4.0/gcc/config/sparc/sparc.md	Wed Mar  4 08:30:00 2020
***************
*** 1601,1610 ****
     (clobber (reg:P O7_REG))]
    "REGNO (operands[0]) == INTVAL (operands[3])"
  {
!   if (flag_delayed_branch)
!     return "sethi\t%%hi(%a1-4), %0\n\tcall\t%a2\n\t add\t%0, %%lo(%a1+4), %0";
!   else
!     return "sethi\t%%hi(%a1-8), %0\n\tadd\t%0, %%lo(%a1-4), %0\n\tcall\t%a2\n\t nop";
  }
    [(set (attr "type") (const_string "multi"))
     (set (attr "length")
--- 1601,1607 ----
     (clobber (reg:P O7_REG))]
    "REGNO (operands[0]) == INTVAL (operands[3])"
  {
!   return output_load_pcrel_sym (operands);
  }
    [(set (attr "type") (const_string "multi"))
     (set (attr "length")
diff -Nrcpad gcc-8.3.0/gcc/config/xtensa/xtensa.c gcc-8.4.0/gcc/config/xtensa/xtensa.c
*** gcc-8.3.0/gcc/config/xtensa/xtensa.c	Tue Sep  4 17:53:22 2018
--- gcc-8.4.0/gcc/config/xtensa/xtensa.c	Wed Mar  4 08:30:00 2020
*************** xtensa_expand_prologue (void)
*** 2862,2868 ****
  			    gen_rtx_SET (mem, reg));
  	    }
  	}
!       if (total_size > 1024)
  	{
  	  rtx tmp_reg = gen_rtx_REG (Pmode, A9_REG);
  	  emit_move_insn (tmp_reg, GEN_INT (total_size -
--- 2862,2869 ----
  			    gen_rtx_SET (mem, reg));
  	    }
  	}
!       if (total_size > 1024
! 	  || (!callee_save_size && total_size > 128))
  	{
  	  rtx tmp_reg = gen_rtx_REG (Pmode, A9_REG);
  	  emit_move_insn (tmp_reg, GEN_INT (total_size -
diff -Nrcpad gcc-8.3.0/gcc/config.gcc gcc-8.4.0/gcc/config.gcc
*** gcc-8.3.0/gcc/config.gcc	Tue Jan 29 15:31:10 2019
--- gcc-8.4.0/gcc/config.gcc	Wed Mar  4 08:30:00 2020
*************** x86_cpus="generic intel"
*** 647,653 ****
  # Common parts for widely ported systems.
  case ${target} in
  *-*-darwin*)
!   tmake_file="t-darwin ${cpu_type}/t-darwin"
    tm_file="${tm_file} darwin.h"
    case ${target} in
    *-*-darwin9*)
--- 647,653 ----
  # Common parts for widely ported systems.
  case ${target} in
  *-*-darwin*)
!   tmake_file="t-darwin "
    tm_file="${tm_file} darwin.h"
    case ${target} in
    *-*-darwin9*)
*************** hppa[12]*-*-hpux11*)
*** 1479,1494 ****
  		dwarf2=no
  	fi
  	;;
  i[34567]86-*-darwin*)
  	need_64bit_isa=yes
  	# Baseline choice for a machine that allows m64 support.
  	with_cpu=${with_cpu:-core2}
  	tmake_file="${tmake_file} t-slibgcc"
  	;;
  x86_64-*-darwin*)
  	with_cpu=${with_cpu:-core2}
! 	tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc"
! 	tm_file="${tm_file} ${cpu_type}/darwin64.h"
  	;;
  i[34567]86-*-elfiamcu)
  	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/iamcu.h"
--- 1479,1503 ----
  		dwarf2=no
  	fi
  	;;
+ i[34567]86-*-darwin1[89]*)
+ 	echo "Error: 32bit target is not supported after Darwin17" 1>&2
+ 	;;
  i[34567]86-*-darwin*)
  	need_64bit_isa=yes
  	# Baseline choice for a machine that allows m64 support.
  	with_cpu=${with_cpu:-core2}
+ 	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"
  	;;
  x86_64-*-darwin*)
  	with_cpu=${with_cpu:-core2}
! 	tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
! 	tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
  	;;
  i[34567]86-*-elfiamcu)
  	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/iamcu.h"
*************** pdp11-*-*)
*** 2386,2401 ****
  #	extra_headers=
  #	;;
  powerpc-*-darwin*)
! 	extra_options="${extra_options} rs6000/darwin.opt"
  	case ${target} in
! 	  *-darwin1[0-9]* | *-darwin[8-9]*)
! 	    tmake_file="${tmake_file} rs6000/t-darwin8"
! 	    tm_file="${tm_file} rs6000/darwin8.h"
  	    ;;
  	  *-darwin7*)
! 	    tm_file="${tm_file} rs6000/darwin7.h"
  	    ;;
! 	  *-darwin[0-6]*)
  	    ;;
  	esac
  	tmake_file="${tmake_file} t-slibgcc"
--- 2395,2417 ----
  #	extra_headers=
  #	;;
  powerpc-*-darwin*)
! 	extra_options="${extra_options} ${cpu_type}/darwin.opt"
  	case ${target} in
! 	  *-darwin1[0-9]* | *-darwin9*)
! 	    tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
! 	    tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
! 	    ;;
! 	  *-darwin8*)
! 	    tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
! 	    tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
! 	    tm_file="${tm_file} ${cpu_type}/darwin8.h"
  	    ;;
  	  *-darwin7*)
! 	    tm_file="${tm_file} ${cpu_type}/darwin7.h"
  	    ;;
! 	  *-darwin[456]*)
! 	    # Earlier - ingle arch, with 32b only
! 	    # OS X 10.0, the first edition is Darwin4
  	    ;;
  	esac
  	tmake_file="${tmake_file} t-slibgcc"
*************** powerpc-*-darwin*)
*** 2403,2410 ****
  	;;
  powerpc64-*-darwin*)
  	extra_options="${extra_options} ${cpu_type}/darwin.opt"
! 	tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc"
! 	tm_file="${tm_file} ${cpu_type}/darwin8.h ${cpu_type}/darwin64.h"
  	extra_headers=altivec.h
  	;;
  powerpc*-*-freebsd*)
--- 2419,2426 ----
  	;;
  powerpc64-*-darwin*)
  	extra_options="${extra_options} ${cpu_type}/darwin.opt"
! 	tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
! 	tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
  	extra_headers=altivec.h
  	;;
  powerpc*-*-freebsd*)
*************** case "${target}" in
*** 4447,4460 ****
  			 echo "#undef  LINK_OS_EXTRA_SPEC32"
  			 echo "#define LINK_OS_EXTRA_SPEC32" \
  			      "\"%(link_os_new_dtags)" \
! 			      "-rpath $prefix/lib -rpath $at/lib" \
! 			      "-L $prefix/lib -L $at/lib\""
  			 echo
  			 echo "#undef  LINK_OS_EXTRA_SPEC64"
  			 echo "#define LINK_OS_EXTRA_SPEC64" \
  			      "\"%(link_os_new_dtags)" \
! 			      "-rpath $prefix/lib64 -rpath $at/lib64" \
! 			      "-L $prefix/lib64 -L $at/lib64\""
  			 echo
  			 echo "#undef  LINK_OS_NEW_DTAGS_SPEC"
  			 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
--- 4463,4474 ----
  			 echo "#undef  LINK_OS_EXTRA_SPEC32"
  			 echo "#define LINK_OS_EXTRA_SPEC32" \
  			      "\"%(link_os_new_dtags)" \
! 			      "-rpath $prefix/lib -rpath $at/lib\""
  			 echo
  			 echo "#undef  LINK_OS_EXTRA_SPEC64"
  			 echo "#define LINK_OS_EXTRA_SPEC64" \
  			      "\"%(link_os_new_dtags)" \
! 			      "-rpath $prefix/lib64 -rpath $at/lib64\""
  			 echo
  			 echo "#undef  LINK_OS_NEW_DTAGS_SPEC"
  			 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
*************** case "${target}" in
*** 4467,4473 ****
  			 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
  			 echo
  			 echo "#undef  MD_STARTFILE_PREFIX"
! 			 echo "#define MD_STARTFILE_PREFIX \"$at/lib/\"") \
  			    > advance-toolchain.h
  		    else
  			echo "Unknown advance-toolchain $with_advance_toolchain"
--- 4481,4490 ----
  			 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
  			 echo
  			 echo "#undef  MD_STARTFILE_PREFIX"
! 			 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
! 			 echo
! 			 echo "#undef  MD_STARTFILE_PREFIX_1"
! 			 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
  			    > advance-toolchain.h
  		    else
  			echo "Unknown advance-toolchain $with_advance_toolchain"
*************** case ${target} in
*** 4676,4682 ****
  		;;
  	i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
  		;;
! 	i[34567]86-*-freebsd* | x86_64-*-freebsd*)
  		;;
  	ia64*-*-linux*)
  		;;
--- 4693,4702 ----
  		;;
  	i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
  		;;
! 	i[34567]86-*-freebsd*)
! 		;;
! 	x86_64-*-freebsd*)
! 		tmake_file="${tmake_file} i386/t-freebsd64"
  		;;
  	ia64*-*-linux*)
  		;;
diff -Nrcpad gcc-8.3.0/gcc/configure gcc-8.4.0/gcc/configure
*** gcc-8.3.0/gcc/configure	Wed Apr 18 09:46:58 2018
--- gcc-8.4.0/gcc/configure	Wed Mar  4 08:32:12 2020
*************** build_exeext
*** 666,671 ****
--- 666,672 ----
  all_selected_languages
  all_languages
  all_lang_makefrags
+ all_lang_configurefrags
  all_gtfiles
  all_compilers
  srcdir
*************** else
*** 18448,18454 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 18451 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 18449,18455 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 18452 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** else
*** 18554,18560 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 18557 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 18555,18561 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 18558 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** if test $in_tree_ld != yes ; then
*** 22784,22790 ****
        ld_vers=`echo $ld_ver | sed -n \
  	  -e 's,^.*[	 ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
      fi
!     ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
      ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
      ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
      ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
--- 22785,22791 ----
        ld_vers=`echo $ld_ver | sed -n \
  	  -e 's,^.*[	 ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
      fi
!     ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)\(-*\)\([01][0-9]\)\2\([0-3][0-9]\).*$,\1\3\4,p'`
      ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
      ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
      ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
*************** if test $in_tree_ld != yes ; then
*** 22799,22815 ****
  	#
  	# ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10
  	#
- 	# In Solaris 11.4, this was changed to
- 	#
- 	# ld: Solaris ELF Utilities: 11.4-1.3123
- 	#
  	# ld and ld.so.1 are guaranteed to be updated in lockstep, so ld version
  	# numbers can be used in ld.so.1 feature checks even if a different
  	# linker is configured.
  	ld_ver=`$gcc_cv_ld -V 2>&1`
! 	if echo "$ld_ver" | $EGREP 'Solaris Link Editors|Solaris ELF Utilities' > /dev/null; then
  	  ld_vers=`echo $ld_ver | sed -n \
! 	    -e 's,^.*: \(5\|1[0-9]\)\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\2,p'`
  	  ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
  	  ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
  	fi
--- 22800,22812 ----
  	#
  	# ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10
  	#
  	# ld and ld.so.1 are guaranteed to be updated in lockstep, so ld version
  	# numbers can be used in ld.so.1 feature checks even if a different
  	# linker is configured.
  	ld_ver=`$gcc_cv_ld -V 2>&1`
! 	if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
  	  ld_vers=`echo $ld_ver | sed -n \
! 	    -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
  	  ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
  	  ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
  	fi
*************** lang_tree_files=
*** 29516,29522 ****
  all_languages=
  all_compilers=
  all_outputs='Makefile'
! # List of language makefile fragments.
  all_lang_makefrags=
  # Additional files for gengtype
  all_gtfiles="$target_gtfiles"
--- 29513,29520 ----
  all_languages=
  all_compilers=
  all_outputs='Makefile'
! # List of language configure and makefile fragments.
! all_lang_configurefrags=
  all_lang_makefrags=
  # Additional files for gengtype
  all_gtfiles="$target_gtfiles"
*************** do
*** 29602,29607 ****
--- 29600,29606 ----
  	esac
  	$ok || continue
  
+ 	all_lang_configurefrags="$all_lang_configurefrags \$(srcdir)/$gcc_subdir/config-lang.in"
  	all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
  	if test -f $srcdir/$gcc_subdir/lang.opt; then
  	    lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
*************** fi
*** 29705,29710 ****
--- 29704,29710 ----
  
  
  
+ 
  
  
  
diff -Nrcpad gcc-8.3.0/gcc/configure.ac gcc-8.4.0/gcc/configure.ac
*** gcc-8.3.0/gcc/configure.ac	Wed Apr 18 09:46:58 2018
--- gcc-8.4.0/gcc/configure.ac	Wed Mar  4 08:30:00 2020
*************** if test $in_tree_ld != yes ; then
*** 2580,2586 ****
        ld_vers=`echo $ld_ver | sed -n \
  	  -e 's,^.*[	 ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
      fi
!     ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
      ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
      ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
      ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
--- 2580,2586 ----
        ld_vers=`echo $ld_ver | sed -n \
  	  -e 's,^.*[	 ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
      fi
!     ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)\(-*\)\([01][0-9]\)\2\([0-3][0-9]\).*$,\1\3\4,p'`
      ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
      ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
      ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
*************** if test $in_tree_ld != yes ; then
*** 2595,2611 ****
  	#
  	# ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10
  	#
- 	# In Solaris 11.4, this was changed to
- 	#
- 	# ld: Solaris ELF Utilities: 11.4-1.3123
- 	#
  	# ld and ld.so.1 are guaranteed to be updated in lockstep, so ld version
  	# numbers can be used in ld.so.1 feature checks even if a different
  	# linker is configured.
  	ld_ver=`$gcc_cv_ld -V 2>&1`
! 	if echo "$ld_ver" | $EGREP 'Solaris Link Editors|Solaris ELF Utilities' > /dev/null; then
  	  ld_vers=`echo $ld_ver | sed -n \
! 	    -e 's,^.*: \(5\|1[0-9]\)\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\2,p'`
  	  ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
  	  ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
  	fi
--- 2595,2607 ----
  	#
  	# ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10
  	#
  	# ld and ld.so.1 are guaranteed to be updated in lockstep, so ld version
  	# numbers can be used in ld.so.1 feature checks even if a different
  	# linker is configured.
  	ld_ver=`$gcc_cv_ld -V 2>&1`
! 	if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
  	  ld_vers=`echo $ld_ver | sed -n \
! 	    -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
  	  ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
  	  ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
  	fi
*************** lang_tree_files=
*** 6143,6149 ****
  all_languages=
  all_compilers=
  all_outputs='Makefile'
! # List of language makefile fragments.
  all_lang_makefrags=
  # Additional files for gengtype
  all_gtfiles="$target_gtfiles"
--- 6139,6146 ----
  all_languages=
  all_compilers=
  all_outputs='Makefile'
! # List of language configure and makefile fragments.
! all_lang_configurefrags=
  all_lang_makefrags=
  # Additional files for gengtype
  all_gtfiles="$target_gtfiles"
*************** changequote([,])dnl
*** 6231,6236 ****
--- 6228,6234 ----
  	esac
  	$ok || continue
  
+ 	all_lang_configurefrags="$all_lang_configurefrags \$(srcdir)/$gcc_subdir/config-lang.in"
  	all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
  	if test -f $srcdir/$gcc_subdir/lang.opt; then
  	    lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
*************** AC_SUBST(subdirs)
*** 6332,6337 ****
--- 6330,6336 ----
  AC_SUBST(srcdir)
  AC_SUBST(all_compilers)
  AC_SUBST(all_gtfiles)
+ AC_SUBST(all_lang_configurefrags)
  AC_SUBST(all_lang_makefrags)
  AC_SUBST(all_languages)
  AC_SUBST(all_selected_languages)
diff -Nrcpad gcc-8.3.0/gcc/convert.c gcc-8.4.0/gcc/convert.c
*** gcc-8.3.0/gcc/convert.c	Mon Apr 16 08:31:23 2018
--- gcc-8.4.0/gcc/convert.c	Wed Mar  4 08:30:00 2020
*************** convert_to_real_1 (tree type, tree expr,
*** 193,204 ****
  	  CASE_MATHFN (FABS)
  	  CASE_MATHFN (LOGB)
  #undef CASE_MATHFN
  	    {
  	      tree arg0 = strip_float_extensions (CALL_EXPR_ARG (expr, 0));
  	      tree newtype = type;
  
! 	      /* We have (outertype)sqrt((innertype)x).  Choose the wider mode from
! 		 the both as the safe type for operation.  */
  	      if (TYPE_PRECISION (TREE_TYPE (arg0)) > TYPE_PRECISION (type))
  		newtype = TREE_TYPE (arg0);
  
--- 193,207 ----
  	  CASE_MATHFN (FABS)
  	  CASE_MATHFN (LOGB)
  #undef CASE_MATHFN
+ 	    if (call_expr_nargs (expr) != 1
+ 		|| !SCALAR_FLOAT_TYPE_P (TREE_TYPE (CALL_EXPR_ARG (expr, 0))))
+ 	      break;
  	    {
  	      tree arg0 = strip_float_extensions (CALL_EXPR_ARG (expr, 0));
  	      tree newtype = type;
  
! 	      /* We have (outertype)sqrt((innertype)x).  Choose the wider mode
! 		 from the both as the safe type for operation.  */
  	      if (TYPE_PRECISION (TREE_TYPE (arg0)) > TYPE_PRECISION (type))
  		newtype = TREE_TYPE (arg0);
  
*************** convert_to_integer_1 (tree type, tree ex
*** 592,598 ****
  	CASE_FLT_FN (BUILT_IN_ROUND):
  	CASE_FLT_FN_FLOATN_NX (BUILT_IN_ROUND):
  	  /* Only convert in ISO C99 mode and with -fno-math-errno.  */
! 	  if (!targetm.libc_has_function (function_c99_misc) || flag_errno_math)
  	    break;
  	  if (outprec < TYPE_PRECISION (integer_type_node)
  	      || (outprec == TYPE_PRECISION (integer_type_node)
--- 595,602 ----
  	CASE_FLT_FN (BUILT_IN_ROUND):
  	CASE_FLT_FN_FLOATN_NX (BUILT_IN_ROUND):
  	  /* Only convert in ISO C99 mode and with -fno-math-errno.  */
! 	  if (!targetm.libc_has_function (function_c99_misc)
! 	      || flag_errno_math)
  	    break;
  	  if (outprec < TYPE_PRECISION (integer_type_node)
  	      || (outprec == TYPE_PRECISION (integer_type_node)
*************** convert_to_integer_1 (tree type, tree ex
*** 615,621 ****
  	CASE_FLT_FN (BUILT_IN_RINT):
  	CASE_FLT_FN_FLOATN_NX (BUILT_IN_RINT):
  	  /* Only convert in ISO C99 mode and with -fno-math-errno.  */
! 	  if (!targetm.libc_has_function (function_c99_misc) || flag_errno_math)
  	    break;
  	  if (outprec < TYPE_PRECISION (integer_type_node)
  	      || (outprec == TYPE_PRECISION (integer_type_node)
--- 619,626 ----
  	CASE_FLT_FN (BUILT_IN_RINT):
  	CASE_FLT_FN_FLOATN_NX (BUILT_IN_RINT):
  	  /* Only convert in ISO C99 mode and with -fno-math-errno.  */
! 	  if (!targetm.libc_has_function (function_c99_misc)
! 	      || flag_errno_math)
  	    break;
  	  if (outprec < TYPE_PRECISION (integer_type_node)
  	      || (outprec == TYPE_PRECISION (integer_type_node)
*************** convert_to_integer_1 (tree type, tree ex
*** 631,644 ****
  
  	CASE_FLT_FN (BUILT_IN_TRUNC):
  	CASE_FLT_FN_FLOATN_NX (BUILT_IN_TRUNC):
! 	  return convert_to_integer_1 (type, CALL_EXPR_ARG (s_expr, 0), dofold);
  
  	default:
  	  break;
  	}
  
!       if (fn)
!         {
  	  tree newexpr = build_call_expr (fn, 1, CALL_EXPR_ARG (s_expr, 0));
  	  return convert_to_integer_1 (type, newexpr, dofold);
  	}
--- 636,655 ----
  
  	CASE_FLT_FN (BUILT_IN_TRUNC):
  	CASE_FLT_FN_FLOATN_NX (BUILT_IN_TRUNC):
! 	  if (call_expr_nargs (s_expr) != 1
! 	      || !SCALAR_FLOAT_TYPE_P (TREE_TYPE (CALL_EXPR_ARG (s_expr, 0))))
! 	    break;
! 	  return convert_to_integer_1 (type, CALL_EXPR_ARG (s_expr, 0),
! 				       dofold);
  
  	default:
  	  break;
  	}
  
!       if (fn
! 	  && call_expr_nargs (s_expr) == 1
! 	  && SCALAR_FLOAT_TYPE_P (TREE_TYPE (CALL_EXPR_ARG (s_expr, 0))))
! 	{
  	  tree newexpr = build_call_expr (fn, 1, CALL_EXPR_ARG (s_expr, 0));
  	  return convert_to_integer_1 (type, newexpr, dofold);
  	}
*************** convert_to_integer_1 (tree type, tree ex
*** 668,674 ****
  	  break;
  	}
  
!       if (fn)
          {
  	  tree newexpr = build_call_expr (fn, 1, CALL_EXPR_ARG (s_expr, 0));
  	  return convert_to_integer_1 (type, newexpr, dofold);
--- 679,687 ----
  	  break;
  	}
  
!       if (fn
! 	  && call_expr_nargs (s_expr) == 1
! 	  && SCALAR_FLOAT_TYPE_P (TREE_TYPE (CALL_EXPR_ARG (s_expr, 0))))
          {
  	  tree newexpr = build_call_expr (fn, 1, CALL_EXPR_ARG (s_expr, 0));
  	  return convert_to_integer_1 (type, newexpr, dofold);
diff -Nrcpad gcc-8.3.0/gcc/cp/ChangeLog gcc-8.4.0/gcc/cp/ChangeLog
*** gcc-8.3.0/gcc/cp/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/cp/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,512 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2020-02-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/93905
+ 	Backported from mainline
+ 	2018-11-04  Jason Merrill  <jason@redhat.com>
+ 
+ 	* constexpr.c (cxx_eval_outermost_constant_expr): Don't wrap a
+ 	CONSTRUCTOR if one was passed in.
+ 
+ 2020-02-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/90998 - ICE with copy elision in init by ctor and -Wconversion.
+ 	* call.c (joust): Don't attempt to warn if ->second_conv is null.
+ 
+ 2020-02-26  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/86521 - C++17 copy elision in initialization by constructor.
+ 	* call.c (joust_maybe_elide_copy): New.
+ 	(joust): Call it.
+ 
+ 2020-02-26  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/90546
+ 	* call.c (build_user_type_conversion_1): Allow a template conversion
+ 	returning an rvalue reference to bind directly to an lvalue.
+ 
+ 2020-02-26  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/86521 - wrong overload resolution with ref-qualifiers.
+ 	* call.c (build_user_type_conversion_1): Don't use a conversion to a
+ 	reference of the wrong rvalueness for direct binding.
+ 
+ 2020-02-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/89831 - error with qualified-id in const member function.
+ 	* semantics.c (finish_non_static_data_member): Use object cv-quals
+ 	in scoped case, too.
+ 
+ 2020-02-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/88380 - wrong-code with flexible array and NSDMI.
+ 	* typeck2.c (process_init_constructor_record): Skip flexarrays.
+ 
+ 2020-02-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/87685 - generic lambda 'this' capture error.
+ 	* lambda.c (lambda_expr_this_capture): Change add_capture_p to int.
+ 	(maybe_generic_this_capture): Pass -1.
+ 
+ 2020-02-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/87554 - ICE with extern template and reference member.
+ 	* decl.c (cp_finish_decl): Don't set DECL_INITIAL of external vars.
+ 
+ 2020-02-25  Alexandre Oliva <aoliva@redhat.com>
+ 
+ 	PR c++/86747
+ 	* pt.c (tsubst_friend_class): Enter tsubsted class context.
+ 
+ 2020-02-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/86429 - constexpr variable in lambda.
+ 	PR c++/82643
+ 	PR c++/87327
+ 	* constexpr.c (cxx_eval_constant_expression): In a lambda function,
+ 	try evaluating the captured variable directly.
+ 
+ 2020-02-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	* cp-tree.h (TYPE_REF_P): New.
+ 
+ 2020-02-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/87748 - substitution failure error with decltype.
+ 	* pt.c (most_specialized_partial_spec): Clear
+ 	processing_template_decl.
+ 
+ 2020-02-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/87480 - decltype of member access in default template arg
+ 	* pt.c (type_unification_real): Accept a dependent result in
+ 	template context.
+ 
+ 2020-02-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/88394 - ICE with VLA init-capture.
+ 	* lambda.c (is_normal_capture_proxy): Check DECL_CAPTURED_VARIABLE.
+ 
+ 2019-02-05  Alexandre Oliva <aoliva@redhat.com>
+ 
+ 	PR c++/87770
+ 	* pt.c (instantiates_primary_template_p): New.
+ 	(type_dependent_expression_p): Use it.
+ 
+ 2020-02-25  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/92745 - bogus error when initializing array of vectors.
+ 	* decl.c (reshape_init_r): For a nested compound literal, do
+ 	call reshape_init_{class,array,vector}.
+ 
+ 2020-02-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/89917 - ICE with lambda in variadic mem-init.
+ 	* pt.c (make_pack_expansion): Change type_pack_expansion_p to false.
+ 
+ 2020-02-24  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/90951
+ 	* constexpr.c (cxx_eval_array_reference): {}-initialize missing
+ 	elements instead of value-initializing them.
+ 
+ 2020-02-24  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/93140
+ 	* pt.c (tsubst_decl) [PARM_DECL]: Check cp_unevaluated_operand in
+ 	handling of TREE_CHAIN for empty pack.
+ 
+ 2020-02-24  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/92852
+ 	* constexpr.c (maybe_constant_value): Don't unshare if the cached
+ 	value is the same as the argument.
+ 
+ 2020-02-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/61414
+ 	* class.c (enum_min_precision): Change prec type from int to int &.
+ 
+ 2020-02-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2020-01-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/93228
+ 	* parser.c (cp_parser_template_name): Look up deprecated attribute
+ 	in DECL_TEMPLATE_RESULT or its type's attributes.
+ 
+ 	2019-12-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/92438
+ 	* parser.c (cp_parser_constructor_declarator_p): If open paren
+ 	is followed by RID_ATTRIBUTE, skip over the attribute tokens and
+ 	try to parse type specifier.
+ 
+ 	2019-12-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/92992
+ 	* call.c (convert_arg_to_ellipsis): For decltype(nullptr) arguments
+ 	that have side-effects use cp_build_compound_expr.
+ 
+ 	2019-12-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/92732
+ 	* typeck2.c (digest_nsdmi_init): For bitfields, use
+ 	DECL_BIT_FIELD_TYPE instead of TREE_TYPE.
+ 
+ 	2019-11-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/60228
+ 	* parser.c (cp_parser_omp_declare_reduction_exprs): If
+ 	processing_template_decl, wrap the combiner or initializer
+ 	into EXPR_STMT.
+ 	* decl.c (start_preparsed_function): Don't start a lambda scope
+ 	for DECL_OMP_DECLARE_REDUCTION_P functions.
+ 	(finish_function): Don't finish a lambda scope for
+ 	DECL_OMP_DECLARE_REDUCTION_P functions, nor cp_fold_function
+ 	them nor cp_genericize them.
+ 	* mangle.c (decl_mangling_context): Look through
+ 	DECL_OMP_DECLARE_REDUCTION_P functions.
+ 	* semantics.c (expand_or_defer_fn_1): For DECL_OMP_DECLARE_REDUCTION_P
+ 	functions, use tentative linkage, don't keep their bodies with
+ 	-fkeep-inline-functions and return false at the end.
+ 
+ 	2019-11-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/92524
+ 	* tree.c (replace_placeholders_r): Don't walk constructor elts with
+ 	RANGE_EXPR indexes.
+ 
+ 	2019-11-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/92648
+ 	* parser.c (cp_parser_std_attribute): For unknown attributes,
+ 	skip balanced token seq instead of trying to parse
+ 	attribute-argument-clause as expression list.
+ 
+ 	PR c++/61414
+ 	* class.c (enum_to_min_precision): New hash_map.
+ 	(enum_min_precision): New function.
+ 	(check_bitfield_decl): Use it.
+ 
+ 	2019-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 		    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/90842
+ 	* parser.c (cp_parser_decl_specifier_seq): For concept or typedef
+ 	break early if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.
+ 	For type specifiers, set CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS
+ 	if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR is set.
+ 
+ 2020-01-27  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR c++/91826
+ 	* name-lookup.c (is_ancestor): Allow CHILD to be a namespace alias.
+ 
+ 2020-01-24  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/92852 - ICE with generic lambda and reference var.
+ 	* constexpr.c (maybe_constant_value): Likewise.
+ 
+ 2019-12-11  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/92859 - ADL and bit-field.
+ 	* name-lookup.c: Use unlowered_expr_type.
+ 
+ 2019-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-10-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/85887
+ 	* decl.c (expand_static_init): Drop ECF_LEAF from __cxa_guard_acquire
+ 	and __cxa_guard_release.
+ 
+ 	2019-10-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/92201
+ 	* cp-gimplify.c (cp_gimplify_expr): If gimplify_to_rvalue changes the
+ 	function pointer type, re-add cast to the original one.
+ 
+ 	2019-10-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/91974
+ 	* cp-gimplify.c (cp_gimplify_expr) <case CALL_EXPR>: For
+ 	-fstrong-eval-order ensure CALL_EXPR_FN side-effects are evaluated
+ 	before any arguments.  Additionally, ensure CALL_EXPR_FN that isn't
+ 	invariant nor OBJ_TYPE_REF nor SSA_NAME is forced into a temporary.
+ 
+ 	2019-08-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/91401
+ 	* parser.c (cp_parser_omp_clause_dist_schedule): Comment out the
+ 	check_no_duplicate_clause call, instead emit a warning for duplicate
+ 	dist_schedule clauses.
+ 
+ 2019-11-05  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/88075
+ 	* parser.c (cp_parser_decl_specifier_seq): Support C++20
+ 	concept-definition syntax without 'bool'.
+ 
+ 2019-10-22  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-10-21  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/92106 - ICE with structured bindings and -Wreturn-local-addr.
+ 	* typeck.c (maybe_warn_about_returning_address_of_local): Avoid
+ 	recursing on null initializer and return false instead.
+ 
+ 2019-09-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from mainline
+ 	2019-08-23  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR pch/61250
+ 	* parser.c (cp_parser_initial_pragma): Call c_common_no_more_pch ()
+ 	after determining that the first token is not
+ 	PRAGMA_GCC_PCH_PREPROCESS.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-02-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/89392
+ 	* vtable-class-hierarchy.c (vtv_generate_init_routine): Do not
+ 	make symtab process new functions here.
+ 
+ 2019-08-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-06-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/90950
+ 	* semantics.c (finish_omp_clauses): Don't reject references to
+ 	incomplete types if processing_template_decl.
+ 
+ 	2019-05-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/90197
+ 	* cp-gimplify.c (genericize_cp_loop): Emit a DEBUG_BEGIN_STMT
+ 	before the condition (or if missing or constant non-zero at the end
+ 	of the loop.  Emit a DEBUG_BEGIN_STMT before the increment expression
+ 	if any.  Don't call protected_set_expr_location on incr if it already
+ 	has a location.
+ 
+ 	2019-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR pch/90326
+ 	* config-lang.in (gtfiles): Remove c-family/c-lex.c, add
+ 	c-family/c-cppbuiltin.c.
+ 
+ 2019-08-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline.
+ 	2019-08-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/91436
+ 	* name-lookup.c (get_std_name_hint): Fix min_dialect field for
+ 	complex_literals and make_unique entries.
+ 
+ 2019-08-01  Marek Polacek  <polacek@redhat.com>	
+ 
+ 	Backported from mainline
+ 	2018-06-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/86098 - ICE with template placeholder for TTP.
+ 	* typeck.c (structural_comptypes) [TEMPLATE_TYPE_PARM]: Check
+ 	CLASS_PLACEHOLDER_TEMPLATE.
+ 
+ 2019-06-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/90810
+ 	* init.c (constant_value_1): Handle VECTOR_CST DECL_INITIAL for
+ 	!DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P decls like CONSTRUCTOR.
+ 
+ 2019-05-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	Backport from mainline
+ 	2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR c++/85400
+ 	* decl2.c (adjust_var_decl_tls_model): New static function.
+ 	(comdat_linkage): Call it on a variable.
+ 	(maybe_make_one_only): Likewise.
+ 
+ 2019-05-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-05-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/90532 Ensure __is_constructible(T[]) is false
+ 	* method.c (is_xible_helper): Return error_mark_node for construction
+ 	of an array of unknown bound.
+ 
+ 2019-05-07  Marek Polacek  <polacek@redhat.com>	
+ 
+ 	Backported from mainline
+ 	2019-02-27  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/88857 - ICE with value-initialization of argument in template.
+ 	* call.c (convert_like_real): Don't call build_value_init in template.
+ 
+ 	2019-03-25  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/89214 - ICE when initializing aggregates with bases.
+ 	* typeck2.c (digest_init_r): Warn about object slicing instead of
+ 	crashing.
+ 
+ 	2019-02-27  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/89511 - ICE with using-declaration and unscoped enumerator.
+ 	* parser.c (cp_parser_using_declaration): For an unscoped enum
+ 	only use its context if it's not a function declaration.
+ 
+ 	2019-03-25  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/89705 - ICE with reference binding with conversion function.
+ 	* call.c (reference_binding): If the result of the conversion function
+ 	is a prvalue of non-class type, use the cv-unqualified type.
+ 
+ 	2019-03-29  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/89876 - ICE with deprecated conversion.
+ 	* call.c (convert_like_real): Only give warnings with tf_warning.
+ 
+ 2019-04-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-04-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/90108
+ 	* decl.c (duplicate_decls): If remove is main variant and
+ 	DECL_ORIGINAL_TYPE is some other type, remove a DECL_ORIGINAL_TYPE
+ 	variant that has newdecl as TYPE_NAME if any.
+ 
+ 	2019-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/89933
+ 	* decl.c (duplicate_decls): When newdecl's type is its main variant,
+ 	don't try to remove it from the variant list, but instead assert
+ 	it has no variants.
+ 
+ 	2019-03-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/89869
+ 	* typeck.c: Include gimplify.h.
+ 	(cp_build_modify_expr) <case COND_EXPR>: Unshare rhs before using it
+ 	for second time.  Formatting fixes.
+ 
+ 	2019-03-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/89796
+ 	* semantics.c (finish_omp_atomic): Add warning_sentinel for
+ 	-Wunused-value around finish_expr_stmt call.
+ 
+ 	2019-03-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/60702
+ 	* cp-tree.h (get_tls_wrapper_fn): Remove declaration.
+ 	(maybe_get_tls_wrapper_call): Declare.
+ 	* decl2.c (get_tls_wrapper_fn): Make static.
+ 	(maybe_get_tls_wrapper_call): New function.
+ 	* typeck.c (build_class_member_access_expr): Handle accesses to TLS
+ 	variables.
+ 	* semantics.c (finish_qualified_id_expr): Likewise.
+ 	(finish_id_expression_1): Use maybe_get_tls_wrapper_call.
+ 	* pt.c (tsubst_copy_and_build): Likewise.
+ 
+ 	2019-03-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/89767
+ 	* parser.c (cp_parser_lambda_introducer): Add ids and first_capture_id
+ 	variables, check for duplicates in this function.
+ 	* lambda.c (add_capture): Don't check for duplicates nor use
+ 	IDENTIFIER_MARKED.
+ 	(register_capture_members): Don't clear IDENTIFIER_MARKED here.
+ 
+ 	2019-03-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/89512
+ 	* semantics.c (finish_qualified_id_expr): Reject variable templates.
+ 
+ 	2019-03-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/87148
+ 	* init.c (build_value_init_noctor): Ignore flexible array members.
+ 
+ 	2019-02-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/89403
+ 	* decl2.c (c_parse_final_cleanups): Move TREE_ASM_WRITTEN setting
+ 	for flag_syntax_only from here...
+ 	* semantics.c (expand_or_defer_fn_1): ... here.
+ 
+ 	PR c++/89405
+ 	* decl.c (maybe_commonize_var): When clearing TREE_PUBLIC and
+ 	DECL_COMMON, set DECL_INTERFACE_KNOWN.
+ 
+ 2019-03-08  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/88820 - ICE with CTAD and member template used in DMI.
+ 	* pt.c (do_class_deduction): Handle parm used as its own arg.
+ 
+ 	PR c++/88869 - C++17 ICE with CTAD and explicit specialization.
+ 	* pt.c (do_class_deduction): Don't include explicit specialization
+ 	args in outer_args.
+ 
+ 	PR c++/88419 - C++17 ICE with class template arg deduction.
+ 	* pt.c (make_template_placeholder): Set TYPE_CANONICAL after
+ 	CLASS_PLACEHOLDER_TEMPLATE.
+ 
+ 	PR c++/88690 - C++17 ICE with empty base in aggregate.
+ 	* typeck2.c (process_init_constructor_record): Skip trivial
+ 	initialization of an empty base.
+ 
+ 	PR c++/87921 - wrong error with inline static data member.
+ 	* decl2.c (c_parse_final_cleanups): Don't force out uninstantiated
+ 	inline static data members.
+ 
+ 	PR c++/89381 - implicit copy and using-declaration.
+ 	* class.c (classtype_has_move_assign_or_move_ctor_p): Don't consider
+ 	op= brought in by a using-declaration.
+ 
+ 	PR c++/89576 - if constexpr of lambda capture.
+ 	* semantics.c (maybe_convert_cond): Do convert a non-dependent
+ 	condition in a template.
+ 	* typeck.c (condition_conversion): Handle being called in a
+ 	template.
+ 
+ 	PR c++/89422 - ICE with -g and lambda in default arg in template.
+ 	* pt.c (tsubst_function_decl): SET_DECL_FRIEND_CONTEXT sooner.
+ 
+ 	PR c++/87513 - 'sorry' mangling PMF template-id.
+ 	* mangle.c (write_expression): Handle SCOPE_REF to BASELINK.
+ 
+ 	PR c++/88183 - ICE with .* fold-expression.
+ 	* pt.c (fold_expression) [DOTSTAR_EXPR]: Remove special handling.
+ 
+ 2019-03-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/89585
+ 	* parser.c (cp_parser_asm_definition): Parse asm qualifiers even
+ 	at toplevel, but diagnose them.
+ 
+ 2019-02-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-02-11  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/89212 - ICE converting nullptr to pointer-to-member-function.
+ 	* pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Return early for
+ 	null member pointer value.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/gcc/cp/call.c gcc-8.4.0/gcc/cp/call.c
*** gcc-8.3.0/gcc/cp/call.c	Wed Feb  6 15:36:20 2019
--- gcc-8.4.0/gcc/cp/call.c	Wed Mar  4 08:30:00 2020
*************** reference_binding (tree rto, tree rfrom,
*** 1767,1772 ****
--- 1767,1775 ----
  	    && DECL_CONV_FN_P (t->cand->fn))
  	  {
  	    tree ftype = TREE_TYPE (TREE_TYPE (t->cand->fn));
+ 	    /* A prvalue of non-class type is cv-unqualified.  */
+ 	    if (TREE_CODE (ftype) != REFERENCE_TYPE && !CLASS_TYPE_P (ftype))
+ 	      ftype = cv_unqualified (ftype);
  	    int sflags = (flags|LOOKUP_NO_CONVERSION)&~LOOKUP_NO_TEMP_BIND;
  	    conversion *new_second
  	      = reference_binding (rto, ftype, NULL_TREE, c_cast_p,
*************** build_user_type_conversion_1 (tree totyp
*** 3892,3897 ****
--- 3895,3910 ----
  	      cand->reason = arg_conversion_rejection (NULL_TREE, -2,
  						       rettype, totype);
  	    }
+ 	  else if (TYPE_REF_P (totype) && !ics->rvaluedness_matches_p
+ 		   /* Limit this to non-templates for now (PR90546).  */
+ 		   && !cand->template_decl
+ 		   && TREE_CODE (TREE_TYPE (totype)) != FUNCTION_TYPE)
+ 	    {
+ 	      /* If we are called to convert to a reference type, we are trying
+ 		 to find a direct binding per [over.match.ref], so rvaluedness
+ 		 must match for non-functions.  */
+ 	      cand->viable = 0;
+ 	    }
  	  else if (DECL_NONCONVERTING_P (cand->fn)
  		   && ics->rank > cr_exact)
  	    {
*************** convert_like_real (conversion *convs, tr
*** 6775,6781 ****
  	/* If we're initializing from {}, it's value-initialization.  */
  	if (BRACE_ENCLOSED_INITIALIZER_P (expr)
  	    && CONSTRUCTOR_NELTS (expr) == 0
! 	    && TYPE_HAS_DEFAULT_CONSTRUCTOR (totype))
  	  {
  	    bool direct = CONSTRUCTOR_IS_DIRECT_INIT (expr);
  	    if (abstract_virtuals_error_sfinae (NULL_TREE, totype, complain))
--- 6788,6795 ----
  	/* If we're initializing from {}, it's value-initialization.  */
  	if (BRACE_ENCLOSED_INITIALIZER_P (expr)
  	    && CONSTRUCTOR_NELTS (expr) == 0
! 	    && TYPE_HAS_DEFAULT_CONSTRUCTOR (totype)
! 	    && !processing_template_decl)
  	  {
  	    bool direct = CONSTRUCTOR_IS_DIRECT_INIT (expr);
  	    if (abstract_virtuals_error_sfinae (NULL_TREE, totype, complain))
*************** convert_like_real (conversion *convs, tr
*** 7110,7116 ****
  
      case ck_qual:
        /* Warn about deprecated conversion if appropriate.  */
!       string_conv_p (totype, expr, 1);
        break;
  
      case ck_ptr:
--- 7124,7131 ----
  
      case ck_qual:
        /* Warn about deprecated conversion if appropriate.  */
!       if (complain & tf_warning)
! 	string_conv_p (totype, expr, 1);
        break;
  
      case ck_ptr:
*************** convert_arg_to_ellipsis (tree arg, tsubs
*** 7175,7181 ****
        arg = convert_to_real_nofold (double_type_node, arg);
      }
    else if (NULLPTR_TYPE_P (arg_type))
!     arg = null_pointer_node;
    else if (INTEGRAL_OR_ENUMERATION_TYPE_P (arg_type))
      {
        if (SCOPED_ENUM_P (arg_type))
--- 7190,7201 ----
        arg = convert_to_real_nofold (double_type_node, arg);
      }
    else if (NULLPTR_TYPE_P (arg_type))
!     {
!       if (TREE_SIDE_EFFECTS (arg))
! 	arg = cp_build_compound_expr (arg, null_pointer_node, complain);
!       else
! 	arg = null_pointer_node;
!     }
    else if (INTEGRAL_OR_ENUMERATION_TYPE_P (arg_type))
      {
        if (SCOPED_ENUM_P (arg_type))
*************** add_warning (struct z_candidate *winner,
*** 10037,10042 ****
--- 10057,10089 ----
    winner->warnings = cw;
  }
  
+ /* CAND is a constructor candidate in joust in C++17 and up.  If it copies a
+    prvalue returned from a conversion function, replace CAND with the candidate
+    for the conversion and return true.  Otherwise, return false.  */
+ 
+ static bool
+ joust_maybe_elide_copy (z_candidate *&cand)
+ {
+   tree fn = cand->fn;
+   if (!DECL_COPY_CONSTRUCTOR_P (fn) && !DECL_MOVE_CONSTRUCTOR_P (fn))
+     return false;
+   conversion *conv = cand->convs[0];
+   gcc_checking_assert (conv->kind == ck_ref_bind);
+   conv = next_conversion (conv);
+   if (conv->kind == ck_user && !TYPE_REF_P (conv->type))
+     {
+       gcc_checking_assert (same_type_ignoring_top_level_qualifiers_p
+ 			   (conv->type, DECL_CONTEXT (fn)));
+       z_candidate *uc = conv->cand;
+       if (DECL_CONV_FN_P (uc->fn))
+ 	{
+ 	  cand = uc;
+ 	  return true;
+ 	}
+     }
+   return false;
+ }
+ 
  /* Compare two candidates for overloading as described in
     [over.match.best].  Return values:
  
*************** joust (struct z_candidate *cand1, struct
*** 10117,10122 ****
--- 10164,10190 ----
  	}
      }
  
+   /* Handle C++17 copy elision in [over.match.ctor] (direct-init) context.  The
+      standard currently says that only constructors are candidates, but if one
+      copies a prvalue returned by a conversion function we want to treat the
+      conversion as the candidate instead.
+ 
+      Clang does something similar, as discussed at
+      http://lists.isocpp.org/core/2017/10/3166.php
+      http://lists.isocpp.org/core/2019/03/5721.php  */
+   int elided_tiebreaker = 0;
+   if (len == 1 && cxx_dialect >= cxx17
+       && DECL_P (cand1->fn)
+       && DECL_COMPLETE_CONSTRUCTOR_P (cand1->fn)
+       && !(cand1->flags & LOOKUP_ONLYCONVERTING))
+     {
+       bool elided1 = joust_maybe_elide_copy (cand1);
+       bool elided2 = joust_maybe_elide_copy (cand2);
+       /* As a tiebreaker below we will prefer a constructor to a conversion
+ 	 operator exposed this way.  */
+       elided_tiebreaker = elided2 - elided1;
+     }
+ 
    for (i = 0; i < len; ++i)
      {
        conversion *t1 = cand1->convs[i + off1];
*************** joust (struct z_candidate *cand1, struct
*** 10172,10178 ****
       either between a constructor and a conversion op, or between two
       conversion ops.  */
    if ((complain & tf_warning)
!       && winner && warn_conversion && cand1->second_conv
        && (!DECL_CONSTRUCTOR_P (cand1->fn) || !DECL_CONSTRUCTOR_P (cand2->fn))
        && winner != compare_ics (cand1->second_conv, cand2->second_conv))
      {
--- 10240,10248 ----
       either between a constructor and a conversion op, or between two
       conversion ops.  */
    if ((complain & tf_warning)
!       /* In C++17, the constructor might have been elided, which means that
! 	 an originally null ->second_conv could become non-null.  */
!       && winner && warn_conversion && cand1->second_conv && cand2->second_conv
        && (!DECL_CONSTRUCTOR_P (cand1->fn) || !DECL_CONSTRUCTOR_P (cand2->fn))
        && winner != compare_ics (cand1->second_conv, cand2->second_conv))
      {
*************** joust (struct z_candidate *cand1, struct
*** 10225,10230 ****
--- 10295,10305 ----
    if (winner)
      return winner;
  
+   /* Put this tiebreaker first, so that we don't try to look at second_conv of
+      a constructor candidate that doesn't have one.  */
+   if (elided_tiebreaker)
+     return elided_tiebreaker;
+ 
    /* DR 495 moved this tiebreaker above the template ones.  */
    /* or, if not that,
       the  context  is  an  initialization by user-defined conversion (see
diff -Nrcpad gcc-8.3.0/gcc/cp/class.c gcc-8.4.0/gcc/cp/class.c
*** gcc-8.3.0/gcc/cp/class.c	Thu Feb 14 23:17:51 2019
--- gcc-8.4.0/gcc/cp/class.c	Wed Mar  4 08:30:00 2020
*************** add_implicitly_declared_members (tree t,
*** 3195,3200 ****
--- 3195,3254 ----
      }
  }
  
+ /* Cache of enum_min_precision values.  */
+ static GTY((deletable)) hash_map<tree, int> *enum_to_min_precision;
+ 
+ /* Return the minimum precision of a bit-field needed to store all
+    enumerators of ENUMERAL_TYPE TYPE.  */
+ 
+ static int
+ enum_min_precision (tree type)
+ {
+   type = TYPE_MAIN_VARIANT (type);
+   /* For unscoped enums without fixed underlying type and without mode
+      attribute we can just use precision of the underlying type.  */
+   if (UNSCOPED_ENUM_P (type)
+       && !ENUM_FIXED_UNDERLYING_TYPE_P (type)
+       && !lookup_attribute ("mode", TYPE_ATTRIBUTES (type)))
+     return TYPE_PRECISION (ENUM_UNDERLYING_TYPE (type));
+ 
+   if (enum_to_min_precision == NULL)
+     enum_to_min_precision = hash_map<tree, int>::create_ggc (37);
+ 
+   bool existed;
+   int &prec = enum_to_min_precision->get_or_insert (type, &existed);
+   if (existed)
+     return prec;
+ 
+   tree minnode, maxnode;
+   if (TYPE_VALUES (type))
+     {
+       minnode = maxnode = NULL_TREE;
+       for (tree values = TYPE_VALUES (type);
+ 	   values; values = TREE_CHAIN (values))
+ 	{
+ 	  tree decl = TREE_VALUE (values);
+ 	  tree value = DECL_INITIAL (decl);
+ 	  if (value == error_mark_node)
+ 	    value = integer_zero_node;
+ 	  if (!minnode)
+ 	    minnode = maxnode = value;
+ 	  else if (tree_int_cst_lt (maxnode, value))
+ 	    maxnode = value;
+ 	  else if (tree_int_cst_lt (value, minnode))
+ 	    minnode = value;
+ 	}
+     }
+   else
+     minnode = maxnode = integer_zero_node;
+ 
+   signop sgn = tree_int_cst_sgn (minnode) >= 0 ? UNSIGNED : SIGNED;
+   int lowprec = tree_int_cst_min_precision (minnode, sgn);
+   int highprec = tree_int_cst_min_precision (maxnode, sgn);
+   prec = MAX (lowprec, highprec);
+   return prec;
+ }
+ 
  /* FIELD is a bit-field.  We are finishing the processing for its
     enclosing type.  Issue any appropriate messages and set appropriate
     flags.  Returns false if an error has been diagnosed.  */
*************** check_bitfield_decl (tree field)
*** 3255,3261 ****
  		    "width of %qD exceeds its type", field);
        else if (TREE_CODE (type) == ENUMERAL_TYPE)
  	{
! 	  int prec = TYPE_PRECISION (ENUM_UNDERLYING_TYPE (type));
  	  if (compare_tree_int (w, prec) < 0)
  	    warning_at (DECL_SOURCE_LOCATION (field), 0,
  			"%qD is too small to hold all values of %q#T",
--- 3309,3315 ----
  		    "width of %qD exceeds its type", field);
        else if (TREE_CODE (type) == ENUMERAL_TYPE)
  	{
! 	  int prec = enum_min_precision (type);
  	  if (compare_tree_int (w, prec) < 0)
  	    warning_at (DECL_SOURCE_LOCATION (field), 0,
  			"%qD is too small to hold all values of %q#T",
*************** classtype_has_move_assign_or_move_ctor_p
*** 5171,5177 ****
      for (ovl_iterator iter (get_class_binding_direct
  			    (t, assign_op_identifier));
  	 iter; ++iter)
!       if ((!user_p || !DECL_ARTIFICIAL (*iter)) && move_fn_p (*iter))
  	return true;
    
    return false;
--- 5225,5233 ----
      for (ovl_iterator iter (get_class_binding_direct
  			    (t, assign_op_identifier));
  	 iter; ++iter)
!       if ((!user_p || !DECL_ARTIFICIAL (*iter))
! 	  && DECL_CONTEXT (*iter) == t
! 	  && move_fn_p (*iter))
  	return true;
    
    return false;
diff -Nrcpad gcc-8.3.0/gcc/cp/config-lang.in gcc-8.4.0/gcc/cp/config-lang.in
*** gcc-8.3.0/gcc/cp/config-lang.in	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/cp/config-lang.in	Wed Mar  4 08:30:00 2020
*************** gtfiles="\
*** 37,43 ****
  \$(srcdir)/c-family/c-pragma.h \$(srcdir)/cp/decl.h \
  \$(srcdir)/cp/parser.h \
  \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-format.c \
! \$(srcdir)/c-family/c-lex.c \$(srcdir)/c-family/c-pragma.c \
  \$(srcdir)/cp/call.c \$(srcdir)/cp/class.c \$(srcdir)/cp/constexpr.c \
  \$(srcdir)/cp/cp-gimplify.c \
  \$(srcdir)/cp/cp-lang.c \$(srcdir)/cp/cp-objcp-common.c \
--- 37,43 ----
  \$(srcdir)/c-family/c-pragma.h \$(srcdir)/cp/decl.h \
  \$(srcdir)/cp/parser.h \
  \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-format.c \
! \$(srcdir)/c-family/c-cppbuiltin.c \$(srcdir)/c-family/c-pragma.c \
  \$(srcdir)/cp/call.c \$(srcdir)/cp/class.c \$(srcdir)/cp/constexpr.c \
  \$(srcdir)/cp/cp-gimplify.c \
  \$(srcdir)/cp/cp-lang.c \$(srcdir)/cp/cp-objcp-common.c \
diff -Nrcpad gcc-8.3.0/gcc/cp/constexpr.c gcc-8.4.0/gcc/cp/constexpr.c
*** gcc-8.3.0/gcc/cp/constexpr.c	Wed Feb  6 15:29:14 2019
--- gcc-8.4.0/gcc/cp/constexpr.c	Wed Mar  4 08:30:00 2020
*************** cxx_eval_array_reference (const constexp
*** 2486,2493 ****
      }
  
    /* If it's within the array bounds but doesn't have an explicit
!      initializer, it's value-initialized.  */
!   tree val = build_value_init (elem_type, tf_warning_or_error);
    return cxx_eval_constant_expression (ctx, val, lval, non_constant_p,
  				       overflow_p);
  }
--- 2486,2501 ----
      }
  
    /* If it's within the array bounds but doesn't have an explicit
!      initializer, it's initialized from {}.  But use build_value_init
!      directly for non-aggregates to avoid creating a garbage CONSTRUCTOR.  */
!   tree val;
!   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);
!     }
!   else
!     val = build_value_init (elem_type, tf_warning_or_error);
    return cxx_eval_constant_expression (ctx, val, lval, non_constant_p,
  				       overflow_p);
  }
*************** cxx_eval_constant_expression (const cons
*** 4155,4162 ****
  
      case VAR_DECL:
        if (DECL_HAS_VALUE_EXPR_P (t))
! 	return cxx_eval_constant_expression (ctx, DECL_VALUE_EXPR (t),
! 					     lval, non_constant_p, overflow_p);
        /* fall through */
      case CONST_DECL:
        /* We used to not check lval for CONST_DECL, but darwin.c uses
--- 4163,4191 ----
  
      case VAR_DECL:
        if (DECL_HAS_VALUE_EXPR_P (t))
! 	{
! 	  if (is_normal_capture_proxy (t)
! 	      && current_function_decl == DECL_CONTEXT (t))
! 	    {
! 	      /* Function parms aren't constexpr within the function
! 		 definition, so don't try to look at the closure.  But if the
! 		 captured variable is constant, try to evaluate it directly. */
! 	      r = DECL_CAPTURED_VARIABLE (t);
! 	      tree type = TREE_TYPE (t);
! 	      if (TYPE_REF_P (type) != TYPE_REF_P (TREE_TYPE (r)))
! 		{
! 		  /* Adjust r to match the reference-ness of t.  */
! 		  if (TYPE_REF_P (type))
! 		    r = build_address (r);
! 		  else
! 		    r = convert_from_reference (r);
! 		}
! 	    }
! 	  else
! 	    r = DECL_VALUE_EXPR (t);
! 	  return cxx_eval_constant_expression (ctx, r, lval, non_constant_p,
! 					       overflow_p);
! 	}
        /* fall through */
      case CONST_DECL:
        /* We used to not check lval for CONST_DECL, but darwin.c uses
*************** cxx_eval_outermost_constant_expr (tree t
*** 4969,4983 ****
        if (TREE_CODE (t) == TARGET_EXPR
  	  && TARGET_EXPR_INITIAL (t) == r)
  	return t;
!       else
  	{
  	  r = get_target_expr (r);
  	  TREE_CONSTANT (r) = true;
- 	  return r;
  	}
      }
!   else
!     return r;
  }
  
  /* Returns true if T is a valid subexpression of a constant expression,
--- 4998,5010 ----
        if (TREE_CODE (t) == TARGET_EXPR
  	  && TARGET_EXPR_INITIAL (t) == r)
  	return t;
!       else if (TREE_CODE (t) != CONSTRUCTOR)
  	{
  	  r = get_target_expr (r);
  	  TREE_CONSTANT (r) = true;
  	}
      }
!   return r;
  }
  
  /* Returns true if T is a valid subexpression of a constant expression,
*************** maybe_constant_value (tree t, tree decl)
*** 5107,5113 ****
    if (cv_cache == NULL)
      cv_cache = hash_map<tree, tree>::create_ggc (101);
    if (tree *cached = cv_cache->get (t))
!     return *cached;
  
    r = cxx_eval_outermost_constant_expr (t, true, true, decl);
    gcc_checking_assert (r == t
--- 5134,5148 ----
    if (cv_cache == NULL)
      cv_cache = hash_map<tree, tree>::create_ggc (101);
    if (tree *cached = cv_cache->get (t))
!     {
!       r = *cached;
!       if (r != t)
! 	{
! 	  r = unshare_expr_without_location (r);
! 	  protected_set_expr_location (r, EXPR_LOCATION (t));
! 	}
!       return r;
!     }
  
    r = cxx_eval_outermost_constant_expr (t, true, true, decl);
    gcc_checking_assert (r == t
diff -Nrcpad gcc-8.3.0/gcc/cp/cp-gimplify.c gcc-8.4.0/gcc/cp/cp-gimplify.c
*** gcc-8.3.0/gcc/cp/cp-gimplify.c	Tue Jan  8 10:22:44 2019
--- gcc-8.4.0/gcc/cp/cp-gimplify.c	Wed Mar  4 08:30:00 2020
*************** genericize_cp_loop (tree *stmt_p, locati
*** 202,218 ****
    tree blab, clab;
    tree exit = NULL;
    tree stmt_list = NULL;
  
    blab = begin_bc_block (bc_break, start_locus);
    clab = begin_bc_block (bc_continue, start_locus);
  
!   protected_set_expr_location (incr, start_locus);
  
    cp_walk_tree (&cond, cp_genericize_r, data, NULL);
    cp_walk_tree (&body, cp_genericize_r, data, NULL);
    cp_walk_tree (&incr, cp_genericize_r, data, NULL);
    *walk_subtrees = 0;
  
    if (cond && TREE_CODE (cond) != INTEGER_CST)
      {
        /* If COND is constant, don't bother building an exit.  If it's false,
--- 202,227 ----
    tree blab, clab;
    tree exit = NULL;
    tree stmt_list = NULL;
+   tree debug_begin = NULL;
  
    blab = begin_bc_block (bc_break, start_locus);
    clab = begin_bc_block (bc_continue, start_locus);
  
!   if (EXPR_LOCATION (incr) == UNKNOWN_LOCATION)
!     protected_set_expr_location (incr, start_locus);
  
    cp_walk_tree (&cond, cp_genericize_r, data, NULL);
    cp_walk_tree (&body, cp_genericize_r, data, NULL);
    cp_walk_tree (&incr, cp_genericize_r, data, NULL);
    *walk_subtrees = 0;
  
+   if (MAY_HAVE_DEBUG_MARKER_STMTS
+       && (!cond || !integer_zerop (cond)))
+     {
+       debug_begin = build0 (DEBUG_BEGIN_STMT, void_type_node);
+       SET_EXPR_LOCATION (debug_begin, EXPR_LOC_OR_LOC (cond, start_locus));
+     }
+ 
    if (cond && TREE_CODE (cond) != INTEGER_CST)
      {
        /* If COND is constant, don't bother building an exit.  If it's false,
*************** genericize_cp_loop (tree *stmt_p, locati
*** 225,234 ****
      }
  
    if (exit && cond_is_first)
!     append_to_statement_list (exit, &stmt_list);
    append_to_statement_list (body, &stmt_list);
    finish_bc_block (&stmt_list, bc_continue, clab);
!   append_to_statement_list (incr, &stmt_list);
    if (exit && !cond_is_first)
      append_to_statement_list (exit, &stmt_list);
  
--- 234,257 ----
      }
  
    if (exit && cond_is_first)
!     {
!       append_to_statement_list (debug_begin, &stmt_list);
!       debug_begin = NULL_TREE;
!       append_to_statement_list (exit, &stmt_list);
!     }
    append_to_statement_list (body, &stmt_list);
    finish_bc_block (&stmt_list, bc_continue, clab);
!   if (incr)
!     {
!       if (MAY_HAVE_DEBUG_MARKER_STMTS)
! 	{
! 	  tree d = build0 (DEBUG_BEGIN_STMT, void_type_node);
! 	  SET_EXPR_LOCATION (d, EXPR_LOC_OR_LOC (incr, start_locus));
! 	  append_to_statement_list (d, &stmt_list);
! 	}
!       append_to_statement_list (incr, &stmt_list);
!     }
!   append_to_statement_list (debug_begin, &stmt_list);
    if (exit && !cond_is_first)
      append_to_statement_list (exit, &stmt_list);
  
*************** cp_gimplify_expr (tree *expr_p, gimple_s
*** 752,757 ****
--- 775,801 ----
  
      case CALL_EXPR:
        ret = GS_OK;
+       if (flag_strong_eval_order == 2
+ 	  && CALL_EXPR_FN (*expr_p)
+ 	  && cp_get_callee_fndecl_nofold (*expr_p) == NULL_TREE)
+ 	{
+ 	  tree fnptrtype = TREE_TYPE (CALL_EXPR_FN (*expr_p));
+ 	  enum gimplify_status t
+ 	    = gimplify_expr (&CALL_EXPR_FN (*expr_p), pre_p, NULL,
+ 			     is_gimple_call_addr, fb_rvalue);
+ 	  if (t == GS_ERROR)
+ 	    ret = GS_ERROR;
+ 	  else if (is_gimple_variable (CALL_EXPR_FN (*expr_p))
+ 		   && TREE_CODE (CALL_EXPR_FN (*expr_p)) != SSA_NAME)
+ 	    CALL_EXPR_FN (*expr_p)
+ 	      = get_initialized_tmp_var (CALL_EXPR_FN (*expr_p), pre_p,
+ 					 NULL);
+ 	  /* GIMPLE considers most pointer conversion useless, but for
+ 	     calls we actually care about the exact function pointer type.  */
+ 	  if (t != GS_ERROR && TREE_TYPE (CALL_EXPR_FN (*expr_p)) != fnptrtype)
+ 	    CALL_EXPR_FN (*expr_p)
+ 	      = build1 (NOP_EXPR, fnptrtype, CALL_EXPR_FN (*expr_p));
+ 	}
        if (!CALL_EXPR_FN (*expr_p))
  	/* Internal function call.  */;
        else if (CALL_EXPR_REVERSE_ARGS (*expr_p))
diff -Nrcpad gcc-8.3.0/gcc/cp/cp-tree.h gcc-8.4.0/gcc/cp/cp-tree.h
*** gcc-8.3.0/gcc/cp/cp-tree.h	Mon Feb 11 21:49:37 2019
--- gcc-8.4.0/gcc/cp/cp-tree.h	Wed Mar  4 08:30:00 2020
*************** more_aggr_init_expr_args_p (const aggr_i
*** 4254,4259 ****
--- 4254,4263 ----
  #define TYPE_PTR_P(NODE)			\
    (TREE_CODE (NODE) == POINTER_TYPE)
  
+ /* Returns true if NODE is a reference.  */
+ #define TYPE_REF_P(NODE)			\
+   (TREE_CODE (NODE) == REFERENCE_TYPE)
+ 
  /* Returns true if NODE is an object type:
  
       [basic.types]
*************** extern tree cp_build_parm_decl			(tree,
*** 6390,6396 ****
  extern tree get_guard				(tree);
  extern tree get_guard_cond			(tree, bool);
  extern tree set_guard				(tree);
! extern tree get_tls_wrapper_fn			(tree);
  extern void mark_needed				(tree);
  extern bool decl_needed_p			(tree);
  extern void note_vague_linkage_fn		(tree);
--- 6394,6400 ----
  extern tree get_guard				(tree);
  extern tree get_guard_cond			(tree, bool);
  extern tree set_guard				(tree);
! extern tree maybe_get_tls_wrapper_call		(tree);
  extern void mark_needed				(tree);
  extern bool decl_needed_p			(tree);
  extern void note_vague_linkage_fn		(tree);
*************** extern bool is_capture_proxy			(tree);
*** 7019,7025 ****
  extern bool is_normal_capture_proxy             (tree);
  extern bool is_constant_capture_proxy           (tree);
  extern void register_capture_members		(tree);
! extern tree lambda_expr_this_capture            (tree, bool);
  extern void maybe_generic_this_capture		(tree, tree);
  extern tree maybe_resolve_dummy			(tree, bool);
  extern tree current_nonlambda_function		(void);
--- 7023,7029 ----
  extern bool is_normal_capture_proxy             (tree);
  extern bool is_constant_capture_proxy           (tree);
  extern void register_capture_members		(tree);
! extern tree lambda_expr_this_capture            (tree, int);
  extern void maybe_generic_this_capture		(tree, tree);
  extern tree maybe_resolve_dummy			(tree, bool);
  extern tree current_nonlambda_function		(void);
diff -Nrcpad gcc-8.3.0/gcc/cp/decl.c gcc-8.4.0/gcc/cp/decl.c
*** gcc-8.3.0/gcc/cp/decl.c	Tue Feb  5 18:57:26 2019
--- gcc-8.4.0/gcc/cp/decl.c	Wed Mar  4 08:30:00 2020
*************** next_arg:;
*** 2163,2175 ****
  	  if (TYPE_NAME (TREE_TYPE (newdecl)) == newdecl)
  	    {
  	      tree remove = TREE_TYPE (newdecl);
! 	      for (tree t = TYPE_MAIN_VARIANT (remove); ;
! 		   t = TYPE_NEXT_VARIANT (t))
! 		if (TYPE_NEXT_VARIANT (t) == remove)
! 		  {
! 		    TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (remove);
! 		    break;
! 		  }
  	    }
  	}
        else if (merge_attr)
--- 2163,2195 ----
  	  if (TYPE_NAME (TREE_TYPE (newdecl)) == newdecl)
  	    {
  	      tree remove = TREE_TYPE (newdecl);
! 	      if (TYPE_MAIN_VARIANT (remove) == remove)
! 		{
! 		  gcc_assert (TYPE_NEXT_VARIANT (remove) == NULL_TREE);
! 		  /* If remove is the main variant, no need to remove that
! 		     from the list.  One of the DECL_ORIGINAL_TYPE
! 		     variants, e.g. created for aligned attribute, might still
! 		     refer to the newdecl TYPE_DECL though, so remove that one
! 		     in that case.  */
! 		  if (tree orig = DECL_ORIGINAL_TYPE (newdecl))
! 		    if (orig != remove)
! 		      for (tree t = TYPE_MAIN_VARIANT (orig); t;
! 			   t = TYPE_MAIN_VARIANT (t))
! 			if (TYPE_NAME (TYPE_NEXT_VARIANT (t)) == newdecl)
! 			  {
! 			    TYPE_NEXT_VARIANT (t)
! 			      = TYPE_NEXT_VARIANT (TYPE_NEXT_VARIANT (t));
! 			    break;
! 			  }
! 		}	    
! 	      else
! 		for (tree t = TYPE_MAIN_VARIANT (remove); ;
! 		     t = TYPE_NEXT_VARIANT (t))
! 		  if (TYPE_NEXT_VARIANT (t) == remove)
! 		    {
! 		      TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (remove);
! 		      break;
! 		    }
  	    }
  	}
        else if (merge_attr)
*************** maybe_commonize_var (tree decl)
*** 5616,5621 ****
--- 5636,5642 ----
  		 be merged.  */
  	      TREE_PUBLIC (decl) = 0;
  	      DECL_COMMON (decl) = 0;
+ 	      DECL_INTERFACE_KNOWN (decl) = 1;
  	      const char *msg;
  	      if (DECL_INLINE_VAR_P (decl))
  		msg = G_("sorry: semantics of inline variable "
*************** reshape_init_r (tree type, reshape_iter
*** 6141,6154 ****
  	       by the front end.  Here we have e.g. {.__pfn=0B, .__delta=0},
  	       which is missing outermost braces.  We should warn below, and
  	       one of the routines below will wrap it in additional { }.  */;
! 	  /* For a nested compound literal, there is no need to reshape since
! 	     we called reshape_init in finish_compound_literal, before calling
! 	     digest_init.  */
! 	  else if (COMPOUND_LITERAL_P (init)
! 		   /* Similarly, a CONSTRUCTOR of the target's type is a
! 		      previously digested initializer.  */
! 		   || same_type_ignoring_top_level_qualifiers_p (type,
! 								 init_type))
  	    {
  	      ++d->cur;
  	      gcc_assert (!BRACE_ENCLOSED_INITIALIZER_P (init));
--- 6162,6174 ----
  	       by the front end.  Here we have e.g. {.__pfn=0B, .__delta=0},
  	       which is missing outermost braces.  We should warn below, and
  	       one of the routines below will wrap it in additional { }.  */;
! 	  /* For a nested compound literal, proceed to specialized routines,
! 	     to handle initialization of arrays and similar.  */
! 	  else if (COMPOUND_LITERAL_P (init))
! 	    gcc_assert (!BRACE_ENCLOSED_INITIALIZER_P (init));
! 	  /* A CONSTRUCTOR of the target's type is a previously
! 	     digested initializer.  */
! 	  else if (same_type_ignoring_top_level_qualifiers_p (type, init_type))
  	    {
  	      ++d->cur;
  	      gcc_assert (!BRACE_ENCLOSED_INITIALIZER_P (init));
*************** cp_finish_decl (tree decl, tree init, bo
*** 7281,7288 ****
  	       && ! (DECL_LANG_SPECIFIC (decl)
  		     && DECL_NOT_REALLY_EXTERN (decl)))
  	{
! 	  if (init)
! 	    DECL_INITIAL (decl) = init;
  	}
        /* A variable definition.  */
        else if (DECL_FUNCTION_SCOPE_P (decl) && !TREE_STATIC (decl))
--- 7301,7307 ----
  	       && ! (DECL_LANG_SPECIFIC (decl)
  		     && DECL_NOT_REALLY_EXTERN (decl)))
  	{
! 	  /* check_initializer will have done any constant initialization.  */
  	}
        /* A variable definition.  */
        else if (DECL_FUNCTION_SCOPE_P (decl) && !TREE_STATIC (decl))
*************** expand_static_init (tree decl, tree init
*** 8326,8339 ****
  	      (acquire_name, build_function_type_list (integer_type_node,
  						       TREE_TYPE (guard_addr),
  						       NULL_TREE),
! 	       NULL_TREE, ECF_NOTHROW | ECF_LEAF);
  	  if (!release_fn || !abort_fn)
  	    vfntype = build_function_type_list (void_type_node,
  						TREE_TYPE (guard_addr),
  						NULL_TREE);
  	  if (!release_fn)
  	    release_fn = push_library_fn (release_name, vfntype, NULL_TREE,
! 					   ECF_NOTHROW | ECF_LEAF);
  	  if (!abort_fn)
  	    abort_fn = push_library_fn (abort_name, vfntype, NULL_TREE,
  					ECF_NOTHROW | ECF_LEAF);
--- 8345,8358 ----
  	      (acquire_name, build_function_type_list (integer_type_node,
  						       TREE_TYPE (guard_addr),
  						       NULL_TREE),
! 	       NULL_TREE, ECF_NOTHROW);
  	  if (!release_fn || !abort_fn)
  	    vfntype = build_function_type_list (void_type_node,
  						TREE_TYPE (guard_addr),
  						NULL_TREE);
  	  if (!release_fn)
  	    release_fn = push_library_fn (release_name, vfntype, NULL_TREE,
! 					  ECF_NOTHROW);
  	  if (!abort_fn)
  	    abort_fn = push_library_fn (abort_name, vfntype, NULL_TREE,
  					ECF_NOTHROW | ECF_LEAF);
*************** start_preparsed_function (tree decl1, tr
*** 15346,15352 ****
        && !implicit_default_ctor_p (decl1))
      cp_ubsan_maybe_initialize_vtbl_ptrs (current_class_ptr);
  
!   start_lambda_scope (decl1);
  
    return true;
  }
--- 15365,15372 ----
        && !implicit_default_ctor_p (decl1))
      cp_ubsan_maybe_initialize_vtbl_ptrs (current_class_ptr);
  
!   if (!DECL_OMP_DECLARE_REDUCTION_P (decl1))
!     start_lambda_scope (decl1);
  
    return true;
  }
*************** finish_function (bool inline_p)
*** 15739,15745 ****
    if (fndecl == NULL_TREE)
      return error_mark_node;
  
!   finish_lambda_scope ();
  
    if (c_dialect_objc ())
      objc_finish_function ();
--- 15759,15766 ----
    if (fndecl == NULL_TREE)
      return error_mark_node;
  
!   if (!DECL_OMP_DECLARE_REDUCTION_P (fndecl))
!     finish_lambda_scope ();
  
    if (c_dialect_objc ())
      objc_finish_function ();
*************** finish_function (bool inline_p)
*** 15856,15862 ****
      invoke_plugin_callbacks (PLUGIN_PRE_GENERICIZE, fndecl);
  
    /* Perform delayed folding before NRV transformation.  */
!   if (!processing_template_decl)
      cp_fold_function (fndecl);
  
    /* Set up the named return value optimization, if we can.  Candidate
--- 15877,15883 ----
      invoke_plugin_callbacks (PLUGIN_PRE_GENERICIZE, fndecl);
  
    /* Perform delayed folding before NRV transformation.  */
!   if (!processing_template_decl && !DECL_OMP_DECLARE_REDUCTION_P (fndecl))
      cp_fold_function (fndecl);
  
    /* Set up the named return value optimization, if we can.  Candidate
*************** finish_function (bool inline_p)
*** 15965,15971 ****
    if (!processing_template_decl)
      {
        struct language_function *f = DECL_SAVED_FUNCTION_DATA (fndecl);
!       cp_genericize (fndecl);
        /* Clear out the bits we don't need.  */
        f->x_current_class_ptr = NULL;
        f->x_current_class_ref = NULL;
--- 15986,15993 ----
    if (!processing_template_decl)
      {
        struct language_function *f = DECL_SAVED_FUNCTION_DATA (fndecl);
!       if (!DECL_OMP_DECLARE_REDUCTION_P (fndecl))
! 	cp_genericize (fndecl);
        /* Clear out the bits we don't need.  */
        f->x_current_class_ptr = NULL;
        f->x_current_class_ref = NULL;
diff -Nrcpad gcc-8.3.0/gcc/cp/decl2.c gcc-8.4.0/gcc/cp/decl2.c
*** gcc-8.3.0/gcc/cp/decl2.c	Thu Jul 12 19:37:11 2018
--- gcc-8.4.0/gcc/cp/decl2.c	Wed Mar  4 08:30:00 2020
*************** mark_vtable_entries (tree decl)
*** 1838,1843 ****
--- 1838,1854 ----
      }
  }
  
+ /* Adjust the TLS model on variable DECL if need be, typically after
+    the linkage of DECL has been modified.  */
+ 
+ static void
+ adjust_var_decl_tls_model (tree decl)
+ {
+   if (CP_DECL_THREAD_LOCAL_P (decl)
+       && !lookup_attribute ("tls_model", DECL_ATTRIBUTES (decl)))
+     set_decl_tls_model (decl, decl_default_tls_model (decl));
+ }
+ 
  /* Set DECL up to have the closest approximation of "initialized common"
     linkage available.  */
  
*************** comdat_linkage (tree decl)
*** 1888,1893 ****
--- 1899,1907 ----
  
    if (TREE_PUBLIC (decl))
      DECL_COMDAT (decl) = 1;
+ 
+   if (VAR_P (decl))
+     adjust_var_decl_tls_model (decl);
  }
  
  /* For win32 we also want to put explicit instantiations in
*************** maybe_make_one_only (tree decl)
*** 1926,1931 ****
--- 1940,1947 ----
  	  /* Mark it needed so we don't forget to emit it.  */
            node->forced_by_abi = true;
  	  TREE_USED (decl) = 1;
+ 
+ 	  adjust_var_decl_tls_model (decl);
  	}
      }
  }
*************** get_tls_init_fn (tree var)
*** 3357,3363 ****
     VAR and then returns a reference to VAR.  The wrapper function is used
     in place of VAR everywhere VAR is mentioned.  */
  
! tree
  get_tls_wrapper_fn (tree var)
  {
    /* Only C++11 TLS vars need this wrapper fn.  */
--- 3373,3379 ----
     VAR and then returns a reference to VAR.  The wrapper function is used
     in place of VAR everywhere VAR is mentioned.  */
  
! static tree
  get_tls_wrapper_fn (tree var)
  {
    /* Only C++11 TLS vars need this wrapper fn.  */
*************** get_tls_wrapper_fn (tree var)
*** 3409,3414 ****
--- 3425,3446 ----
    return fn;
  }
  
+ /* If EXPR is a thread_local variable that should be wrapped by init
+    wrapper function, return a call to that function, otherwise return
+    NULL.  */
+ 
+ tree
+ maybe_get_tls_wrapper_call (tree expr)
+ {
+   if (VAR_P (expr)
+       && !processing_template_decl
+       && !cp_unevaluated_operand
+       && CP_DECL_THREAD_LOCAL_P (expr))
+     if (tree wrap = get_tls_wrapper_fn (expr))
+       return build_cxx_call (wrap, 0, NULL, tf_warning_or_error);
+   return NULL;
+ }
+ 
  /* At EOF, generate the definition for the TLS wrapper function FN:
  
     T& var_wrapper() {
*************** c_parse_final_cleanups (void)
*** 4888,4898 ****
  	      /* Generate RTL for this function now that we know we
  		 need it.  */
  	      expand_or_defer_fn (decl);
- 	      /* If we're compiling -fsyntax-only pretend that this
- 		 function has been written out so that we don't try to
- 		 expand it again.  */
- 	      if (flag_syntax_only)
- 		TREE_ASM_WRITTEN (decl) = 1;
  	      reconsider = true;
  	    }
  	}
--- 4920,4925 ----
*************** c_parse_final_cleanups (void)
*** 4905,4911 ****
  	{
  	  if (var_finalized_p (decl) || DECL_REALLY_EXTERN (decl)
  	      /* Don't write it out if we haven't seen a definition.  */
! 	      || (DECL_IN_AGGR_P (decl) && !DECL_INLINE_VAR_P (decl)))
  	    continue;
  	  import_export_decl (decl);
  	  /* If this static data member is needed, provide it to the
--- 4932,4941 ----
  	{
  	  if (var_finalized_p (decl) || DECL_REALLY_EXTERN (decl)
  	      /* Don't write it out if we haven't seen a definition.  */
! 	      || (DECL_IN_AGGR_P (decl) && !DECL_INLINE_VAR_P (decl))
! 	      /* Or haven't instantiated it.  */
! 	      || (DECL_TEMPLATE_INSTANTIATION (decl)
! 		  && !DECL_TEMPLATE_INSTANTIATED (decl)))
  	    continue;
  	  import_export_decl (decl);
  	  /* If this static data member is needed, provide it to the
diff -Nrcpad gcc-8.3.0/gcc/cp/init.c gcc-8.4.0/gcc/cp/init.c
*** gcc-8.3.0/gcc/cp/init.c	Tue Jan  8 10:20:57 2019
--- gcc-8.4.0/gcc/cp/init.c	Wed Mar  4 08:30:00 2020
*************** build_value_init_noctor (tree type, tsub
*** 419,424 ****
--- 419,433 ----
  	      if (ftype == error_mark_node)
  		continue;
  
+ 	      /* Ignore flexible array members for value initialization.  */
+ 	      if (TREE_CODE (ftype) == ARRAY_TYPE
+ 		  && !COMPLETE_TYPE_P (ftype)
+ 		  && !TYPE_DOMAIN (ftype)
+ 		  && COMPLETE_TYPE_P (TREE_TYPE (ftype))
+ 		  && (next_initializable_field (DECL_CHAIN (field))
+ 		      == NULL_TREE))
+ 		continue;
+ 
  	      /* We could skip vfields and fields of types with
  		 user-defined constructors, but I think that won't improve
  		 performance at all; it should be simpler in general just
*************** constant_value_1 (tree decl, bool strict
*** 2269,2276 ****
  		  || TREE_CODE (init) == STRING_CST)))
  	break;
        /* Don't return a CONSTRUCTOR for a variable with partial run-time
! 	 initialization, since it doesn't represent the entire value.  */
!       if (TREE_CODE (init) == CONSTRUCTOR
  	  && !DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl))
  	break;
        /* If the variable has a dynamic initializer, don't use its
--- 2278,2288 ----
  		  || TREE_CODE (init) == STRING_CST)))
  	break;
        /* Don't return a CONSTRUCTOR for a variable with partial run-time
! 	 initialization, since it doesn't represent the entire value.
! 	 Similarly for VECTOR_CSTs created by cp_folding those
! 	 CONSTRUCTORs.  */
!       if ((TREE_CODE (init) == CONSTRUCTOR
! 	   || TREE_CODE (init) == VECTOR_CST)
  	  && !DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl))
  	break;
        /* If the variable has a dynamic initializer, don't use its
diff -Nrcpad gcc-8.3.0/gcc/cp/lambda.c gcc-8.4.0/gcc/cp/lambda.c
*** gcc-8.3.0/gcc/cp/lambda.c	Fri Feb  8 14:50:03 2019
--- gcc-8.4.0/gcc/cp/lambda.c	Wed Mar  4 08:30:00 2020
*************** is_normal_capture_proxy (tree decl)
*** 278,297 ****
      /* It's not a capture proxy.  */
      return false;
  
!   if (variably_modified_type_p (TREE_TYPE (decl), NULL_TREE))
!     /* VLA capture.  */
!     return true;
! 
!   /* It is a capture proxy, is it a normal capture?  */
!   tree val = DECL_VALUE_EXPR (decl);
!   if (val == error_mark_node)
!     return true;
! 
!   if (TREE_CODE (val) == ADDR_EXPR)
!     val = TREE_OPERAND (val, 0);
!   gcc_assert (TREE_CODE (val) == COMPONENT_REF);
!   val = TREE_OPERAND (val, 1);
!   return DECL_NORMAL_CAPTURE_P (val);
  }
  
  /* Returns true iff DECL is a capture proxy for a normal capture
--- 278,285 ----
      /* It's not a capture proxy.  */
      return false;
  
!   return (DECL_LANG_SPECIFIC (decl)
! 	  && DECL_CAPTURED_VARIABLE (decl));
  }
  
  /* Returns true iff DECL is a capture proxy for a normal capture
*************** add_capture (tree lambda, tree id, tree
*** 612,630 ****
  	  IDENTIFIER_LENGTH (id) + 1);
    name = get_identifier (buf);
  
-   /* If TREE_TYPE isn't set, we're still in the introducer, so check
-      for duplicates.  */
-   if (!LAMBDA_EXPR_CLOSURE (lambda))
-     {
-       if (IDENTIFIER_MARKED (name))
- 	{
- 	  pedwarn (input_location, 0,
- 		   "already captured %qD in lambda expression", id);
- 	  return NULL_TREE;
- 	}
-       IDENTIFIER_MARKED (name) = true;
-     }
- 
    if (variadic)
      type = make_pack_expansion (type);
  
--- 600,605 ----
*************** register_capture_members (tree captures)
*** 685,692 ****
    if (PACK_EXPANSION_P (field))
      field = PACK_EXPANSION_PATTERN (field);
  
-   /* We set this in add_capture to avoid duplicates.  */
-   IDENTIFIER_MARKED (DECL_NAME (field)) = false;
    finish_member_declaration (field);
  }
  
--- 660,665 ----
*************** add_default_capture (tree lambda_stack,
*** 732,741 ****
  
  /* Return the capture pertaining to a use of 'this' in LAMBDA, in the
     form of an INDIRECT_REF, possibly adding it through default
!    capturing, if ADD_CAPTURE_P is true.  */
  
  tree
! lambda_expr_this_capture (tree lambda, bool add_capture_p)
  {
    tree result;
  
--- 705,715 ----
  
  /* Return the capture pertaining to a use of 'this' in LAMBDA, in the
     form of an INDIRECT_REF, possibly adding it through default
!    capturing, if ADD_CAPTURE_P is nonzero.  If ADD_CAPTURE_P is negative,
!    try to capture but don't complain if we can't.  */
  
  tree
! lambda_expr_this_capture (tree lambda, int add_capture_p)
  {
    tree result;
  
*************** lambda_expr_this_capture (tree lambda, b
*** 831,837 ****
      result = this_capture;
    else if (!this_capture)
      {
!       if (add_capture_p)
  	{
  	  error ("%<this%> was not captured for this lambda function");
  	  result = error_mark_node;
--- 805,811 ----
      result = this_capture;
    else if (!this_capture)
      {
!       if (add_capture_p == 1)
  	{
  	  error ("%<this%> was not captured for this lambda function");
  	  result = error_mark_node;
*************** maybe_generic_this_capture (tree object,
*** 935,941 ****
  	      && DECL_NONSTATIC_MEMBER_FUNCTION_P (*iter))
  	    {
  	      /* Found a non-static member.  Capture this.  */
! 	      lambda_expr_this_capture (lam, true);
  	      break;
  	    }
        }
--- 909,915 ----
  	      && DECL_NONSTATIC_MEMBER_FUNCTION_P (*iter))
  	    {
  	      /* Found a non-static member.  Capture this.  */
! 	      lambda_expr_this_capture (lam, /*maybe*/-1);
  	      break;
  	    }
        }
diff -Nrcpad gcc-8.3.0/gcc/cp/mangle.c gcc-8.4.0/gcc/cp/mangle.c
*** gcc-8.3.0/gcc/cp/mangle.c	Wed Apr 18 05:17:26 2018
--- gcc-8.4.0/gcc/cp/mangle.c	Wed Mar  4 08:30:00 2020
*************** decl_mangling_context (tree decl)
*** 875,881 ****
    else if (template_type_parameter_p (decl))
       /* template type parms have no mangling context.  */
        return NULL_TREE;
!   return CP_DECL_CONTEXT (decl);
  }
  
  /* <name> ::= <unscoped-name>
--- 875,890 ----
    else if (template_type_parameter_p (decl))
       /* template type parms have no mangling context.  */
        return NULL_TREE;
! 
!   tcontext = CP_DECL_CONTEXT (decl);
! 
!   /* Ignore the artificial declare reduction functions.  */
!   if (tcontext
!       && TREE_CODE (tcontext) == FUNCTION_DECL
!       && DECL_OMP_DECLARE_REDUCTION_P (tcontext))
!     return decl_mangling_context (tcontext);
! 
!   return tcontext;
  }
  
  /* <name> ::= <unscoped-name>
*************** write_expression (tree expr)
*** 3047,3053 ****
  	{
  	  scope = TREE_OPERAND (expr, 0);
  	  member = TREE_OPERAND (expr, 1);
! 	  gcc_assert (!BASELINK_P (member));
  	}
        else
  	{
--- 3056,3063 ----
  	{
  	  scope = TREE_OPERAND (expr, 0);
  	  member = TREE_OPERAND (expr, 1);
! 	  if (BASELINK_P (member))
! 	    member = BASELINK_FUNCTIONS (member);
  	}
        else
  	{
diff -Nrcpad gcc-8.3.0/gcc/cp/method.c gcc-8.4.0/gcc/cp/method.c
*** gcc-8.3.0/gcc/cp/method.c	Tue Jan  8 09:55:26 2019
--- gcc-8.4.0/gcc/cp/method.c	Wed Mar  4 08:30:00 2020
*************** is_xible_helper (enum tree_code code, tr
*** 1201,1206 ****
--- 1201,1208 ----
      expr = assignable_expr (to, from);
    else if (trivial && from && TREE_CHAIN (from))
      return error_mark_node; // only 0- and 1-argument ctors can be trivial
+   else if (TREE_CODE (to) == ARRAY_TYPE && !TYPE_DOMAIN (to))
+     return error_mark_node; // can't construct an array of unknown bound
    else
      expr = constructible_expr (to, from);
    return expr;
diff -Nrcpad gcc-8.3.0/gcc/cp/name-lookup.c gcc-8.4.0/gcc/cp/name-lookup.c
*** gcc-8.3.0/gcc/cp/name-lookup.c	Thu Feb 14 23:02:45 2019
--- gcc-8.4.0/gcc/cp/name-lookup.c	Wed Mar  4 08:30:00 2020
*************** name_lookup::adl_expr (tree expr)
*** 907,913 ****
  
    if (TREE_TYPE (expr) != unknown_type_node)
      {
!       adl_type (TREE_TYPE (expr));
        return;
      }
  
--- 907,913 ----
  
    if (TREE_TYPE (expr) != unknown_type_node)
      {
!       adl_type (unlowered_expr_type (expr));
        return;
      }
  
*************** is_nested_namespace (tree ancestor, tree
*** 4198,4235 ****
    return ancestor == descendant;
  }
  
! /* Returns true if ROOT (a namespace, class, or function) encloses
!    CHILD.  CHILD may be either a class type or a namespace.  */
  
  bool
  is_ancestor (tree root, tree child)
  {
!   gcc_assert ((TREE_CODE (root) == NAMESPACE_DECL
! 	       || TREE_CODE (root) == FUNCTION_DECL
! 	       || CLASS_TYPE_P (root)));
!   gcc_assert ((TREE_CODE (child) == NAMESPACE_DECL
! 	       || CLASS_TYPE_P (child)));
  
!   /* The global namespace encloses everything.  */
    if (root == global_namespace)
      return true;
  
!   /* Search until we reach namespace scope.  */
    while (TREE_CODE (child) != NAMESPACE_DECL)
      {
        /* If we've reached the ROOT, it encloses CHILD.  */
        if (root == child)
  	return true;
        /* Go out one level.  */
        if (TYPE_P (child))
  	child = TYPE_NAME (child);
        child = CP_DECL_CONTEXT (child);
      }
  
!   if (TREE_CODE (root) == NAMESPACE_DECL)
!     return is_nested_namespace (root, child);
  
!   return false;
  }
  
  /* Enter the class or namespace scope indicated by T suitable for name
--- 4198,4243 ----
    return ancestor == descendant;
  }
  
! /* Returns true if ROOT (a non-alias namespace, class, or function)
!    encloses CHILD.  CHILD may be either a class type or a namespace
!    (maybe alias).  */
  
  bool
  is_ancestor (tree root, tree child)
  {
!   gcc_checking_assert ((TREE_CODE (root) == NAMESPACE_DECL
! 			&& !DECL_NAMESPACE_ALIAS (root))
! 		       || TREE_CODE (root) == FUNCTION_DECL
! 		       || CLASS_TYPE_P (root));
!   gcc_checking_assert (TREE_CODE (child) == NAMESPACE_DECL
! 		       || CLASS_TYPE_P (child));
  
!   /* The global namespace encloses everything.  Early-out for the
!      common case.  */
    if (root == global_namespace)
      return true;
  
!   /* Search CHILD until we reach namespace scope.  */
    while (TREE_CODE (child) != NAMESPACE_DECL)
      {
        /* If we've reached the ROOT, it encloses CHILD.  */
        if (root == child)
  	return true;
+ 
        /* Go out one level.  */
        if (TYPE_P (child))
  	child = TYPE_NAME (child);
        child = CP_DECL_CONTEXT (child);
      }
  
!   if (TREE_CODE (root) != NAMESPACE_DECL)
!     /* Failed to meet the non-namespace we were looking for.  */
!     return false;
  
!   if (tree alias = DECL_NAMESPACE_ALIAS (child))
!     child = alias;
! 
!   return is_nested_namespace (root, child);
  }
  
  /* Enter the class or namespace scope indicated by T suitable for name
*************** get_std_name_hint (const char *name)
*** 5509,5515 ****
      {"bitset", "<bitset>", cxx11},
      /* <complex>.  */
      {"complex", "<complex>", cxx98},
!     {"complex_literals", "<complex>", cxx98},
      /* <condition_variable>. */
      {"condition_variable", "<condition_variable>", cxx11},
      {"condition_variable_any", "<condition_variable>", cxx11},
--- 5517,5523 ----
      {"bitset", "<bitset>", cxx11},
      /* <complex>.  */
      {"complex", "<complex>", cxx98},
!     {"complex_literals", "<complex>", cxx14},
      /* <condition_variable>. */
      {"condition_variable", "<condition_variable>", cxx11},
      {"condition_variable_any", "<condition_variable>", cxx11},
*************** get_std_name_hint (const char *name)
*** 5571,5577 ****
      {"multimap", "<map>", cxx98},
      /* <memory>.  */
      {"make_shared", "<memory>", cxx11},
!     {"make_unique", "<memory>", cxx11},
      {"shared_ptr", "<memory>", cxx11},
      {"unique_ptr", "<memory>", cxx11},
      {"weak_ptr", "<memory>", cxx11},
--- 5579,5585 ----
      {"multimap", "<map>", cxx98},
      /* <memory>.  */
      {"make_shared", "<memory>", cxx11},
!     {"make_unique", "<memory>", cxx14},
      {"shared_ptr", "<memory>", cxx11},
      {"unique_ptr", "<memory>", cxx11},
      {"weak_ptr", "<memory>", cxx11},
diff -Nrcpad gcc-8.3.0/gcc/cp/parser.c gcc-8.4.0/gcc/cp/parser.c
*** gcc-8.3.0/gcc/cp/parser.c	Tue Jan  8 10:25:54 2019
--- gcc-8.4.0/gcc/cp/parser.c	Wed Mar  4 08:30:00 2020
*************** static bool cp_parser_init_statement_p
*** 2646,2651 ****
--- 2646,2652 ----
    (cp_parser *);
  static bool cp_parser_skip_to_closing_square_bracket
    (cp_parser *);
+ static size_t cp_parser_skip_balanced_tokens (cp_parser *, size_t);
  
  /* Concept-related syntactic transformations */
  
*************** cp_parser_lambda_introducer (cp_parser*
*** 10266,10271 ****
--- 10267,10277 ----
        first = false;
      }
  
+   hash_set<tree> *ids = NULL;
+ #if GCC_VERSION >= 8000
+   char ids_buf[sizeof (hash_set<tree>) + __alignof__ (hash_set<tree>) - 1];
+ #endif
+   tree first_capture_id = NULL_TREE;
    while (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_SQUARE))
      {
        cp_token* capture_token;
*************** cp_parser_lambda_introducer (cp_parser*
*** 10301,10311 ****
  	    pedwarn (loc, 0, "explicit by-copy capture of %<this%> redundant "
  		     "with by-copy capture default");
  	  cp_lexer_consume_token (parser->lexer);
! 	  add_capture (lambda_expr,
! 		       /*id=*/this_identifier,
! 		       /*initializer=*/finish_this_expr (),
! 		       /*by_reference_p=*/true,
! 		       explicit_init_p);
  	  continue;
  	}
  
--- 10307,10320 ----
  	    pedwarn (loc, 0, "explicit by-copy capture of %<this%> redundant "
  		     "with by-copy capture default");
  	  cp_lexer_consume_token (parser->lexer);
! 	  if (LAMBDA_EXPR_THIS_CAPTURE (lambda_expr))
! 	    pedwarn (input_location, 0,
! 		     "already captured %qD in lambda expression",
! 		     this_identifier);
! 	  else
! 	    add_capture (lambda_expr, /*id=*/this_identifier,
! 			 /*initializer=*/finish_this_expr (),
! 			 /*by_reference_p=*/true, explicit_init_p);
  	  continue;
  	}
  
*************** cp_parser_lambda_introducer (cp_parser*
*** 10319,10329 ****
  			     "-std=c++17 or -std=gnu++17");
  	  cp_lexer_consume_token (parser->lexer);
  	  cp_lexer_consume_token (parser->lexer);
! 	  add_capture (lambda_expr,
! 		       /*id=*/this_identifier,
! 		       /*initializer=*/finish_this_expr (),
! 		       /*by_reference_p=*/false,
! 		       explicit_init_p);
  	  continue;
  	}
  
--- 10328,10341 ----
  			     "-std=c++17 or -std=gnu++17");
  	  cp_lexer_consume_token (parser->lexer);
  	  cp_lexer_consume_token (parser->lexer);
! 	  if (LAMBDA_EXPR_THIS_CAPTURE (lambda_expr))
! 	    pedwarn (input_location, 0,
! 		     "already captured %qD in lambda expression",
! 		     this_identifier);
! 	  else
! 	    add_capture (lambda_expr, /*id=*/this_identifier,
! 			 /*initializer=*/finish_this_expr (),
! 			 /*by_reference_p=*/false, explicit_init_p);
  	  continue;
  	}
  
*************** cp_parser_lambda_introducer (cp_parser*
*** 10445,10455 ****
  		     "default", capture_id);
  	}
  
!       add_capture (lambda_expr,
! 		   capture_id,
! 		   capture_init_expr,
! 		   /*by_reference_p=*/capture_kind == BY_REFERENCE,
! 		   explicit_init_p);
  
        /* If there is any qualification still in effect, clear it
  	 now; we will be starting fresh with the next capture.  */
--- 10457,10491 ----
  		     "default", capture_id);
  	}
  
!       /* Check for duplicates.
! 	 Optimize for the zero or one explicit captures cases and only create
! 	 the hash_set after adding second capture.  */
!       bool found = false;
!       if (ids && ids->elements ())
! 	found = ids->add (capture_id);
!       else if (first_capture_id == NULL_TREE)
! 	first_capture_id = capture_id;
!       else if (capture_id == first_capture_id)
! 	found = true;
!       else
! 	{
! #if GCC_VERSION >= 8000
! 	  ids = new (ids_buf
! 		     + (-(uintptr_t) ids_buf
! 			& (__alignof__ (hash_set <tree>) - 1))) hash_set <tree>;
! #else
! 	  ids = new hash_set <tree>;
! #endif
! 	  ids->add (first_capture_id);
! 	  ids->add (capture_id);
! 	}
!       if (found)
! 	pedwarn (input_location, 0,
! 		 "already captured %qD in lambda expression", capture_id);
!       else
! 	add_capture (lambda_expr, capture_id, capture_init_expr,
! 		     /*by_reference_p=*/capture_kind == BY_REFERENCE,
! 		     explicit_init_p);
  
        /* If there is any qualification still in effect, clear it
  	 now; we will be starting fresh with the next capture.  */
*************** cp_parser_lambda_introducer (cp_parser*
*** 10458,10463 ****
--- 10494,10506 ----
        parser->object_scope = NULL_TREE;
      }
  
+   if (ids)
+ #if GCC_VERSION >= 8000
+     ids->~hash_set <tree> ();
+ #else
+     delete ids;
+ #endif
+ 
    cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE);
  }
  
*************** cp_parser_decl_specifier_seq (cp_parser*
*** 13510,13515 ****
--- 13553,13571 ----
          case RID_CONCEPT:
            ds = ds_concept;
            cp_lexer_consume_token (parser->lexer);
+ 
+ 	  if (flags & CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR)
+ 	    break;
+ 
+ 	  /* In C++20 a concept definition is just 'concept name = expr;'
+ 	     Support that syntax by pretending we've seen 'bool'.  */
+ 	  if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)
+ 	      && cp_lexer_nth_token_is (parser->lexer, 2, CPP_EQ))
+ 	    {
+ 	      cp_parser_set_decl_spec_type (decl_specs, boolean_type_node,
+ 					    token, /*type_definition*/false);
+ 	      decl_specs->any_type_specifiers_p = true;
+ 	    }
            break;
  
  	  /* function-specifier:
*************** cp_parser_decl_specifier_seq (cp_parser*
*** 13528,13533 ****
--- 13584,13593 ----
  	  ds = ds_typedef;
  	  /* Consume the token.  */
  	  cp_lexer_consume_token (parser->lexer);
+ 
+ 	  if (flags & CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR)
+ 	    break;
+ 
  	  /* A constructor declarator cannot appear in a typedef.  */
  	  constructor_possible_p = false;
  	  /* The "typedef" keyword can only occur in a declaration; we
*************** cp_parser_decl_specifier_seq (cp_parser*
*** 13622,13627 ****
--- 13682,13690 ----
  	  bool is_cv_qualifier;
  	  tree type_spec;
  
+ 	  if (flags & CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR)
+ 	    flags |= CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS;
+ 
  	  type_spec
  	    = cp_parser_type_specifier (parser, flags,
  					decl_specs,
*************** cp_parser_template_name (cp_parser* pars
*** 16103,16109 ****
      {
        if (TREE_DEPRECATED (decl)
  	  && deprecated_state != DEPRECATED_SUPPRESS)
! 	warn_deprecated_use (decl, NULL_TREE);
      }
    else
      {
--- 16166,16182 ----
      {
        if (TREE_DEPRECATED (decl)
  	  && deprecated_state != DEPRECATED_SUPPRESS)
! 	{
! 	  tree d = DECL_TEMPLATE_RESULT (decl);
! 	  tree attr;
! 	  if (TREE_CODE (d) == TYPE_DECL)
! 	    attr = lookup_attribute ("deprecated",
! 				     TYPE_ATTRIBUTES (TREE_TYPE (d)));
! 	  else
! 	    attr = lookup_attribute ("deprecated",
! 				     DECL_ATTRIBUTES (d));
! 	  warn_deprecated_use (decl, attr);
! 	}
      }
    else
      {
*************** cp_parser_using_declaration (cp_parser*
*** 18773,18779 ****
  						  /*is_declaration=*/true);
    if (!qscope)
      qscope = global_namespace;
!   else if (UNSCOPED_ENUM_P (qscope))
      qscope = CP_TYPE_CONTEXT (qscope);
  
    if (access_declaration_p && cp_parser_error_occurred (parser))
--- 18846,18853 ----
  						  /*is_declaration=*/true);
    if (!qscope)
      qscope = global_namespace;
!   else if (UNSCOPED_ENUM_P (qscope)
! 	   && !TYPE_FUNCTION_SCOPE_P (qscope))
      qscope = CP_TYPE_CONTEXT (qscope);
  
    if (access_declaration_p && cp_parser_error_occurred (parser))
*************** cp_parser_asm_definition (cp_parser* par
*** 19125,19132 ****
    location_t volatile_loc = UNKNOWN_LOCATION;
    location_t inline_loc = UNKNOWN_LOCATION;
    location_t goto_loc = UNKNOWN_LOCATION;
  
!   if (cp_parser_allow_gnu_extensions_p (parser) && parser->in_function_body)
      for (;;)
        {
  	cp_token *token = cp_lexer_peek_token (parser->lexer);
--- 19199,19207 ----
    location_t volatile_loc = UNKNOWN_LOCATION;
    location_t inline_loc = UNKNOWN_LOCATION;
    location_t goto_loc = UNKNOWN_LOCATION;
+   location_t first_loc = UNKNOWN_LOCATION;
  
!   if (cp_parser_allow_gnu_extensions_p (parser))
      for (;;)
        {
  	cp_token *token = cp_lexer_peek_token (parser->lexer);
*************** cp_parser_asm_definition (cp_parser* par
*** 19152,19157 ****
--- 19227,19234 ----
  	      }
  	    else
  	      inline_loc = loc;
+ 	    if (!first_loc)
+ 	      first_loc = loc;
  	    cp_lexer_consume_token (parser->lexer);
  	    continue;
  
*************** cp_parser_asm_definition (cp_parser* par
*** 19163,19168 ****
--- 19240,19247 ----
  	      }
  	    else
  	      goto_loc = loc;
+ 	    if (!first_loc)
+ 	      first_loc = loc;
  	    cp_lexer_consume_token (parser->lexer);
  	    continue;
  
*************** cp_parser_asm_definition (cp_parser* par
*** 19182,19187 ****
--- 19261,19272 ----
    bool inline_p = (inline_loc != UNKNOWN_LOCATION);
    bool goto_p = (goto_loc != UNKNOWN_LOCATION);
  
+   if (!parser->in_function_body && (inline_p || goto_p))
+     {
+       error_at (first_loc, "asm qualifier outside of function body");
+       inline_p = goto_p = false;
+     }
+ 
    /* Look for the opening `('.  */
    if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN))
      return;
*************** cp_parser_std_attribute (cp_parser *pars
*** 25326,25331 ****
--- 25411,25427 ----
        /* A GNU attribute that takes an identifier in parameter.  */
        attr_flag = id_attr;
  
+     const attribute_spec *as
+       = lookup_attribute_spec (TREE_PURPOSE (attribute));
+     if (as == NULL)
+       {
+ 	/* For unknown attributes, just skip balanced tokens instead of
+ 	   trying to parse the arguments.  */
+ 	for (size_t n = cp_parser_skip_balanced_tokens (parser, 1) - 1; n; --n)
+ 	  cp_lexer_consume_token (parser->lexer);
+ 	return attribute;
+       }
+ 
      vec = cp_parser_parenthesized_expression_list
        (parser, attr_flag, /*cast_p=*/false,
         /*allow_expansion_p=*/true,
*************** cp_parser_constructor_declarator_p (cp_p
*** 26725,26736 ****
  	  /* A parameter declaration begins with a decl-specifier,
  	     which is either the "attribute" keyword, a storage class
  	     specifier, or (usually) a type-specifier.  */
! 	  && !cp_lexer_next_token_is_decl_specifier_keyword (parser->lexer))
  	{
  	  tree type;
  	  tree pushed_scope = NULL_TREE;
  	  unsigned saved_num_template_parameter_lists;
  
  	  /* Names appearing in the type-specifier should be looked up
  	     in the scope of the class.  */
  	  if (current_class_type)
--- 26821,26847 ----
  	  /* A parameter declaration begins with a decl-specifier,
  	     which is either the "attribute" keyword, a storage class
  	     specifier, or (usually) a type-specifier.  */
! 	  && (!cp_lexer_next_token_is_decl_specifier_keyword (parser->lexer)
! 	      /* GNU attributes can actually appear both at the start of
! 		 a parameter and parenthesized declarator.
! 		 S (__attribute__((unused)) int);
! 		 is a constructor, but
! 		 S (__attribute__((unused)) foo) (int);
! 		 is a function declaration.  */
! 	      || (cp_parser_allow_gnu_extensions_p (parser)
! 		  && cp_next_tokens_can_be_gnu_attribute_p (parser))))
  	{
  	  tree type;
  	  tree pushed_scope = NULL_TREE;
  	  unsigned saved_num_template_parameter_lists;
  
+ 	  if (cp_next_tokens_can_be_gnu_attribute_p (parser))
+ 	    {
+ 	      unsigned int n = cp_parser_skip_gnu_attributes_opt (parser, 1);
+ 	      while (--n)
+ 		cp_lexer_consume_token (parser->lexer);
+ 	    }
+ 
  	  /* Names appearing in the type-specifier should be looked up
  	     in the scope of the class.  */
  	  if (current_class_type)
*************** cp_parser_omp_clause_dist_schedule (cp_p
*** 33599,33606 ****
    else if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_COMMA_CLOSE_PAREN))
      goto resync_fail;
  
!   check_no_duplicate_clause (list, OMP_CLAUSE_DIST_SCHEDULE, "dist_schedule",
! 			     location);
    OMP_CLAUSE_CHAIN (c) = list;
    return c;
  
--- 33710,33719 ----
    else if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_COMMA_CLOSE_PAREN))
      goto resync_fail;
  
!   /* check_no_duplicate_clause (list, OMP_CLAUSE_DIST_SCHEDULE,
! 				"dist_schedule", location); */
!   if (omp_find_clause (list, OMP_CLAUSE_DIST_SCHEDULE))
!     warning_at (location, 0, "too many %qs clauses", "dist_schedule");
    OMP_CLAUSE_CHAIN (c) = list;
    return c;
  
*************** cp_parser_omp_declare_reduction_exprs (t
*** 37527,37532 ****
--- 37640,37647 ----
    combiner = cp_parser_expression (parser);
    finish_expr_stmt (combiner);
    block = finish_omp_structured_block (block);
+   if (processing_template_decl)
+     block = build_stmt (input_location, EXPR_STMT, block);
    add_stmt (block);
  
    if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN))
*************** cp_parser_omp_declare_reduction_exprs (t
*** 37629,37634 ****
--- 37744,37751 ----
  
        block = finish_omp_structured_block (block);
        cp_walk_tree (&block, cp_remove_omp_priv_cleanup_stmt, omp_priv, NULL);
+       if (processing_template_decl)
+ 	block = build_stmt (input_location, EXPR_STMT, block);
        add_stmt (block);
  
        if (ctor)
*************** cp_parser_initial_pragma (cp_token *firs
*** 38680,38686 ****
  
    cp_lexer_get_preprocessor_token (NULL, first_token);
    if (cp_parser_pragma_kind (first_token) != PRAGMA_GCC_PCH_PREPROCESS)
!     return;
  
    cp_lexer_get_preprocessor_token (NULL, first_token);
    if (first_token->type == CPP_STRING)
--- 38797,38806 ----
  
    cp_lexer_get_preprocessor_token (NULL, first_token);
    if (cp_parser_pragma_kind (first_token) != PRAGMA_GCC_PCH_PREPROCESS)
!     {
!       c_common_no_more_pch ();
!       return;
!     }
  
    cp_lexer_get_preprocessor_token (NULL, first_token);
    if (first_token->type == CPP_STRING)
diff -Nrcpad gcc-8.3.0/gcc/cp/pt.c gcc-8.4.0/gcc/cp/pt.c
*** gcc-8.3.0/gcc/cp/pt.c	Thu Feb 14 23:14:56 2019
--- gcc-8.4.0/gcc/cp/pt.c	Wed Mar  4 08:30:00 2020
*************** template_class_depth (tree type)
*** 398,403 ****
--- 398,433 ----
    return depth;
  }
  
+ /* Return TRUE if NODE instantiates a template that has arguments of
+    its own, be it directly a primary template or indirectly through a
+    partial specializations.  */
+ static bool
+ instantiates_primary_template_p (tree node)
+ {
+   tree tinfo = get_template_info (node);
+   if (!tinfo)
+     return false;
+ 
+   tree tmpl = TI_TEMPLATE (tinfo);
+   if (PRIMARY_TEMPLATE_P (tmpl))
+     return true;
+ 
+   if (!DECL_TEMPLATE_SPECIALIZATION (tmpl))
+     return false;
+ 
+   /* So now we know we have a specialization, but it could be a full
+      or a partial specialization.  To tell which, compare the depth of
+      its template arguments with those of its context.  */
+ 
+   tree ctxt = DECL_CONTEXT (tmpl);
+   tree ctinfo = get_template_info (ctxt);
+   if (!ctinfo)
+     return true;
+ 
+   return (TMPL_ARGS_DEPTH (TI_ARGS (tinfo))
+ 	  > TMPL_ARGS_DEPTH (TI_ARGS (ctinfo)));
+ }
+ 
  /* Subroutine of maybe_begin_member_template_processing.
     Returns true if processing DECL needs us to push template parms.  */
  
*************** make_pack_expansion (tree arg, tsubst_fl
*** 3944,3950 ****
           class expansion.  */
        ppd.visited = new hash_set<tree>;
        ppd.parameter_packs = &parameter_packs;
!       ppd.type_pack_expansion_p = true;
        gcc_assert (TYPE_P (TREE_PURPOSE (arg)));
        cp_walk_tree (&TREE_PURPOSE (arg), &find_parameter_packs_r, 
                      &ppd, ppd.visited);
--- 3974,3980 ----
           class expansion.  */
        ppd.visited = new hash_set<tree>;
        ppd.parameter_packs = &parameter_packs;
!       ppd.type_pack_expansion_p = false;
        gcc_assert (TYPE_P (TREE_PURPOSE (arg)));
        cp_walk_tree (&TREE_PURPOSE (arg), &find_parameter_packs_r, 
                      &ppd, ppd.visited);
*************** tsubst_friend_class (tree friend_tmpl, t
*** 10550,10556 ****
    if (TREE_CODE (context) == NAMESPACE_DECL)
      push_nested_namespace (context);
    else
!     push_nested_class (context);
  
    tmpl = lookup_name_real (DECL_NAME (friend_tmpl), /*prefer_type=*/false,
  			   /*non_class=*/false, /*block_p=*/false,
--- 10580,10589 ----
    if (TREE_CODE (context) == NAMESPACE_DECL)
      push_nested_namespace (context);
    else
!     {
!       context = tsubst (context, args, tf_error, NULL_TREE);
!       push_nested_class (context);
!     }
  
    tmpl = lookup_name_real (DECL_NAME (friend_tmpl), /*prefer_type=*/false,
  			   /*non_class=*/false, /*block_p=*/false,
*************** fold_expression (tree t, tree left, tree
*** 11732,11739 ****
      {
      case COMPOUND_EXPR:
        return build_x_compound_expr (input_location, left, right, complain);
-     case DOTSTAR_EXPR:
-       return build_m_component_ref (left, right, complain);
      default:
        return build_x_binary_op (input_location, code,
                                  left, TREE_CODE (left),
--- 11765,11770 ----
*************** tsubst_function_decl (tree t, tree args,
*** 13023,13028 ****
--- 13054,13064 ----
  	set_constraints (r, ci);
        }
  
+   if (DECL_FRIEND_P (t) && DECL_FRIEND_CONTEXT (t))
+     SET_DECL_FRIEND_CONTEXT (r,
+ 			     tsubst (DECL_FRIEND_CONTEXT (t),
+ 				     args, complain, in_decl));
+ 
    /* Set up the DECL_TEMPLATE_INFO for R.  There's no need to do
       this in the special friend case mentioned above where
       GEN_TMPL is NULL.  */
*************** tsubst_function_decl (tree t, tree args,
*** 13084,13094 ****
  	   && !grok_op_properties (r, /*complain=*/true))
      return error_mark_node;
  
-   if (DECL_FRIEND_P (t) && DECL_FRIEND_CONTEXT (t))
-     SET_DECL_FRIEND_CONTEXT (r,
- 			     tsubst (DECL_FRIEND_CONTEXT (t),
- 				     args, complain, in_decl));
- 
    /* Possibly limit visibility based on template args.  */
    DECL_VISIBILITY (r) = VISIBILITY_DEFAULT;
    if (DECL_VISIBILITY_SPECIFIED (t))
--- 13120,13125 ----
*************** tsubst_decl (tree t, tree args, tsubst_f
*** 13360,13366 ****
  
                  /* Zero-length parameter packs are boring. Just substitute
                     into the chain.  */
!                 if (len == 0)
                    RETURN (tsubst (TREE_CHAIN (t), args, complain,
  				  TREE_CHAIN (t)));
                }
--- 13391,13397 ----
  
                  /* Zero-length parameter packs are boring. Just substitute
                     into the chain.  */
! 		if (len == 0 && !cp_unevaluated_operand)
                    RETURN (tsubst (TREE_CHAIN (t), args, complain,
  				  TREE_CHAIN (t)));
                }
*************** tsubst_copy_and_build (tree t,
*** 18797,18802 ****
--- 18828,18839 ----
  	   looked up by digest_init.  */
  	process_index_p = !(type && MAYBE_CLASS_TYPE_P (type));
  
+ 	if (null_member_pointer_value_p (t))
+ 	  {
+ 	    gcc_assert (same_type_p (type, TREE_TYPE (t)));
+ 	    RETURN (t);
+ 	  }
+ 
  	n = vec_safe_copy (CONSTRUCTOR_ELTS (t));
          newlen = vec_safe_length (n);
  	FOR_EACH_VEC_SAFE_ELT (n, idx, ce)
*************** tsubst_copy_and_build (tree t,
*** 18890,18906 ****
        {
  	tree r = tsubst_copy (t, args, complain, in_decl);
  	/* ??? We're doing a subset of finish_id_expression here.  */
! 	if (VAR_P (r)
! 	    && !processing_template_decl
! 	    && !cp_unevaluated_operand
! 	    && (TREE_STATIC (r) || DECL_EXTERNAL (r))
! 	    && CP_DECL_THREAD_LOCAL_P (r))
! 	  {
! 	    if (tree wrap = get_tls_wrapper_fn (r))
! 	      /* Replace an evaluated use of the thread_local variable with
! 		 a call to its wrapper.  */
! 	      r = build_cxx_call (wrap, 0, NULL, tf_warning_or_error);
! 	  }
  	else if (outer_automatic_var_p (r))
  	  r = process_outer_var_ref (r, complain);
  
--- 18927,18936 ----
        {
  	tree r = tsubst_copy (t, args, complain, in_decl);
  	/* ??? We're doing a subset of finish_id_expression here.  */
! 	if (tree wrap = maybe_get_tls_wrapper_call (r))
! 	  /* Replace an evaluated use of the thread_local variable with
! 	     a call to its wrapper.  */
! 	  r = wrap;
  	else if (outer_automatic_var_p (r))
  	  r = process_outer_var_ref (r, complain);
  
*************** type_unification_real (tree tparms,
*** 20465,20472 ****
  	    }
  	  else
  	    {
  	      tree substed = NULL_TREE;
! 	      if (saw_undeduced == 1 && processing_template_decl == 0)
  		{
  		  /* First instatiate in template context, in case we still
  		     depend on undeduced template parameters.  */
--- 20495,20509 ----
  	    }
  	  else
  	    {
+ 	      /* Even if the call is happening in template context, getting
+ 		 here means it's non-dependent, and a default argument is
+ 		 considered a separate definition under [temp.decls], so we can
+ 		 do this substitution without processing_template_decl.  This
+ 		 is important if the default argument contains something that
+ 		 might be instantiation-dependent like access (87480).  */
+ 	      processing_template_decl_sentinel s;
  	      tree substed = NULL_TREE;
! 	      if (saw_undeduced == 1)
  		{
  		  /* First instatiate in template context, in case we still
  		     depend on undeduced template parameters.  */
*************** most_specialized_partial_spec (tree targ
*** 22982,22987 ****
--- 23019,23029 ----
        args = INNERMOST_TEMPLATE_ARGS (args);
      }
  
+   /* The caller hasn't called push_to_top_level yet, but we need
+      get_partial_spec_bindings to be done in non-template context so that we'll
+      fully resolve everything.  */
+   processing_template_decl_sentinel ptds;
+ 
    for (t = DECL_TEMPLATE_SPECIALIZATIONS (main_tmpl); t; t = TREE_CHAIN (t))
      {
        tree spec_args;
*************** type_dependent_expression_p (tree expres
*** 25169,25175 ****
  	 that come from the template-id; the template arguments for the
  	 enclosing class do not make it type-dependent unless they are used in
  	 the type of the decl.  */
!       if (PRIMARY_TEMPLATE_P (DECL_TI_TEMPLATE (expression))
  	  && (any_dependent_template_arguments_p
  	      (INNERMOST_TEMPLATE_ARGS (DECL_TI_ARGS (expression)))))
  	return true;
--- 25211,25217 ----
  	 that come from the template-id; the template arguments for the
  	 enclosing class do not make it type-dependent unless they are used in
  	 the type of the decl.  */
!       if (instantiates_primary_template_p (expression)
  	  && (any_dependent_template_arguments_p
  	      (INNERMOST_TEMPLATE_ARGS (DECL_TI_ARGS (expression)))))
  	return true;
*************** make_auto (void)
*** 25998,26005 ****
  tree
  make_template_placeholder (tree tmpl)
  {
!   tree t = make_auto_1 (DECL_NAME (tmpl), true);
    CLASS_PLACEHOLDER_TEMPLATE (t) = tmpl;
    return t;
  }
  
--- 26040,26049 ----
  tree
  make_template_placeholder (tree tmpl)
  {
!   tree t = make_auto_1 (DECL_NAME (tmpl), false);
    CLASS_PLACEHOLDER_TEMPLATE (t) = tmpl;
+   /* Our canonical type depends on the placeholder.  */
+   TYPE_CANONICAL (t) = canonical_type_parameter (t);
    return t;
  }
  
*************** do_class_deduction (tree ptype, tree tmp
*** 26534,26539 ****
--- 26578,26586 ----
  	error ("non-class template %qT used without template arguments", tmpl);
        return error_mark_node;
      }
+   if (init && TREE_TYPE (init) == ptype)
+     /* Using the template parm as its own argument.  */
+     return ptype;
  
    tree type = TREE_TYPE (tmpl);
  
*************** do_class_deduction (tree ptype, tree tmp
*** 26601,26607 ****
  
    tree outer_args = NULL_TREE;
    if (DECL_CLASS_SCOPE_P (tmpl)
!       && CLASSTYPE_TEMPLATE_INFO (DECL_CONTEXT (tmpl)))
      {
        outer_args = CLASSTYPE_TI_ARGS (DECL_CONTEXT (tmpl));
        type = TREE_TYPE (most_general_template (tmpl));
--- 26648,26654 ----
  
    tree outer_args = NULL_TREE;
    if (DECL_CLASS_SCOPE_P (tmpl)
!       && CLASSTYPE_TEMPLATE_INSTANTIATION (DECL_CONTEXT (tmpl)))
      {
        outer_args = CLASSTYPE_TI_ARGS (DECL_CONTEXT (tmpl));
        type = TREE_TYPE (most_general_template (tmpl));
diff -Nrcpad gcc-8.3.0/gcc/cp/semantics.c gcc-8.4.0/gcc/cp/semantics.c
*** gcc-8.3.0/gcc/cp/semantics.c	Thu Feb  7 14:40:13 2019
--- gcc-8.4.0/gcc/cp/semantics.c	Wed Mar  4 08:30:00 2020
*************** maybe_convert_cond (tree cond)
*** 645,654 ****
      return NULL_TREE;
  
    /* Wait until we instantiate templates before doing conversion.  */
!   if (processing_template_decl)
      return cond;
  
!   if (warn_sequence_point)
      verify_sequence_points (cond);
  
    /* Do the conversion.  */
--- 645,657 ----
      return NULL_TREE;
  
    /* Wait until we instantiate templates before doing conversion.  */
!   if (processing_template_decl
!       && (type_dependent_expression_p (cond)
! 	  /* For GCC 8 only convert non-dependent condition in a lambda.  */
! 	  || !current_lambda_expr ()))
      return cond;
  
!   if (warn_sequence_point && !processing_template_decl)
      verify_sequence_points (cond);
  
    /* Do the conversion.  */
*************** finish_non_static_data_member (tree decl
*** 1841,1847 ****
  
    if (current_class_ptr)
      TREE_USED (current_class_ptr) = 1;
!   if (processing_template_decl && !qualifying_scope)
      {
        tree type = TREE_TYPE (decl);
  
--- 1844,1850 ----
  
    if (current_class_ptr)
      TREE_USED (current_class_ptr) = 1;
!   if (processing_template_decl)
      {
        tree type = TREE_TYPE (decl);
  
*************** finish_non_static_data_member (tree decl
*** 1862,1878 ****
  	  type = cp_build_qualified_type (type, quals);
  	}
  
!       ret = (convert_from_reference
! 	      (build_min (COMPONENT_REF, type, object, decl, NULL_TREE)));
      }
    /* If PROCESSING_TEMPLATE_DECL is nonzero here, then
!      QUALIFYING_SCOPE is also non-null.  Wrap this in a SCOPE_REF
!      for now.  */
!   else if (processing_template_decl)
!     ret = build_qualified_name (TREE_TYPE (decl),
! 				qualifying_scope,
! 				decl,
! 				/*template_p=*/false);
    else
      {
        tree access_type = TREE_TYPE (object);
--- 1865,1880 ----
  	  type = cp_build_qualified_type (type, quals);
  	}
  
!       if (qualifying_scope)
! 	/* Wrap this in a SCOPE_REF for now.  */
! 	ret = build_qualified_name (type, qualifying_scope, decl,
! 				    /*template_p=*/false);
!       else
! 	ret = (convert_from_reference
! 	       (build_min (COMPONENT_REF, type, object, decl, NULL_TREE)));
      }
    /* If PROCESSING_TEMPLATE_DECL is nonzero here, then
!      QUALIFYING_SCOPE is also non-null.  */
    else
      {
        tree access_type = TREE_TYPE (object);
*************** finish_qualified_id_expr (tree qualifyin
*** 2099,2104 ****
--- 2101,2114 ----
  	expr = build_offset_ref (qualifying_class, expr, /*address_p=*/false,
  				 complain);
      }
+   else if (!template_p
+ 	   && TREE_CODE (expr) == TEMPLATE_DECL
+ 	   && !DECL_FUNCTION_TEMPLATE_P (expr))
+     {
+       if (complain & tf_error)
+ 	error ("%qE missing template arguments", expr);
+       return error_mark_node;
+     }
    else
      {
        /* In a template, return a SCOPE_REF for most qualified-ids
*************** finish_qualified_id_expr (tree qualifyin
*** 2114,2119 ****
--- 2124,2131 ----
  	expr = build_qualified_name (TREE_TYPE (expr),
  				     qualifying_class, expr,
  				     template_p);
+       else if (tree wrap = maybe_get_tls_wrapper_call (expr))
+ 	expr = wrap;
  
        expr = convert_from_reference (expr);
      }
*************** finish_id_expression (tree id_expression
*** 3709,3726 ****
  	  *non_integral_constant_expression_p = true;
  	}
  
!       tree wrap;
!       if (VAR_P (decl)
! 	  && !cp_unevaluated_operand
! 	  && !processing_template_decl
! 	  && (TREE_STATIC (decl) || DECL_EXTERNAL (decl))
! 	  && CP_DECL_THREAD_LOCAL_P (decl)
! 	  && (wrap = get_tls_wrapper_fn (decl)))
! 	{
! 	  /* Replace an evaluated use of the thread_local variable with
! 	     a call to its wrapper.  */
! 	  decl = build_cxx_call (wrap, 0, NULL, tf_warning_or_error);
! 	}
        else if (TREE_CODE (decl) == TEMPLATE_ID_EXPR
  	       && !dependent_p
  	       && variable_template_p (TREE_OPERAND (decl, 0)))
--- 3721,3730 ----
  	  *non_integral_constant_expression_p = true;
  	}
  
!       if (tree wrap = maybe_get_tls_wrapper_call (decl))
! 	/* Replace an evaluated use of the thread_local variable with
! 	   a call to its wrapper.  */
! 	decl = wrap;
        else if (TREE_CODE (decl) == TEMPLATE_ID_EXPR
  	       && !dependent_p
  	       && variable_template_p (TREE_OPERAND (decl, 0)))
*************** expand_or_defer_fn_1 (tree fn)
*** 4229,4235 ****
        if (DECL_INTERFACE_KNOWN (fn))
  	/* We've already made a decision as to how this function will
  	   be handled.  */;
!       else if (!at_eof)
  	tentative_decl_linkage (fn);
        else
  	import_export_decl (fn);
--- 4233,4239 ----
        if (DECL_INTERFACE_KNOWN (fn))
  	/* We've already made a decision as to how this function will
  	   be handled.  */;
!       else if (!at_eof || DECL_OMP_DECLARE_REDUCTION_P (fn))
  	tentative_decl_linkage (fn);
        else
  	import_export_decl (fn);
*************** expand_or_defer_fn_1 (tree fn)
*** 4240,4245 ****
--- 4244,4250 ----
  	 be emitted; there may be callers in other DLLs.  */
        if (DECL_DECLARED_INLINE_P (fn)
  	  && !DECL_REALLY_EXTERN (fn)
+ 	  && !DECL_OMP_DECLARE_REDUCTION_P (fn)
  	  && (flag_keep_inline_functions
  	      || (flag_keep_inline_dllexport
  		  && lookup_attribute ("dllexport", DECL_ATTRIBUTES (fn)))))
*************** expand_or_defer_fn_1 (tree fn)
*** 4265,4270 ****
--- 4270,4283 ----
    /* There's no reason to do any of the work here if we're only doing
       semantic analysis; this code just generates RTL.  */
    if (flag_syntax_only)
+     {
+       /* Pretend that this function has been written out so that we don't try
+ 	 to expand it again.  */
+       TREE_ASM_WRITTEN (fn) = 1;
+       return false;
+     }
+ 
+   if (DECL_OMP_DECLARE_REDUCTION_P (fn))
      return false;
  
    return true;
*************** finish_omp_clauses (tree clauses, enum c
*** 7305,7311 ****
  	  t = require_complete_type (t);
  	  if (t == error_mark_node)
  	    remove = true;
! 	  else if (TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE
  		   && !complete_type_or_else (TREE_TYPE (TREE_TYPE (t)), t))
  	    remove = true;
  	}
--- 7318,7325 ----
  	  t = require_complete_type (t);
  	  if (t == error_mark_node)
  	    remove = true;
! 	  else if (!processing_template_decl
! 		   && TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE
  		   && !complete_type_or_else (TREE_TYPE (TREE_TYPE (t)), t))
  	    remove = true;
  	}
*************** finish_omp_atomic (enum tree_code code,
*** 8452,8457 ****
--- 8466,8476 ----
        stmt = build2 (OMP_ATOMIC, void_type_node, integer_zero_node, stmt);
        OMP_ATOMIC_SEQ_CST (stmt) = seq_cst;
      }
+ 
+   /* Avoid -Wunused-value warnings here, the whole construct has side-effects
+      and even if it might be wrapped from fold-const.c or c-omp.c wrapped
+      in some tree that appears to be unused, the value is not unused.  */
+   warning_sentinel w (warn_unused_value);
    finish_expr_stmt (stmt);
  }
  
diff -Nrcpad gcc-8.3.0/gcc/cp/tree.c gcc-8.4.0/gcc/cp/tree.c
*** gcc-8.3.0/gcc/cp/tree.c	Sun Jan 27 20:31:37 2019
--- gcc-8.4.0/gcc/cp/tree.c	Wed Mar  4 08:30:00 2020
*************** replace_placeholders_r (tree* t, int* wa
*** 3192,3197 ****
--- 3192,3202 ----
  	    tree type = TREE_TYPE (*valp);
  	    tree subob = obj;
  
+ 	    /* Elements with RANGE_EXPR index shouldn't have any
+ 	       placeholders in them.  */
+ 	    if (ce->index && TREE_CODE (ce->index) == RANGE_EXPR)
+ 	      continue;
+ 
  	    if (TREE_CODE (*valp) == CONSTRUCTOR
  		&& AGGREGATE_TYPE_P (type))
  	      {
diff -Nrcpad gcc-8.3.0/gcc/cp/typeck.c gcc-8.4.0/gcc/cp/typeck.c
*** gcc-8.3.0/gcc/cp/typeck.c	Thu Feb  7 14:33:51 2019
--- gcc-8.4.0/gcc/cp/typeck.c	Wed Mar  4 08:30:00 2020
*************** along with GCC; see the file COPYING3.
*** 40,45 ****
--- 40,46 ----
  #include "stringpool.h"
  #include "attribs.h"
  #include "asan.h"
+ #include "gimplify.h"
  
  static tree cp_build_addr_expr_strict (tree, tsubst_flags_t);
  static tree cp_build_function_call (tree, tree, tsubst_flags_t);
*************** structural_comptypes (tree t1, tree t2,
*** 1383,1388 ****
--- 1384,1394 ----
  	 template parameters set, they can't be equal.  */
        if (!comp_template_parms_position (t1, t2))
  	return false;
+       /* If T1 and T2 don't represent the same class template deduction,
+          they aren't equal.  */
+       if (CLASS_PLACEHOLDER_TEMPLATE (t1)
+ 	  != CLASS_PLACEHOLDER_TEMPLATE (t2))
+ 	return false;
        /* Constrained 'auto's are distinct from parms that don't have the same
  	 constraints.  */
        if (!equivalent_placeholder_constraints (t1, t2))
*************** build_class_member_access_expr (cp_expr
*** 2437,2442 ****
--- 2443,2454 ----
        /* A static data member.  */
        result = member;
        mark_exp_read (object);
+ 
+       if (tree wrap = maybe_get_tls_wrapper_call (result))
+ 	/* Replace an evaluated use of the thread_local variable with
+ 	   a call to its wrapper.  */
+ 	result = wrap;
+ 
        /* If OBJECT has side-effects, they are supposed to occur.  */
        if (TREE_SIDE_EFFECTS (object))
  	result = build2 (COMPOUND_EXPR, TREE_TYPE (result), object, result);
*************** cp_truthvalue_conversion (tree expr)
*** 5747,5764 ****
      return c_common_truthvalue_conversion (input_location, expr);
  }
  
! /* Just like cp_truthvalue_conversion, but we want a CLEANUP_POINT_EXPR.  */
  
  tree
  condition_conversion (tree expr)
  {
    tree t;
-   /* Anything that might happen in a template should go through
-      maybe_convert_cond.  */
-   gcc_assert (!processing_template_decl);
    t = perform_implicit_conversion_flags (boolean_type_node, expr,
  					 tf_warning_or_error, LOOKUP_NORMAL);
!   t = fold_build_cleanup_point_expr (boolean_type_node, t);
    return t;
  }
  
--- 5759,5775 ----
      return c_common_truthvalue_conversion (input_location, expr);
  }
  
! /* Just like cp_truthvalue_conversion, but we want a CLEANUP_POINT_EXPR.  This
!    is a low-level function; most callers should use maybe_convert_cond.  */
  
  tree
  condition_conversion (tree expr)
  {
    tree t;
    t = perform_implicit_conversion_flags (boolean_type_node, expr,
  					 tf_warning_or_error, LOOKUP_NORMAL);
!   if (!processing_template_decl)
!     t = fold_build_cleanup_point_expr (boolean_type_node, t);
    return t;
  }
  
*************** cp_build_modify_expr (location_t loc, tr
*** 7983,7990 ****
  	/* Produce (a ? (b = rhs) : (c = rhs))
  	   except that the RHS goes through a save-expr
  	   so the code to compute it is only emitted once.  */
- 	tree cond;
- 
  	if (VOID_TYPE_P (TREE_TYPE (rhs)))
  	  {
  	    if (complain & tf_error)
--- 7994,7999 ----
*************** cp_build_modify_expr (location_t loc, tr
*** 7999,8011 ****
  	if (!lvalue_or_else (lhs, lv_assign, complain))
  	  return error_mark_node;
  
! 	cond = build_conditional_expr
! 	  (input_location, TREE_OPERAND (lhs, 0),
! 	   cp_build_modify_expr (loc, TREE_OPERAND (lhs, 1),
! 				 modifycode, rhs, complain),
! 	   cp_build_modify_expr (loc, TREE_OPERAND (lhs, 2),
! 				 modifycode, rhs, complain),
!            complain);
  
  	if (cond == error_mark_node)
  	  return cond;
--- 8008,8028 ----
  	if (!lvalue_or_else (lhs, lv_assign, complain))
  	  return error_mark_node;
  
! 	tree op1 = cp_build_modify_expr (loc, TREE_OPERAND (lhs, 1),
! 					 modifycode, rhs, complain);
! 	/* When sanitizing undefined behavior, even when rhs doesn't need
! 	   stabilization at this point, the sanitization might add extra
! 	   SAVE_EXPRs in there and so make sure there is no tree sharing
! 	   in the rhs, otherwise those SAVE_EXPRs will have initialization
! 	   only in one of the two branches.  */
! 	if (sanitize_flags_p (SANITIZE_UNDEFINED
! 			      | SANITIZE_UNDEFINED_NONDEFAULT))
! 	  rhs = unshare_expr (rhs);
! 	tree op2 = cp_build_modify_expr (loc, TREE_OPERAND (lhs, 2),
! 					 modifycode, rhs, complain);
! 	tree cond = build_conditional_expr (input_location,
! 					    TREE_OPERAND (lhs, 0), op1, op2,
! 					    complain);
  
  	if (cond == error_mark_node)
  	  return cond;
*************** maybe_warn_about_returning_address_of_lo
*** 9092,9099 ****
  	  tree base = DECL_DECOMP_BASE (whats_returned);
  	  if (TREE_CODE (TREE_TYPE (base)) == REFERENCE_TYPE)
  	    {
! 	      tree init = DECL_INITIAL (base);
! 	      return maybe_warn_about_returning_address_of_local (init);
  	    }
  	}
        if (TREE_CODE (valtype) == REFERENCE_TYPE)
--- 9109,9118 ----
  	  tree base = DECL_DECOMP_BASE (whats_returned);
  	  if (TREE_CODE (TREE_TYPE (base)) == REFERENCE_TYPE)
  	    {
! 	      if (tree init = DECL_INITIAL (base))
! 		return maybe_warn_about_returning_address_of_local (init);
! 	      else
! 		return false;
  	    }
  	}
        if (TREE_CODE (valtype) == REFERENCE_TYPE)
diff -Nrcpad gcc-8.3.0/gcc/cp/typeck2.c gcc-8.4.0/gcc/cp/typeck2.c
*** gcc-8.3.0/gcc/cp/typeck2.c	Wed Jun 27 03:06:43 2018
--- gcc-8.4.0/gcc/cp/typeck2.c	Wed Mar  4 08:30:00 2020
*************** digest_init_r (tree type, tree init, int
*** 1142,1149 ****
      {
        tree elt = CONSTRUCTOR_ELT (init, 0)->value;
        if (reference_related_p (type, TREE_TYPE (elt)))
! 	/* We should have fixed this in reshape_init.  */
! 	gcc_unreachable ();
      }
  
    if (BRACE_ENCLOSED_INITIALIZER_P (init)
--- 1142,1170 ----
      {
        tree elt = CONSTRUCTOR_ELT (init, 0)->value;
        if (reference_related_p (type, TREE_TYPE (elt)))
! 	{
! 	  /* In C++17, aggregates can have bases, thus participate in
! 	     aggregate initialization.  In the following case:
! 
! 	       struct B { int c; };
! 	       struct D : B { };
! 	       D d{{D{{42}}}};
! 
! 	    there's an extra set of braces, so the D temporary initializes
! 	    the first element of d, which is the B base subobject.  The base
! 	    of type B is copy-initialized from the D temporary, causing
! 	    object slicing.  */
! 	  tree field = next_initializable_field (TYPE_FIELDS (type));
! 	  if (field && DECL_FIELD_IS_BASE (field))
! 	    {
! 	      if (warning_at (loc, 0, "initializing a base class of type %qT "
! 			      "results in object slicing", TREE_TYPE (field)))
! 		inform (loc, "remove %<{ }%> around initializer");
! 	    }
! 	  else
! 	    /* We should have fixed this in reshape_init.  */
! 	    gcc_unreachable ();
! 	}
      }
  
    if (BRACE_ENCLOSED_INITIALIZER_P (init)
*************** digest_nsdmi_init (tree decl, tree init,
*** 1203,1208 ****
--- 1224,1231 ----
    gcc_assert (TREE_CODE (decl) == FIELD_DECL);
  
    tree type = TREE_TYPE (decl);
+   if (DECL_BIT_FIELD_TYPE (decl))
+     type = DECL_BIT_FIELD_TYPE (decl);
    int flags = LOOKUP_IMPLICIT;
    if (DIRECT_LIST_INIT_P (init))
      flags = LOOKUP_NORMAL;
*************** process_init_constructor_record (tree ty
*** 1515,1526 ****
  	      else
  		return PICFLAG_ERRONEOUS;
  	    }
  
  	  /* Warn when some struct elements are implicitly initialized
! 	     to zero.  However, avoid issuing the warning for flexible
! 	     array members since they need not have any elements.  */
! 	  if ((TREE_CODE (fldtype) != ARRAY_TYPE || TYPE_DOMAIN (fldtype))
! 	      && (complain & tf_warning)
  	      && !EMPTY_CONSTRUCTOR_P (init))
  	    warning (OPT_Wmissing_field_initializers,
  		     "missing initializer for member %qD", field);
--- 1538,1552 ----
  	      else
  		return PICFLAG_ERRONEOUS;
  	    }
+ 	  /* Do nothing for flexible array members since they need not have any
+ 	     elements.  Don't worry about 'skipped' because a flexarray has to
+ 	     be the last field.  */
+ 	  else if (TREE_CODE (fldtype) == ARRAY_TYPE && !TYPE_DOMAIN (fldtype))
+ 	    continue;
  
  	  /* Warn when some struct elements are implicitly initialized
! 	     to zero.  */
! 	  if ((complain & tf_warning)
  	      && !EMPTY_CONSTRUCTOR_P (init))
  	    warning (OPT_Wmissing_field_initializers,
  		     "missing initializer for member %qD", field);
*************** process_init_constructor_record (tree ty
*** 1538,1543 ****
--- 1564,1576 ----
  	    }
  	}
  
+       if (DECL_SIZE (field) && integer_zerop (DECL_SIZE (field))
+ 	  && !TREE_SIDE_EFFECTS (next))
+ 	/* Don't add trivial initialization of an empty base/field to the
+ 	   constructor, as they might not be ordered the way the back-end
+ 	   expects.  */
+ 	continue;
+ 
        /* If this is a bitfield, now convert to the lowered type.  */
        if (type != TREE_TYPE (field))
  	next = cp_convert_and_check (TREE_TYPE (field), next, complain);
diff -Nrcpad gcc-8.3.0/gcc/cp/vtable-class-hierarchy.c gcc-8.4.0/gcc/cp/vtable-class-hierarchy.c
*** gcc-8.3.0/gcc/cp/vtable-class-hierarchy.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/cp/vtable-class-hierarchy.c	Wed Mar  4 08:30:00 2020
*************** vtv_generate_init_routine (void)
*** 1191,1198 ****
        gimplify_function_tree (vtv_fndecl);
        cgraph_node::add_new_function (vtv_fndecl, false);
  
-       symtab->process_new_functions ();
- 
        if (flag_vtable_verify == VTV_PREINIT_PRIORITY && !TARGET_PECOFF)
          assemble_vtv_preinit_initializer (vtv_fndecl);
  
--- 1191,1196 ----
diff -Nrcpad gcc-8.3.0/gcc/dce.c gcc-8.4.0/gcc/dce.c
*** gcc-8.3.0/gcc/dce.c	Thu Feb 14 13:57:52 2019
--- gcc-8.4.0/gcc/dce.c	Wed Mar  4 08:30:00 2020
*************** along with GCC; see the file COPYING3.
*** 35,40 ****
--- 35,41 ----
  #include "valtrack.h"
  #include "tree-pass.h"
  #include "dbgcnt.h"
+ #include "rtl-iter.h"
  
  
  /* -------------------------------------------------------------------------
*************** deletable_insn_p_1 (rtx body)
*** 86,91 ****
--- 87,118 ----
      }
  }
  
+ /* Don't delete calls that may throw if we cannot do so.  */
+ 
+ static bool
+ can_delete_call (rtx_insn *insn)
+ {
+   if (cfun->can_delete_dead_exceptions && can_alter_cfg)
+     return true;
+   if (!insn_nothrow_p (insn))
+     return false;
+   if (can_alter_cfg)
+     return true;
+   /* If we can't alter cfg, even when the call can't throw exceptions, it
+      might have EDGE_ABNORMAL_CALL edges and so we shouldn't delete such
+      calls.  */
+   gcc_assert (CALL_P (insn));
+   if (BLOCK_FOR_INSN (insn) && BB_END (BLOCK_FOR_INSN (insn)) == insn)
+     {
+       edge e;
+       edge_iterator ei;
+ 
+       FOR_EACH_EDGE (e, ei, BLOCK_FOR_INSN (insn)->succs)
+ 	if ((e->flags & EDGE_ABNORMAL_CALL) != 0)
+ 	  return false;
+     }
+   return true;
+ }
  
  /* Return true if INSN is a normal instruction that can be deleted by
     the DCE pass.  */
*************** deletable_insn_p (rtx_insn *insn, bool f
*** 110,117 ****
        && (RTL_CONST_OR_PURE_CALL_P (insn)
  	  && !RTL_LOOPING_CONST_OR_PURE_CALL_P (insn))
        /* Don't delete calls that may throw if we cannot do so.  */
!       && ((cfun->can_delete_dead_exceptions && can_alter_cfg)
! 	  || insn_nothrow_p (insn)))
      return find_call_stack_args (as_a <rtx_call_insn *> (insn), false,
  				 fast, arg_stores);
  
--- 137,143 ----
        && (RTL_CONST_OR_PURE_CALL_P (insn)
  	  && !RTL_LOOPING_CONST_OR_PURE_CALL_P (insn))
        /* Don't delete calls that may throw if we cannot do so.  */
!       && can_delete_call (insn))
      return find_call_stack_args (as_a <rtx_call_insn *> (insn), false,
  				 fast, arg_stores);
  
*************** mark_insn (rtx_insn *insn, bool fast)
*** 204,211 ****
  	  && !SIBLING_CALL_P (insn)
  	  && (RTL_CONST_OR_PURE_CALL_P (insn)
  	      && !RTL_LOOPING_CONST_OR_PURE_CALL_P (insn))
! 	  && ((cfun->can_delete_dead_exceptions && can_alter_cfg)
! 	      || insn_nothrow_p (insn)))
  	find_call_stack_args (as_a <rtx_call_insn *> (insn), true, fast, NULL);
      }
  }
--- 230,236 ----
  	  && !SIBLING_CALL_P (insn)
  	  && (RTL_CONST_OR_PURE_CALL_P (insn)
  	      && !RTL_LOOPING_CONST_OR_PURE_CALL_P (insn))
! 	  && can_delete_call (insn))
  	find_call_stack_args (as_a <rtx_call_insn *> (insn), true, fast, NULL);
      }
  }
*************** check_argument_store (HOST_WIDE_INT size
*** 265,270 ****
--- 290,389 ----
    return true;
  }
  
+ /* If MEM has sp address, return 0, if it has sp + const address,
+    return that const, if it has reg address where reg is set to sp + const
+    and FAST is false, return const, otherwise return
+    INTTYPE_MINUMUM (HOST_WIDE_INT).  */
+ 
+ static HOST_WIDE_INT
+ sp_based_mem_offset (rtx_call_insn *call_insn, const_rtx mem, bool fast)
+ {
+   HOST_WIDE_INT off = 0;
+   rtx addr = XEXP (mem, 0);
+   if (GET_CODE (addr) == PLUS
+       && REG_P (XEXP (addr, 0))
+       && CONST_INT_P (XEXP (addr, 1)))
+     {
+       off = INTVAL (XEXP (addr, 1));
+       addr = XEXP (addr, 0);
+     }
+   if (addr == stack_pointer_rtx)
+     return off;
+ 
+   if (!REG_P (addr) || fast)
+     return INTTYPE_MINIMUM (HOST_WIDE_INT);
+ 
+   /* If not fast, use chains to see if addr wasn't set to sp + offset.  */
+   df_ref use;
+   FOR_EACH_INSN_USE (use, call_insn)
+   if (rtx_equal_p (addr, DF_REF_REG (use)))
+     break;
+ 
+   if (use == NULL)
+     return INTTYPE_MINIMUM (HOST_WIDE_INT);
+ 
+   struct df_link *defs;
+   for (defs = DF_REF_CHAIN (use); defs; defs = defs->next)
+     if (! DF_REF_IS_ARTIFICIAL (defs->ref))
+       break;
+ 
+   if (defs == NULL)
+     return INTTYPE_MINIMUM (HOST_WIDE_INT);
+ 
+   rtx set = single_set (DF_REF_INSN (defs->ref));
+   if (!set)
+     return INTTYPE_MINIMUM (HOST_WIDE_INT);
+ 
+   if (GET_CODE (SET_SRC (set)) != PLUS
+       || XEXP (SET_SRC (set), 0) != stack_pointer_rtx
+       || !CONST_INT_P (XEXP (SET_SRC (set), 1)))
+     return INTTYPE_MINIMUM (HOST_WIDE_INT);
+ 
+   off += INTVAL (XEXP (SET_SRC (set), 1));
+   return off;
+ }
+ 
+ /* Data for check_argument_load called via note_uses.  */
+ struct check_argument_load_data {
+   bitmap sp_bytes;
+   HOST_WIDE_INT min_sp_off, max_sp_off;
+   rtx_call_insn *call_insn;
+   bool fast;
+   bool load_found;
+ };
+ 
+ /* Helper function for find_call_stack_args.  Check if there are
+    any loads from the argument slots in between the const/pure call
+    and store to the argument slot, set LOAD_FOUND if any is found.  */
+ 
+ static void
+ check_argument_load (rtx *loc, void *data)
+ {
+   struct check_argument_load_data *d
+     = (struct check_argument_load_data *) data;
+   subrtx_iterator::array_type array;
+   FOR_EACH_SUBRTX (iter, array, *loc, NONCONST)
+     {
+       const_rtx mem = *iter;
+       HOST_WIDE_INT size;
+       if (MEM_P (mem)
+ 	  && MEM_SIZE_KNOWN_P (mem)
+ 	  && MEM_SIZE (mem).is_constant (&size))
+ 	{
+ 	  HOST_WIDE_INT off = sp_based_mem_offset (d->call_insn, mem, d->fast);
+ 	  if (off != INTTYPE_MINIMUM (HOST_WIDE_INT)
+ 	      && off < d->max_sp_off
+ 	      && off + size > d->min_sp_off)
+ 	    for (HOST_WIDE_INT byte = MAX (off, d->min_sp_off);
+ 		 byte < MIN (off + size, d->max_sp_off); byte++)
+ 	      if (bitmap_bit_p (d->sp_bytes, byte - d->min_sp_off))
+ 		{
+ 		  d->load_found = true;
+ 		  return;
+ 		}
+ 	}
+     }
+ }
  
  /* Try to find all stack stores of CALL_INSN arguments if
     ACCUMULATE_OUTGOING_ARGS.  If all stack stores have been found
*************** find_call_stack_args (rtx_call_insn *cal
*** 302,359 ****
      if (GET_CODE (XEXP (p, 0)) == USE
  	&& MEM_P (XEXP (XEXP (p, 0), 0)))
        {
! 	rtx mem = XEXP (XEXP (p, 0), 0), addr;
! 	HOST_WIDE_INT off = 0, size;
  	if (!MEM_SIZE_KNOWN_P (mem) || !MEM_SIZE (mem).is_constant (&size))
  	  return false;
! 	addr = XEXP (mem, 0);
! 	if (GET_CODE (addr) == PLUS
! 	    && REG_P (XEXP (addr, 0))
! 	    && CONST_INT_P (XEXP (addr, 1)))
! 	  {
! 	    off = INTVAL (XEXP (addr, 1));
! 	    addr = XEXP (addr, 0);
! 	  }
! 	if (addr != stack_pointer_rtx)
! 	  {
! 	    if (!REG_P (addr))
! 	      return false;
! 	    /* If not fast, use chains to see if addr wasn't set to
! 	       sp + offset.  */
! 	    if (!fast)
! 	      {
! 		df_ref use;
! 		struct df_link *defs;
! 		rtx set;
! 
! 		FOR_EACH_INSN_USE (use, call_insn)
! 		  if (rtx_equal_p (addr, DF_REF_REG (use)))
! 		    break;
! 
! 		if (use == NULL)
! 		  return false;
! 
! 		for (defs = DF_REF_CHAIN (use); defs; defs = defs->next)
! 		  if (! DF_REF_IS_ARTIFICIAL (defs->ref))
! 		    break;
! 
! 		if (defs == NULL)
! 		  return false;
! 
! 		set = single_set (DF_REF_INSN (defs->ref));
! 		if (!set)
! 		  return false;
! 
! 		if (GET_CODE (SET_SRC (set)) != PLUS
! 		    || XEXP (SET_SRC (set), 0) != stack_pointer_rtx
! 		    || !CONST_INT_P (XEXP (SET_SRC (set), 1)))
! 		  return false;
! 
! 		off += INTVAL (XEXP (SET_SRC (set), 1));
! 	      }
! 	    else
! 	      return false;
! 	  }
  	min_sp_off = MIN (min_sp_off, off);
  	max_sp_off = MAX (max_sp_off, off + size);
        }
--- 421,433 ----
      if (GET_CODE (XEXP (p, 0)) == USE
  	&& MEM_P (XEXP (XEXP (p, 0), 0)))
        {
! 	rtx mem = XEXP (XEXP (p, 0), 0);
! 	HOST_WIDE_INT size;
  	if (!MEM_SIZE_KNOWN_P (mem) || !MEM_SIZE (mem).is_constant (&size))
  	  return false;
! 	HOST_WIDE_INT off = sp_based_mem_offset (call_insn, mem, fast);
! 	if (off == INTTYPE_MINIMUM (HOST_WIDE_INT))
! 	  return false;
  	min_sp_off = MIN (min_sp_off, off);
  	max_sp_off = MAX (max_sp_off, off + size);
        }
*************** find_call_stack_args (rtx_call_insn *cal
*** 369,419 ****
      if (GET_CODE (XEXP (p, 0)) == USE
  	&& MEM_P (XEXP (XEXP (p, 0), 0)))
        {
! 	rtx mem = XEXP (XEXP (p, 0), 0), addr;
! 	HOST_WIDE_INT off = 0, byte, size;
  	/* Checked in the previous iteration.  */
! 	size = MEM_SIZE (mem).to_constant ();
! 	addr = XEXP (mem, 0);
! 	if (GET_CODE (addr) == PLUS
! 	    && REG_P (XEXP (addr, 0))
! 	    && CONST_INT_P (XEXP (addr, 1)))
! 	  {
! 	    off = INTVAL (XEXP (addr, 1));
! 	    addr = XEXP (addr, 0);
! 	  }
! 	if (addr != stack_pointer_rtx)
! 	  {
! 	    df_ref use;
! 	    struct df_link *defs;
! 	    rtx set;
! 
! 	    FOR_EACH_INSN_USE (use, call_insn)
! 	      if (rtx_equal_p (addr, DF_REF_REG (use)))
! 		break;
! 
! 	    for (defs = DF_REF_CHAIN (use); defs; defs = defs->next)
! 	      if (! DF_REF_IS_ARTIFICIAL (defs->ref))
! 		break;
! 
! 	    set = single_set (DF_REF_INSN (defs->ref));
! 	    off += INTVAL (XEXP (SET_SRC (set), 1));
! 	  }
! 	for (byte = off; byte < off + size; byte++)
! 	  {
! 	    if (!bitmap_set_bit (sp_bytes, byte - min_sp_off))
! 	      gcc_unreachable ();
! 	  }
        }
  
    /* Walk backwards, looking for argument stores.  The search stops
!      when seeing another call, sp adjustment or memory store other than
!      argument store.  */
    ret = false;
    for (insn = PREV_INSN (call_insn); insn; insn = prev_insn)
      {
-       rtx set, mem, addr;
-       HOST_WIDE_INT off;
- 
        if (insn == BB_HEAD (BLOCK_FOR_INSN (call_insn)))
  	prev_insn = NULL;
        else
--- 443,466 ----
      if (GET_CODE (XEXP (p, 0)) == USE
  	&& MEM_P (XEXP (XEXP (p, 0), 0)))
        {
! 	rtx mem = XEXP (XEXP (p, 0), 0);
  	/* Checked in the previous iteration.  */
! 	HOST_WIDE_INT size = MEM_SIZE (mem).to_constant ();
! 	HOST_WIDE_INT off = sp_based_mem_offset (call_insn, mem, fast);
! 	gcc_checking_assert (off != INTTYPE_MINIMUM (HOST_WIDE_INT));
! 	for (HOST_WIDE_INT byte = off; byte < off + size; byte++)
! 	  if (!bitmap_set_bit (sp_bytes, byte - min_sp_off))
! 	    gcc_unreachable ();
        }
  
    /* Walk backwards, looking for argument stores.  The search stops
!      when seeing another call, sp adjustment, memory store other than
!      argument store or a read from an argument stack slot.  */
!   struct check_argument_load_data data
!     = { sp_bytes, min_sp_off, max_sp_off, call_insn, fast, false };
    ret = false;
    for (insn = PREV_INSN (call_insn); insn; insn = prev_insn)
      {
        if (insn == BB_HEAD (BLOCK_FOR_INSN (call_insn)))
  	prev_insn = NULL;
        else
*************** find_call_stack_args (rtx_call_insn *cal
*** 425,485 ****
        if (!NONDEBUG_INSN_P (insn))
  	continue;
  
!       set = single_set (insn);
        if (!set || SET_DEST (set) == stack_pointer_rtx)
  	break;
  
        if (!MEM_P (SET_DEST (set)))
  	continue;
  
!       mem = SET_DEST (set);
!       addr = XEXP (mem, 0);
!       off = 0;
!       if (GET_CODE (addr) == PLUS
! 	  && REG_P (XEXP (addr, 0))
! 	  && CONST_INT_P (XEXP (addr, 1)))
! 	{
! 	  off = INTVAL (XEXP (addr, 1));
! 	  addr = XEXP (addr, 0);
! 	}
!       if (addr != stack_pointer_rtx)
! 	{
! 	  if (!REG_P (addr))
! 	    break;
! 	  if (!fast)
! 	    {
! 	      df_ref use;
! 	      struct df_link *defs;
! 	      rtx set;
! 
! 	      FOR_EACH_INSN_USE (use, insn)
! 		if (rtx_equal_p (addr, DF_REF_REG (use)))
! 		  break;
! 
! 	      if (use == NULL)
! 		break;
! 
! 	      for (defs = DF_REF_CHAIN (use); defs; defs = defs->next)
! 		if (! DF_REF_IS_ARTIFICIAL (defs->ref))
! 		  break;
! 
! 	      if (defs == NULL)
! 		break;
! 
! 	      set = single_set (DF_REF_INSN (defs->ref));
! 	      if (!set)
! 		break;
! 
! 	      if (GET_CODE (SET_SRC (set)) != PLUS
! 		  || XEXP (SET_SRC (set), 0) != stack_pointer_rtx
! 		  || !CONST_INT_P (XEXP (SET_SRC (set), 1)))
! 		break;
! 
! 	      off += INTVAL (XEXP (SET_SRC (set), 1));
! 	    }
! 	  else
! 	    break;
! 	}
  
        HOST_WIDE_INT size;
        if (!MEM_SIZE_KNOWN_P (mem)
--- 472,492 ----
        if (!NONDEBUG_INSN_P (insn))
  	continue;
  
!       rtx set = single_set (insn);
        if (!set || SET_DEST (set) == stack_pointer_rtx)
  	break;
  
+       note_uses (&PATTERN (insn), check_argument_load, &data);
+       if (data.load_found)
+ 	break;
+ 
        if (!MEM_P (SET_DEST (set)))
  	continue;
  
!       rtx mem = SET_DEST (set);
!       HOST_WIDE_INT off = sp_based_mem_offset (call_insn, mem, fast);
!       if (off == INTTYPE_MINIMUM (HOST_WIDE_INT))
! 	break;
  
        HOST_WIDE_INT size;
        if (!MEM_SIZE_KNOWN_P (mem)
diff -Nrcpad gcc-8.3.0/gcc/df-core.c gcc-8.4.0/gcc/df-core.c
*** gcc-8.3.0/gcc/df-core.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/df-core.c	Wed Mar  4 08:30:00 2020
*************** There are 4 ways to obtain access to ref
*** 298,309 ****
  
     Artificial defs and uses occur both at the beginning and ends of blocks.
  
!      For blocks that area at the destination of eh edges, the
       artificial uses and defs occur at the beginning.  The defs relate
       to the registers specified in EH_RETURN_DATA_REGNO and the uses
!      relate to the registers specified in ED_USES.  Logically these
       defs and uses should really occur along the eh edge, but there is
!      no convenient way to do this.  Artificial edges that occur at the
       beginning of the block have the DF_REF_AT_TOP flag set.
  
       Artificial uses occur at the end of all blocks.  These arise from
--- 298,309 ----
  
     Artificial defs and uses occur both at the beginning and ends of blocks.
  
!      For blocks that are at the destination of eh edges, the
       artificial uses and defs occur at the beginning.  The defs relate
       to the registers specified in EH_RETURN_DATA_REGNO and the uses
!      relate to the registers specified in EH_USES.  Logically these
       defs and uses should really occur along the eh edge, but there is
!      no convenient way to do this.  Artificial defs that occur at the
       beginning of the block have the DF_REF_AT_TOP flag set.
  
       Artificial uses occur at the end of all blocks.  These arise from
diff -Nrcpad gcc-8.3.0/gcc/doc/avr-mmcu.texi gcc-8.4.0/gcc/doc/avr-mmcu.texi
*** gcc-8.3.0/gcc/doc/avr-mmcu.texi	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/doc/avr-mmcu.texi	Wed Mar  4 08:30:00 2020
***************
*** 4,12 ****
  
  @c This file is generated automatically using
  @c gcc/config/avr/gen-avr-mmcu-texi.c from:
! @c    gcc/config/avr/avr-arch.h
! @c    gcc/config/avr/avr-devices.c
! @c    gcc/config/avr/avr-mcus.def
  
  @c Please do not edit manually.
  
--- 4,12 ----
  
  @c This file is generated automatically using
  @c gcc/config/avr/gen-avr-mmcu-texi.c from:
! @c	 gcc/config/avr/avr-arch.h
! @c	 gcc/config/avr/avr-devices.c
! @c	 gcc/config/avr/avr-mcus.def
  
  @c Please do not edit manually.
  
***************
*** 14,28 ****
  
  @item avr2
  ``Classic'' devices with up to 8@tie{}KiB of program memory.
! @*@var{mcu}@tie{}= @code{attiny22}, @code{attiny26}, @code{at90c8534}, @code{at90s2313}, @code{at90s2323}, @code{at90s2333}, @code{at90s2343}, @code{at90s4414}, @code{at90s4433}, @code{at90s4434}, @code{at90s8515}, @code{at90s8535}.
  
  @item avr25
  ``Classic'' devices with up to 8@tie{}KiB of program memory and with the @code{MOVW} instruction.
! @*@var{mcu}@tie{}= @code{ata5272}, @code{ata6616c}, @code{attiny13}, @code{attiny13a}, @code{attiny2313}, @code{attiny2313a}, @code{attiny24}, @code{attiny24a}, @code{attiny25}, @code{attiny261}, @code{attiny261a}, @code{attiny43u}, @code{attiny4313}, @code{attiny44}, @code{attiny44a}, @code{attiny441}, @code{attiny45}, @code{attiny461}, @code{attiny461a}, @code{attiny48}, @code{attiny828}, @code{attiny84}, @code{attiny84a}, @code{attiny841}, @code{attiny85}, @code{attiny861}, @code{attiny861a}, @code{attiny87}, @code{attiny88}, @code{at86rf401}.
  
  @item avr3
! ``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of  program memory.
! @*@var{mcu}@tie{}= @code{at43usb355}, @code{at76c711}.
  
  @item avr31
  ``Classic'' devices with 128@tie{}KiB of program memory.
--- 14,28 ----
  
  @item avr2
  ``Classic'' devices with up to 8@tie{}KiB of program memory.
! @*@var{mcu}@tie{}= @code{attiny22}, @code{attiny26}, @code{at90s2313}, @code{at90s2323}, @code{at90s2333}, @code{at90s2343}, @code{at90s4414}, @code{at90s4433}, @code{at90s4434}, @code{at90c8534}, @code{at90s8515}, @code{at90s8535}.
  
  @item avr25
  ``Classic'' devices with up to 8@tie{}KiB of program memory and with the @code{MOVW} instruction.
! @*@var{mcu}@tie{}= @code{attiny13}, @code{attiny13a}, @code{attiny24}, @code{attiny24a}, @code{attiny25}, @code{attiny261}, @code{attiny261a}, @code{attiny2313}, @code{attiny2313a}, @code{attiny43u}, @code{attiny44}, @code{attiny44a}, @code{attiny45}, @code{attiny48}, @code{attiny441}, @code{attiny461}, @code{attiny461a}, @code{attiny4313}, @code{attiny84}, @code{attiny84a}, @code{attiny85}, @code{attiny87}, @code{attiny88}, @code{attiny828}, @code{attiny841}, @code{attiny861}, @code{attiny861a}, @code{ata5272}, @code{ata6616c}, @code{at86rf401}.
  
  @item avr3
! ``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
! @*@var{mcu}@tie{}= @code{at76c711}, @code{at43usb355}.
  
  @item avr31
  ``Classic'' devices with 128@tie{}KiB of program memory.
***************
*** 30,44 ****
  
  @item avr35
  ``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory and with the @code{MOVW} instruction.
! @*@var{mcu}@tie{}= @code{ata5505}, @code{ata6617c}, @code{ata664251}, @code{atmega16u2}, @code{atmega32u2}, @code{atmega8u2}, @code{attiny1634}, @code{attiny167}, @code{at90usb162}, @code{at90usb82}.
  
  @item avr4
  ``Enhanced'' devices with up to 8@tie{}KiB of program memory.
! @*@var{mcu}@tie{}= @code{ata6285}, @code{ata6286}, @code{ata6289}, @code{ata6612c}, @code{atmega48}, @code{atmega48a}, @code{atmega48p}, @code{atmega48pa}, @code{atmega48pb}, @code{atmega8}, @code{atmega8a}, @code{atmega8hva}, @code{atmega8515}, @code{atmega8535}, @code{atmega88}, @code{atmega88a}, @code{atmega88p}, @code{atmega88pa}, @code{atmega88pb}, @code{at90pwm1}, @code{at90pwm2}, @code{at90pwm2b}, @code{at90pwm3}, @code{at90pwm3b}, @code{at90pwm81}.
  
  @item avr5
  ``Enhanced'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
! @*@var{mcu}@tie{}= @code{ata5702m322}, @code{ata5782}, @code{ata5790}, @code{ata5790n}, @code{ata5791}, @code{ata5795}, @code{ata5831}, @code{ata6613c}, @code{ata6614q}, @code{ata8210}, @code{ata8510}, @code{atmega16}, @code{atmega16a}, @code{atmega16hva}, @code{atmega16hva2}, @code{atmega16hvb}, @code{atmega16hvbrevb}, @code{atmega16m1}, @code{atmega16u4}, @code{atmega161}, @code{atmega162}, @code{atmega163}, @code{atmega164a}, @code{atmega164p}, @code{atmega164pa}, @code{atmega165}, @code{atmega165a}, @code{atmega165p}, @code{atmega165pa}, @code{atmega168}, @code{atmega168a}, @code{atmega168p}, @code{atmega168pa}, @code{atmega168pb}, @code{atmega169}, @code{atmega169a}, @code{atmega169p}, @code{atmega169pa}, @code{atmega32}, @code{atmega32a}, @code{atmega32c1}, @code{atmega32hvb}, @code{atmega32hvbrevb}, @code{atmega32m1}, @code{atmega32u4}, @code{atmega32u6}, @code{atmega323}, @code{atmega324a}, @code{atmega324p}, @code{atmega324pa}, @code{atmega325}, @code{atmega325a}, @code{atmega325p}, @code{atmega325pa}, @code{atmega3250}, @code{atmega3250a}, @code{atmega3250p}, @code{atmega3250pa}, @code{atmega328}, @code{atmega328p}, @code{atmega328pb}, @code{atmega329}, @code{atmega329a}, @code{atmega329p}, @code{atmega329pa}, @code{atmega3290}, @code{atmega3290a}, @code{atmega3290p}, @code{atmega3290pa}, @code{atmega406}, @code{atmega64}, @code{atmega64a}, @code{atmega64c1}, @code{atmega64hve}, @code{atmega64hve2}, @code{atmega64m1}, @code{atmega64rfr2}, @code{atmega640}, @code{atmega644}, @code{atmega644a}, @code{atmega644p}, @code{atmega644pa}, @code{atmega644rfr2}, @code{atmega645}, @code{atmega645a}, @code{atmega645p}, @code{atmega6450}, @code{atmega6450a}, @code{atmega6450p}, @code{atmega649}, @code{atmega649a}, @code{atmega649p}, @code{atmega6490}, @code{atmega6490a}, @code{atmega6490p}, @code{at90can32}, @code{at90can64}, @code{at90pwm161}, @code{at90pwm216}, @code{at90pwm316}, @code{at90scr100}, @code{at90usb646}, @code{at90usb647}, @code{at94k}, @code{m3000}.
  
  @item avr51
  ``Enhanced'' devices with 128@tie{}KiB of program memory.
--- 30,44 ----
  
  @item avr35
  ``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory and with the @code{MOVW} instruction.
! @*@var{mcu}@tie{}= @code{attiny167}, @code{attiny1634}, @code{atmega8u2}, @code{atmega16u2}, @code{atmega32u2}, @code{ata5505}, @code{ata6617c}, @code{ata664251}, @code{at90usb82}, @code{at90usb162}.
  
  @item avr4
  ``Enhanced'' devices with up to 8@tie{}KiB of program memory.
! @*@var{mcu}@tie{}= @code{atmega48}, @code{atmega48a}, @code{atmega48p}, @code{atmega48pa}, @code{atmega48pb}, @code{atmega8}, @code{atmega8a}, @code{atmega8hva}, @code{atmega88}, @code{atmega88a}, @code{atmega88p}, @code{atmega88pa}, @code{atmega88pb}, @code{atmega8515}, @code{atmega8535}, @code{ata6285}, @code{ata6286}, @code{ata6289}, @code{ata6612c}, @code{at90pwm1}, @code{at90pwm2}, @code{at90pwm2b}, @code{at90pwm3}, @code{at90pwm3b}, @code{at90pwm81}.
  
  @item avr5
  ``Enhanced'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
! @*@var{mcu}@tie{}= @code{atmega16}, @code{atmega16a}, @code{atmega16hva}, @code{atmega16hva2}, @code{atmega16hvb}, @code{atmega16hvbrevb}, @code{atmega16m1}, @code{atmega16u4}, @code{atmega161}, @code{atmega162}, @code{atmega163}, @code{atmega164a}, @code{atmega164p}, @code{atmega164pa}, @code{atmega165}, @code{atmega165a}, @code{atmega165p}, @code{atmega165pa}, @code{atmega168}, @code{atmega168a}, @code{atmega168p}, @code{atmega168pa}, @code{atmega168pb}, @code{atmega169}, @code{atmega169a}, @code{atmega169p}, @code{atmega169pa}, @code{atmega32}, @code{atmega32a}, @code{atmega32c1}, @code{atmega32hvb}, @code{atmega32hvbrevb}, @code{atmega32m1}, @code{atmega32u4}, @code{atmega32u6}, @code{atmega323}, @code{atmega324a}, @code{atmega324p}, @code{atmega324pa}, @code{atmega325}, @code{atmega325a}, @code{atmega325p}, @code{atmega325pa}, @code{atmega328}, @code{atmega328p}, @code{atmega328pb}, @code{atmega329}, @code{atmega329a}, @code{atmega329p}, @code{atmega329pa}, @code{atmega3250}, @code{atmega3250a}, @code{atmega3250p}, @code{atmega3250pa}, @code{atmega3290}, @code{atmega3290a}, @code{atmega3290p}, @code{atmega3290pa}, @code{atmega406}, @code{atmega64}, @code{atmega64a}, @code{atmega64c1}, @code{atmega64hve}, @code{atmega64hve2}, @code{atmega64m1}, @code{atmega64rfr2}, @code{atmega640}, @code{atmega644}, @code{atmega644a}, @code{atmega644p}, @code{atmega644pa}, @code{atmega644rfr2}, @code{atmega645}, @code{atmega645a}, @code{atmega645p}, @code{atmega649}, @code{atmega649a}, @code{atmega649p}, @code{atmega6450}, @code{atmega6450a}, @code{atmega6450p}, @code{atmega6490}, @code{atmega6490a}, @code{atmega6490p}, @code{ata5795}, @code{ata5790}, @code{ata5790n}, @code{ata5791}, @code{ata6613c}, @code{ata6614q}, @code{ata5782}, @code{ata5831}, @code{ata8210}, @code{ata8510}, @code{ata5702m322}, @code{at90pwm161}, @code{at90pwm216}, @code{at90pwm316}, @code{at90can32}, @code{at90can64}, @code{at90scr100}, @code{at90usb646}, @code{at90usb647}, @code{at94k}, @code{m3000}.
  
  @item avr51
  ``Enhanced'' devices with 128@tie{}KiB of program memory.
***************
*** 50,60 ****
  
  @item avrxmega2
  ``XMEGA'' devices with more than 8@tie{}KiB and up to 64@tie{}KiB of program memory.
! @*@var{mcu}@tie{}= @code{atxmega16a4}, @code{atxmega16a4u}, @code{atxmega16c4}, @code{atxmega16d4}, @code{atxmega16e5}, @code{atxmega32a4}, @code{atxmega32a4u}, @code{atxmega32c3}, @code{atxmega32c4}, @code{atxmega32d3}, @code{atxmega32d4}, @code{atxmega32e5}, @code{atxmega8e5}.
  
  @item avrxmega3
  ``XMEGA'' devices with up to 64@tie{}KiB of combined program memory and RAM, and with program memory visible in the RAM address space.
! @*@var{mcu}@tie{}= @code{attiny1614}, @code{attiny1616}, @code{attiny1617}, @code{attiny212}, @code{attiny214}, @code{attiny3214}, @code{attiny3216}, @code{attiny3217}, @code{attiny412}, @code{attiny414}, @code{attiny416}, @code{attiny417}, @code{attiny814}, @code{attiny816}, @code{attiny817}.
  
  @item avrxmega4
  ``XMEGA'' devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory.
--- 50,60 ----
  
  @item avrxmega2
  ``XMEGA'' devices with more than 8@tie{}KiB and up to 64@tie{}KiB of program memory.
! @*@var{mcu}@tie{}= @code{atxmega8e5}, @code{atxmega16a4}, @code{atxmega16a4u}, @code{atxmega16c4}, @code{atxmega16d4}, @code{atxmega16e5}, @code{atxmega32a4}, @code{atxmega32a4u}, @code{atxmega32c3}, @code{atxmega32c4}, @code{atxmega32d3}, @code{atxmega32d4}, @code{atxmega32e5}.
  
  @item avrxmega3
  ``XMEGA'' devices with up to 64@tie{}KiB of combined program memory and RAM, and with program memory visible in the RAM address space.
! @*@var{mcu}@tie{}= @code{attiny202}, @code{attiny204}, @code{attiny212}, @code{attiny214}, @code{attiny402}, @code{attiny404}, @code{attiny406}, @code{attiny412}, @code{attiny414}, @code{attiny416}, @code{attiny417}, @code{attiny804}, @code{attiny806}, @code{attiny807}, @code{attiny814}, @code{attiny816}, @code{attiny817}, @code{attiny1604}, @code{attiny1606}, @code{attiny1607}, @code{attiny1614}, @code{attiny1616}, @code{attiny1617}, @code{attiny3214}, @code{attiny3216}, @code{attiny3217}, @code{atmega808}, @code{atmega809}, @code{atmega1608}, @code{atmega1609}, @code{atmega3208}, @code{atmega3209}, @code{atmega4808}, @code{atmega4809}.
  
  @item avrxmega4
  ``XMEGA'' devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory.
***************
*** 74,80 ****
  
  @item avrtiny
  ``TINY'' Tiny core devices with 512@tie{}B up to 4@tie{}KiB of program memory.
! @*@var{mcu}@tie{}= @code{attiny10}, @code{attiny20}, @code{attiny4}, @code{attiny40}, @code{attiny5}, @code{attiny9}.
  
  @item avr1
  This ISA is implemented by the minimal AVR core and supported for assembler only.
--- 74,80 ----
  
  @item avrtiny
  ``TINY'' Tiny core devices with 512@tie{}B up to 4@tie{}KiB of program memory.
! @*@var{mcu}@tie{}= @code{attiny4}, @code{attiny5}, @code{attiny9}, @code{attiny10}, @code{attiny20}, @code{attiny40}.
  
  @item avr1
  This ISA is implemented by the minimal AVR core and supported for assembler only.
diff -Nrcpad gcc-8.3.0/gcc/doc/contribute.texi gcc-8.4.0/gcc/doc/contribute.texi
*** gcc-8.3.0/gcc/doc/contribute.texi	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/doc/contribute.texi	Wed Mar  4 08:30:00 2020
***************
*** 6,13 ****
  @chapter Contributing to GCC Development
  
  If you would like to help pretest GCC releases to assure they work well,
! current development sources are available by SVN (see
! @uref{http://gcc.gnu.org/svn.html}).  Source and binary snapshots are
  also available for FTP; see @uref{http://gcc.gnu.org/snapshots.html}.
  
  If you would like to work on improvements to GCC, please read the
--- 6,13 ----
  @chapter Contributing to GCC Development
  
  If you would like to help pretest GCC releases to assure they work well,
! current development sources are available via Git (see
! @uref{http://gcc.gnu.org/git.html}).  Source and binary snapshots are
  also available for FTP; see @uref{http://gcc.gnu.org/snapshots.html}.
  
  If you would like to work on improvements to GCC, please read the
diff -Nrcpad gcc-8.3.0/gcc/doc/cpp.1 gcc-8.4.0/gcc/doc/cpp.1
*** gcc-8.3.0/gcc/doc/cpp.1	Fri Feb 22 14:23:15 2019
--- gcc-8.4.0/gcc/doc/cpp.1	Wed Mar  4 08:33:13 2020
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "CPP 1"
! .TH CPP 1 "2019-02-22" "gcc-8.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 "2020-03-04" "gcc-8.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
diff -Nrcpad gcc-8.3.0/gcc/doc/extend.texi gcc-8.4.0/gcc/doc/extend.texi
*** gcc-8.3.0/gcc/doc/extend.texi	Thu Feb  7 14:43:41 2019
--- gcc-8.4.0/gcc/doc/extend.texi	Wed Mar  4 08:30:00 2020
*************** If the cryptographic instructions are en
*** 19708,19727 ****
--- 19708,19740 ----
  @smallexample
  vector unsigned long long __builtin_crypto_vsbox (vector unsigned long long);
  
+ vector unsigned char vec_sbox_be (vector unsigned char);
+ 
  vector unsigned long long __builtin_crypto_vcipher (vector unsigned long long,
                                                      vector unsigned long long);
  
+ vector unsigned char vec_cipher_be (vector unsigned char, vector unsigned char);
+ 
  vector unsigned long long __builtin_crypto_vcipherlast
                                       (vector unsigned long long,
                                        vector unsigned long long);
  
+ vector unsigned char vec_cipherlast_be (vector unsigned char,
+                                         vector unsigned char);
+ 
  vector unsigned long long __builtin_crypto_vncipher (vector unsigned long long,
                                                       vector unsigned long long);
  
+ vector unsigned char vec_ncipher_be (vector unsigned char,
+                                      vector unsigned char);
+ 
  vector unsigned long long __builtin_crypto_vncipherlast
                                       (vector unsigned long long,
                                        vector unsigned long long);
  
+ vector unsigned char vec_ncipherlast_be (vector unsigned char,
+                                          vector unsigned char);
+ 
  vector unsigned char __builtin_crypto_vpermxor (vector unsigned char,
                                                  vector unsigned char,
                                                  vector unsigned char);
*************** vector unsigned long long __builtin_cryp
*** 19741,19753 ****
  vector unsigned char __builtin_crypto_vpmsumb (vector unsigned char,
                                                 vector unsigned char);
  
! vector unsigned short __builtin_crypto_vpmsumb (vector unsigned short,
                                                  vector unsigned short);
  
! vector unsigned int __builtin_crypto_vpmsumb (vector unsigned int,
                                                vector unsigned int);
  
! vector unsigned long long __builtin_crypto_vpmsumb (vector unsigned long long,
                                                      vector unsigned long long);
  
  vector unsigned long long __builtin_crypto_vshasigmad
--- 19754,19766 ----
  vector unsigned char __builtin_crypto_vpmsumb (vector unsigned char,
                                                 vector unsigned char);
  
! vector unsigned short __builtin_crypto_vpmsumh (vector unsigned short,
                                                  vector unsigned short);
  
! vector unsigned int __builtin_crypto_vpmsumw (vector unsigned int,
                                                vector unsigned int);
  
! vector unsigned long long __builtin_crypto_vpmsumd (vector unsigned long long,
                                                      vector unsigned long long);
  
  vector unsigned long long __builtin_crypto_vshasigmad
diff -Nrcpad gcc-8.3.0/gcc/doc/fsf-funding.7 gcc-8.4.0/gcc/doc/fsf-funding.7
*** gcc-8.3.0/gcc/doc/fsf-funding.7	Fri Feb 22 14:23:15 2019
--- gcc-8.4.0/gcc/doc/fsf-funding.7	Wed Mar  4 08:33:13 2020
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "FSF-FUNDING 7"
! .TH FSF-FUNDING 7 "2019-02-22" "gcc-8.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 "2020-03-04" "gcc-8.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
diff -Nrcpad gcc-8.3.0/gcc/doc/g++.1 gcc-8.4.0/gcc/doc/g++.1
*** gcc-8.3.0/gcc/doc/g++.1	Fri Feb 22 14:35:28 2019
--- gcc-8.4.0/gcc/doc/g++.1	Wed Mar  4 08:45:25 2020
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 "2019-02-22" "gcc-8.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 "2020-03-04" "gcc-8.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.
*** 571,578 ****
  \&\fB\-fdisable\-tree\-\fR\fIpass_name\fR 
  \&\fB\-fdisable\-tree\-\fR\fIpass-name\fR\fB=\fR\fIrange-list\fR 
  \&\fB\-fdump\-noaddr  \-fdump\-unnumbered  \-fdump\-unnumbered\-links 
! \&\-fdump\-class\-hierarchy\fR[\fB\-\fR\fIn\fR] 
! \&\fB\-fdump\-final\-insns\fR[\fB=\fR\fIfile\fR] 
  \&\fB\-fdump\-ipa\-all  \-fdump\-ipa\-cgraph  \-fdump\-ipa\-inline 
  \&\-fdump\-lang\-all 
  \&\-fdump\-lang\-\fR\fIswitch\fR 
--- 571,577 ----
  \&\fB\-fdisable\-tree\-\fR\fIpass_name\fR 
  \&\fB\-fdisable\-tree\-\fR\fIpass-name\fR\fB=\fR\fIrange-list\fR 
  \&\fB\-fdump\-noaddr  \-fdump\-unnumbered  \-fdump\-unnumbered\-links 
! \&\-fdump\-final\-insns\fR[\fB=\fR\fIfile\fR] 
  \&\fB\-fdump\-ipa\-all  \-fdump\-ipa\-cgraph  \-fdump\-ipa\-inline 
  \&\-fdump\-lang\-all 
  \&\-fdump\-lang\-\fR\fIswitch\fR 
*************** in the following sections.
*** 689,695 ****
  \&\-mn_flash=\fR\fIsize\fR  \fB\-mno\-interrupts 
  \&\-mmain\-is\-OS_task \-mrelax  \-mrmw  \-mstrict\-X  \-mtiny\-stack 
  \&\-mfract\-convert\-truncate 
! \&\-mshort\-calls  \-nodevicelib 
  \&\-Waddr\-space\-convert  \-Wmisspelled\-isr\fR
  .Sp
  \&\fIBlackfin Options\fR
--- 688,694 ----
  \&\-mn_flash=\fR\fIsize\fR  \fB\-mno\-interrupts 
  \&\-mmain\-is\-OS_task \-mrelax  \-mrmw  \-mstrict\-X  \-mtiny\-stack 
  \&\-mfract\-convert\-truncate 
! \&\-mshort\-calls \-nodevicelib  \-nodevicespecs 
  \&\-Waddr\-space\-convert  \-Wmisspelled\-isr\fR
  .Sp
  \&\fIBlackfin Options\fR
*************** would be rendered unable to decode locat
*** 6864,6871 ****
  .IP "\fB\-ginternal\-reset\-location\-views\fR" 4
  .IX Item "-ginternal-reset-location-views"
  .PD 0
! .IP "\fB\-gnointernal\-reset\-location\-views\fR" 4
! .IX Item "-gnointernal-reset-location-views"
  .PD
  Attempt to determine location views that can be omitted from location
  view lists.  This requires the compiler to have very accurate insn
--- 6863,6870 ----
  .IP "\fB\-ginternal\-reset\-location\-views\fR" 4
  .IX Item "-ginternal-reset-location-views"
  .PD 0
! .IP "\fB\-gno\-internal\-reset\-location\-views\fR" 4
! .IX Item "-gno-internal-reset-location-views"
  .PD
  Attempt to determine location views that can be omitted from location
  view lists.  This requires the compiler to have very accurate insn
*************** do not typically increase code size.
*** 7153,7160 ****
  .Sp
  \&\fB\-Os\fR disables the following optimization flags:
  \&\fB\-falign\-functions  \-falign\-jumps  \-falign\-loops 
! \&\-falign\-labels  \-freorder\-blocks  \-freorder\-blocks\-algorithm=stc 
! \&\-freorder\-blocks\-and\-partition  \-fprefetch\-loop\-arrays\fR
  .Sp
  It also enables \fB\-finline\-functions\fR, causes the compiler to tune for
  code size rather than execution speed, and performs further optimizations
--- 7152,7158 ----
  .Sp
  \&\fB\-Os\fR disables the following optimization flags:
  \&\fB\-falign\-functions  \-falign\-jumps  \-falign\-loops 
! \&\-falign\-labels  \-fprefetch\-loop\-arrays\fR
  .Sp
  It also enables \fB\-finline\-functions\fR, causes the compiler to tune for
  code size rather than execution speed, and performs further optimizations
*************** Specify the name of the target processor
*** 14232,14237 ****
--- 14230,14236 ----
  performance of the code.  Permissible values for this option are:
  \&\fBgeneric\fR, \fBcortex\-a35\fR, \fBcortex\-a53\fR, \fBcortex\-a55\fR,
  \&\fBcortex\-a57\fR, \fBcortex\-a72\fR, \fBcortex\-a73\fR, \fBcortex\-a75\fR,
+ \&\fBcortex\-a76\fR, \fBares\fR, \fBneoverse\-n1\fR
  \&\fBexynos\-m1\fR, \fBfalkor\fR, \fBqdf24xx\fR, \fBsaphira\fR,
  \&\fBxgene1\fR, \fBvulcan\fR, \fBthunderx\fR,
  \&\fBthunderxt88\fR, \fBthunderxt88p1\fR, \fBthunderxt81\fR,
*************** The default for this option is@tie{}\fBa
*** 16155,16171 ****
  .el .IP "\f(CWavr2\fR" 4
  .IX Item "avr2"
  \&\*(L"Classic\*(R" devices with up to 8@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny22\*(C'\fR, \f(CW\*(C`attiny26\*(C'\fR, \f(CW\*(C`at90c8534\*(C'\fR, \f(CW\*(C`at90s2313\*(C'\fR, \f(CW\*(C`at90s2323\*(C'\fR, \f(CW\*(C`at90s2333\*(C'\fR, \f(CW\*(C`at90s2343\*(C'\fR, \f(CW\*(C`at90s4414\*(C'\fR, \f(CW\*(C`at90s4433\*(C'\fR, \f(CW\*(C`at90s4434\*(C'\fR, \f(CW\*(C`at90s8515\*(C'\fR, \f(CW\*(C`at90s8535\*(C'\fR.
  .ie n .IP """avr25""" 4
  .el .IP "\f(CWavr25\fR" 4
  .IX Item "avr25"
  \&\*(L"Classic\*(R" devices with up to 8@tie{}KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`ata5272\*(C'\fR, \f(CW\*(C`ata6616c\*(C'\fR, \f(CW\*(C`attiny13\*(C'\fR, \f(CW\*(C`attiny13a\*(C'\fR, \f(CW\*(C`attiny2313\*(C'\fR, \f(CW\*(C`attiny2313a\*(C'\fR, \f(CW\*(C`attiny24\*(C'\fR, \f(CW\*(C`attiny24a\*(C'\fR, \f(CW\*(C`attiny25\*(C'\fR, \f(CW\*(C`attiny261\*(C'\fR, \f(CW\*(C`attiny261a\*(C'\fR, \f(CW\*(C`attiny43u\*(C'\fR, \f(CW\*(C`attiny4313\*(C'\fR, \f(CW\*(C`attiny44\*(C'\fR, \f(CW\*(C`attiny44a\*(C'\fR, \f(CW\*(C`attiny441\*(C'\fR, \f(CW\*(C`attiny45\*(C'\fR, \f(CW\*(C`attiny461\*(C'\fR, \f(CW\*(C`attiny461a\*(C'\fR, \f(CW\*(C`attiny48\*(C'\fR, \f(CW\*(C`attiny828\*(C'\fR, \f(CW\*(C`attiny84\*(C'\fR, \f(CW\*(C`attiny84a\*(C'\fR, \f(CW\*(C`attiny841\*(C'\fR, \f(CW\*(C`attiny85\*(C'\fR, \f(CW\*(C`attiny861\*(C'\fR, \f(CW\*(C`attiny861a\*(C'\fR, \f(CW\*(C`attiny87\*(C'\fR, \f(CW\*(C`attiny88\*(C'\fR, \f(CW\*(C`at86rf401\*(C'\fR.
  .ie n .IP """avr3""" 4
  .el .IP "\f(CWavr3\fR" 4
  .IX Item "avr3"
! \&\*(L"Classic\*(R" devices with 16@tie{}KiB up to 64@tie{}KiB of  program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`at43usb355\*(C'\fR, \f(CW\*(C`at76c711\*(C'\fR.
  .ie n .IP """avr31""" 4
  .el .IP "\f(CWavr31\fR" 4
  .IX Item "avr31"
--- 16154,16170 ----
  .el .IP "\f(CWavr2\fR" 4
  .IX Item "avr2"
  \&\*(L"Classic\*(R" devices with up to 8@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny22\*(C'\fR, \f(CW\*(C`attiny26\*(C'\fR, \f(CW\*(C`at90s2313\*(C'\fR, \f(CW\*(C`at90s2323\*(C'\fR, \f(CW\*(C`at90s2333\*(C'\fR, \f(CW\*(C`at90s2343\*(C'\fR, \f(CW\*(C`at90s4414\*(C'\fR, \f(CW\*(C`at90s4433\*(C'\fR, \f(CW\*(C`at90s4434\*(C'\fR, \f(CW\*(C`at90c8534\*(C'\fR, \f(CW\*(C`at90s8515\*(C'\fR, \f(CW\*(C`at90s8535\*(C'\fR.
  .ie n .IP """avr25""" 4
  .el .IP "\f(CWavr25\fR" 4
  .IX Item "avr25"
  \&\*(L"Classic\*(R" devices with up to 8@tie{}KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny13\*(C'\fR, \f(CW\*(C`attiny13a\*(C'\fR, \f(CW\*(C`attiny24\*(C'\fR, \f(CW\*(C`attiny24a\*(C'\fR, \f(CW\*(C`attiny25\*(C'\fR, \f(CW\*(C`attiny261\*(C'\fR, \f(CW\*(C`attiny261a\*(C'\fR, \f(CW\*(C`attiny2313\*(C'\fR, \f(CW\*(C`attiny2313a\*(C'\fR, \f(CW\*(C`attiny43u\*(C'\fR, \f(CW\*(C`attiny44\*(C'\fR, \f(CW\*(C`attiny44a\*(C'\fR, \f(CW\*(C`attiny45\*(C'\fR, \f(CW\*(C`attiny48\*(C'\fR, \f(CW\*(C`attiny441\*(C'\fR, \f(CW\*(C`attiny461\*(C'\fR, \f(CW\*(C`attiny461a\*(C'\fR, \f(CW\*(C`attiny4313\*(C'\fR, \f(CW\*(C`attiny84\*(C'\fR, \f(CW\*(C`attiny84a\*(C'\fR, \f(CW\*(C`attiny85\*(C'\fR, \f(CW\*(C`attiny87\*(C'\fR, \f(CW\*(C`attiny88\*(C'\fR, \f(CW\*(C`attiny828\*(C'\fR, \f(CW\*(C`attiny841\*(C'\fR, \f(CW\*(C`attiny861\*(C'\fR, \f(CW\*(C`attiny861a\*(C'\fR, \f(CW\*(C`ata5272\*(C'\fR, \f(CW\*(C`ata6616c\*(C'\fR, \f(CW\*(C`at86rf401\*(C'\fR.
  .ie n .IP """avr3""" 4
  .el .IP "\f(CWavr3\fR" 4
  .IX Item "avr3"
! \&\*(L"Classic\*(R" devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`at76c711\*(C'\fR, \f(CW\*(C`at43usb355\*(C'\fR.
  .ie n .IP """avr31""" 4
  .el .IP "\f(CWavr31\fR" 4
  .IX Item "avr31"
*************** The default for this option is@tie{}\fBa
*** 16175,16191 ****
  .el .IP "\f(CWavr35\fR" 4
  .IX Item "avr35"
  \&\*(L"Classic\*(R" devices with 16@tie{}KiB up to 64@tie{}KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`ata5505\*(C'\fR, \f(CW\*(C`ata6617c\*(C'\fR, \f(CW\*(C`ata664251\*(C'\fR, \f(CW\*(C`atmega16u2\*(C'\fR, \f(CW\*(C`atmega32u2\*(C'\fR, \f(CW\*(C`atmega8u2\*(C'\fR, \f(CW\*(C`attiny1634\*(C'\fR, \f(CW\*(C`attiny167\*(C'\fR, \f(CW\*(C`at90usb162\*(C'\fR, \f(CW\*(C`at90usb82\*(C'\fR.
  .ie n .IP """avr4""" 4
  .el .IP "\f(CWavr4\fR" 4
  .IX Item "avr4"
  \&\*(L"Enhanced\*(R" devices with up to 8@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`ata6285\*(C'\fR, \f(CW\*(C`ata6286\*(C'\fR, \f(CW\*(C`ata6289\*(C'\fR, \f(CW\*(C`ata6612c\*(C'\fR, \f(CW\*(C`atmega48\*(C'\fR, \f(CW\*(C`atmega48a\*(C'\fR, \f(CW\*(C`atmega48p\*(C'\fR, \f(CW\*(C`atmega48pa\*(C'\fR, \f(CW\*(C`atmega48pb\*(C'\fR, \f(CW\*(C`atmega8\*(C'\fR, \f(CW\*(C`atmega8a\*(C'\fR, \f(CW\*(C`atmega8hva\*(C'\fR, \f(CW\*(C`atmega8515\*(C'\fR, \f(CW\*(C`atmega8535\*(C'\fR, \f(CW\*(C`atmega88\*(C'\fR, \f(CW\*(C`atmega88a\*(C'\fR, \f(CW\*(C`atmega88p\*(C'\fR, \f(CW\*(C`atmega88pa\*(C'\fR, \f(CW\*(C`atmega88pb\*(C'\fR, \f(CW\*(C`at90pwm1\*(C'\fR, \f(CW\*(C`at90pwm2\*(C'\fR, \f(CW\*(C`at90pwm2b\*(C'\fR, \f(CW\*(C`at90pwm3\*(C'\fR, \f(CW\*(C`at90pwm3b\*(C'\fR, \f(CW\*(C`at90pwm81\*(C'\fR.
  .ie n .IP """avr5""" 4
  .el .IP "\f(CWavr5\fR" 4
  .IX Item "avr5"
  \&\*(L"Enhanced\*(R" devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`ata5702m322\*(C'\fR, \f(CW\*(C`ata5782\*(C'\fR, \f(CW\*(C`ata5790\*(C'\fR, \f(CW\*(C`ata5790n\*(C'\fR, \f(CW\*(C`ata5791\*(C'\fR, \f(CW\*(C`ata5795\*(C'\fR, \f(CW\*(C`ata5831\*(C'\fR, \f(CW\*(C`ata6613c\*(C'\fR, \f(CW\*(C`ata6614q\*(C'\fR, \f(CW\*(C`ata8210\*(C'\fR, \f(CW\*(C`ata8510\*(C'\fR, \f(CW\*(C`atmega16\*(C'\fR, \f(CW\*(C`atmega16a\*(C'\fR, \f(CW\*(C`atmega16hva\*(C'\fR, \f(CW\*(C`atmega16hva2\*(C'\fR, \f(CW\*(C`atmega16hvb\*(C'\fR, \f(CW\*(C`atmega16hvbrevb\*(C'\fR, \f(CW\*(C`atmega16m1\*(C'\fR, \f(CW\*(C`atmega16u4\*(C'\fR, \f(CW\*(C`atmega161\*(C'\fR, \f(CW\*(C`atmega162\*(C'\fR, \f(CW\*(C`atmega163\*(C'\fR, \f(CW\*(C`atmega164a\*(C'\fR, \f(CW\*(C`atmega164p\*(C'\fR, \f(CW\*(C`atmega164pa\*(C'\fR, \f(CW\*(C`atmega165\*(C'\fR, \f(CW\*(C`atmega165a\*(C'\fR, \f(CW\*(C`atmega165p\*(C'\fR, \f(CW\*(C`atmega165pa\*(C'\fR, \f(CW\*(C`atmega168\*(C'\fR, \f(CW\*(C`atmega168a\*(C'\fR, \f(CW\*(C`atmega168p\*(C'\fR, \f(CW\*(C`atmega168pa\*(C'\fR, \f(CW\*(C`atmega168pb\*(C'\fR, \f(CW\*(C`atmega169\*(C'\fR, \f(CW\*(C`atmega169a\*(C'\fR, \f(CW\*(C`atmega169p\*(C'\fR, \f(CW\*(C`atmega169pa\*(C'\fR, \f(CW\*(C`atmega32\*(C'\fR, \f(CW\*(C`atmega32a\*(C'\fR, \f(CW\*(C`atmega32c1\*(C'\fR, \f(CW\*(C`atmega32hvb\*(C'\fR, \f(CW\*(C`atmega32hvbrevb\*(C'\fR, \f(CW\*(C`atmega32m1\*(C'\fR, \f(CW\*(C`atmega32u4\*(C'\fR, \f(CW\*(C`atmega32u6\*(C'\fR, \f(CW\*(C`atmega323\*(C'\fR, \f(CW\*(C`atmega324a\*(C'\fR, \f(CW\*(C`atmega324p\*(C'\fR, \f(CW\*(C`atmega324pa\*(C'\fR, \f(CW\*(C`atmega325\*(C'\fR, \f(CW\*(C`atmega325a\*(C'\fR, \f(CW\*(C`atmega325p\*(C'\fR, \f(CW\*(C`atmega325pa\*(C'\fR, \f(CW\*(C`atmega3250\*(C'\fR, \f(CW\*(C`atmega3250a\*(C'\fR, \f(CW\*(C`atmega3250p\*(C'\fR, \f(CW\*(C`atmega3250pa\*(C'\fR, \f(CW\*(C`atmega328\*(C'\fR, \f(CW\*(C`atmega328p\*(C'\fR, \f(CW\*(C`atmega328pb\*(C'\fR, \f(CW\*(C`atmega329\*(C'\fR, \f(CW\*(C`atmega329a\*(C'\fR, \f(CW\*(C`atmega329p\*(C'\fR, \f(CW\*(C`atmega329pa\*(C'\fR, \f(CW\*(C`atmega3290\*(C'\fR, \f(CW\*(C`atmega3290a\*(C'\fR, \f(CW\*(C`atmega3290p\*(C'\fR, \f(CW\*(C`atmega3290pa\*(C'\fR, \f(CW\*(C`atmega406\*(C'\fR, \f(CW\*(C`atmega64\*(C'\fR, \f(CW\*(C`atmega64a\*(C'\fR, \f(CW\*(C`atmega64c1\*(C'\fR, \f(CW\*(C`atmega64hve\*(C'\fR, \f(CW\*(C`atmega64hve2\*(C'\fR, \f(CW\*(C`atmega64m1\*(C'\fR, \f(CW\*(C`atmega64rfr2\*(C'\fR, \f(CW\*(C`atmega640\*(C'\fR, \f(CW\*(C`atmega644\*(C'\fR, \f(CW\*(C`atmega644a\*(C'\fR, \f(CW\*(C`atmega644p\*(C'\fR, \f(CW\*(C`atmega644pa\*(C'\fR, \f(CW\*(C`atmega644rfr2\*(C'\fR, \f(CW\*(C`atmega645\*(C'\fR, \f(CW\*(C`atmega645a\*(C'\fR, \f(CW\*(C`atmega645p\*(C'\fR, \f(CW\*(C`atmega6450\*(C'\fR, \f(CW\*(C`atmega6450a\*(C'\fR, \f(CW\*(C`atmega6450p\*(C'\fR, \f(CW\*(C`atmega649\*(C'\fR, \f(CW\*(C`atmega649a\*(C'\fR, \f(CW\*(C`atmega649p\*(C'\fR, \f(CW\*(C`atmega6490\*(C'\fR, \f(CW\*(C`atmega6490a\*(C'\fR, \f(CW\*(C`atmega6490p\*(C'\fR, \f(CW\*(C`at90can32\*(C'\fR, \f(CW\*(C`at90can64\*(C'\fR, \f(CW\*(C`at90pwm161\*(C'\fR, \f(CW\*(C`at90pwm216\*(C'\fR, \f(CW\*(C`at90pwm316\*(C'\fR, \f(CW\*(C`at90scr100\*(C'\fR, \f(CW\*(C`at90usb646\*(C'\fR, \f(CW\*(C`at90usb647\*(C'\fR, \f(CW\*(C`at94k\*(C'\fR, \f(CW\*(C`m3000\*(C'\fR.
  .ie n .IP """avr51""" 4
  .el .IP "\f(CWavr51\fR" 4
  .IX Item "avr51"
--- 16174,16190 ----
  .el .IP "\f(CWavr35\fR" 4
  .IX Item "avr35"
  \&\*(L"Classic\*(R" devices with 16@tie{}KiB up to 64@tie{}KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny167\*(C'\fR, \f(CW\*(C`attiny1634\*(C'\fR, \f(CW\*(C`atmega8u2\*(C'\fR, \f(CW\*(C`atmega16u2\*(C'\fR, \f(CW\*(C`atmega32u2\*(C'\fR, \f(CW\*(C`ata5505\*(C'\fR, \f(CW\*(C`ata6617c\*(C'\fR, \f(CW\*(C`ata664251\*(C'\fR, \f(CW\*(C`at90usb82\*(C'\fR, \f(CW\*(C`at90usb162\*(C'\fR.
  .ie n .IP """avr4""" 4
  .el .IP "\f(CWavr4\fR" 4
  .IX Item "avr4"
  \&\*(L"Enhanced\*(R" devices with up to 8@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`atmega48\*(C'\fR, \f(CW\*(C`atmega48a\*(C'\fR, \f(CW\*(C`atmega48p\*(C'\fR, \f(CW\*(C`atmega48pa\*(C'\fR, \f(CW\*(C`atmega48pb\*(C'\fR, \f(CW\*(C`atmega8\*(C'\fR, \f(CW\*(C`atmega8a\*(C'\fR, \f(CW\*(C`atmega8hva\*(C'\fR, \f(CW\*(C`atmega88\*(C'\fR, \f(CW\*(C`atmega88a\*(C'\fR, \f(CW\*(C`atmega88p\*(C'\fR, \f(CW\*(C`atmega88pa\*(C'\fR, \f(CW\*(C`atmega88pb\*(C'\fR, \f(CW\*(C`atmega8515\*(C'\fR, \f(CW\*(C`atmega8535\*(C'\fR, \f(CW\*(C`ata6285\*(C'\fR, \f(CW\*(C`ata6286\*(C'\fR, \f(CW\*(C`ata6289\*(C'\fR, \f(CW\*(C`ata6612c\*(C'\fR, \f(CW\*(C`at90pwm1\*(C'\fR, \f(CW\*(C`at90pwm2\*(C'\fR, \f(CW\*(C`at90pwm2b\*(C'\fR, \f(CW\*(C`at90pwm3\*(C'\fR, \f(CW\*(C`at90pwm3b\*(C'\fR, \f(CW\*(C`at90pwm81\*(C'\fR.
  .ie n .IP """avr5""" 4
  .el .IP "\f(CWavr5\fR" 4
  .IX Item "avr5"
  \&\*(L"Enhanced\*(R" devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`atmega16\*(C'\fR, \f(CW\*(C`atmega16a\*(C'\fR, \f(CW\*(C`atmega16hva\*(C'\fR, \f(CW\*(C`atmega16hva2\*(C'\fR, \f(CW\*(C`atmega16hvb\*(C'\fR, \f(CW\*(C`atmega16hvbrevb\*(C'\fR, \f(CW\*(C`atmega16m1\*(C'\fR, \f(CW\*(C`atmega16u4\*(C'\fR, \f(CW\*(C`atmega161\*(C'\fR, \f(CW\*(C`atmega162\*(C'\fR, \f(CW\*(C`atmega163\*(C'\fR, \f(CW\*(C`atmega164a\*(C'\fR, \f(CW\*(C`atmega164p\*(C'\fR, \f(CW\*(C`atmega164pa\*(C'\fR, \f(CW\*(C`atmega165\*(C'\fR, \f(CW\*(C`atmega165a\*(C'\fR, \f(CW\*(C`atmega165p\*(C'\fR, \f(CW\*(C`atmega165pa\*(C'\fR, \f(CW\*(C`atmega168\*(C'\fR, \f(CW\*(C`atmega168a\*(C'\fR, \f(CW\*(C`atmega168p\*(C'\fR, \f(CW\*(C`atmega168pa\*(C'\fR, \f(CW\*(C`atmega168pb\*(C'\fR, \f(CW\*(C`atmega169\*(C'\fR, \f(CW\*(C`atmega169a\*(C'\fR, \f(CW\*(C`atmega169p\*(C'\fR, \f(CW\*(C`atmega169pa\*(C'\fR, \f(CW\*(C`atmega32\*(C'\fR, \f(CW\*(C`atmega32a\*(C'\fR, \f(CW\*(C`atmega32c1\*(C'\fR, \f(CW\*(C`atmega32hvb\*(C'\fR, \f(CW\*(C`atmega32hvbrevb\*(C'\fR, \f(CW\*(C`atmega32m1\*(C'\fR, \f(CW\*(C`atmega32u4\*(C'\fR, \f(CW\*(C`atmega32u6\*(C'\fR, \f(CW\*(C`atmega323\*(C'\fR, \f(CW\*(C`atmega324a\*(C'\fR, \f(CW\*(C`atmega324p\*(C'\fR, \f(CW\*(C`atmega324pa\*(C'\fR, \f(CW\*(C`atmega325\*(C'\fR, \f(CW\*(C`atmega325a\*(C'\fR, \f(CW\*(C`atmega325p\*(C'\fR, \f(CW\*(C`atmega325pa\*(C'\fR, \f(CW\*(C`atmega328\*(C'\fR, \f(CW\*(C`atmega328p\*(C'\fR, \f(CW\*(C`atmega328pb\*(C'\fR, \f(CW\*(C`atmega329\*(C'\fR, \f(CW\*(C`atmega329a\*(C'\fR, \f(CW\*(C`atmega329p\*(C'\fR, \f(CW\*(C`atmega329pa\*(C'\fR, \f(CW\*(C`atmega3250\*(C'\fR, \f(CW\*(C`atmega3250a\*(C'\fR, \f(CW\*(C`atmega3250p\*(C'\fR, \f(CW\*(C`atmega3250pa\*(C'\fR, \f(CW\*(C`atmega3290\*(C'\fR, \f(CW\*(C`atmega3290a\*(C'\fR, \f(CW\*(C`atmega3290p\*(C'\fR, \f(CW\*(C`atmega3290pa\*(C'\fR, \f(CW\*(C`atmega406\*(C'\fR, \f(CW\*(C`atmega64\*(C'\fR, \f(CW\*(C`atmega64a\*(C'\fR, \f(CW\*(C`atmega64c1\*(C'\fR, \f(CW\*(C`atmega64hve\*(C'\fR, \f(CW\*(C`atmega64hve2\*(C'\fR, \f(CW\*(C`atmega64m1\*(C'\fR, \f(CW\*(C`atmega64rfr2\*(C'\fR, \f(CW\*(C`atmega640\*(C'\fR, \f(CW\*(C`atmega644\*(C'\fR, \f(CW\*(C`atmega644a\*(C'\fR, \f(CW\*(C`atmega644p\*(C'\fR, \f(CW\*(C`atmega644pa\*(C'\fR, \f(CW\*(C`atmega644rfr2\*(C'\fR, \f(CW\*(C`atmega645\*(C'\fR, \f(CW\*(C`atmega645a\*(C'\fR, \f(CW\*(C`atmega645p\*(C'\fR, \f(CW\*(C`atmega649\*(C'\fR, \f(CW\*(C`atmega649a\*(C'\fR, \f(CW\*(C`atmega649p\*(C'\fR, \f(CW\*(C`atmega6450\*(C'\fR, \f(CW\*(C`atmega6450a\*(C'\fR, \f(CW\*(C`atmega6450p\*(C'\fR, \f(CW\*(C`atmega6490\*(C'\fR, \f(CW\*(C`atmega6490a\*(C'\fR, \f(CW\*(C`atmega6490p\*(C'\fR, \f(CW\*(C`ata5795\*(C'\fR, \f(CW\*(C`ata5790\*(C'\fR, \f(CW\*(C`ata5790n\*(C'\fR, \f(CW\*(C`ata5791\*(C'\fR, \f(CW\*(C`ata6613c\*(C'\fR, \f(CW\*(C`ata6614q\*(C'\fR, \f(CW\*(C`ata5782\*(C'\fR, \f(CW\*(C`ata5831\*(C'\fR, \f(CW\*(C`ata8210\*(C'\fR, \f(CW\*(C`ata8510\*(C'\fR, \f(CW\*(C`ata5702m322\*(C'\fR, \f(CW\*(C`at90pwm161\*(C'\fR, \f(CW\*(C`at90pwm216\*(C'\fR, \f(CW\*(C`at90pwm316\*(C'\fR, \f(CW\*(C`at90can32\*(C'\fR, \f(CW\*(C`at90can64\*(C'\fR, \f(CW\*(C`at90scr100\*(C'\fR, \f(CW\*(C`at90usb646\*(C'\fR, \f(CW\*(C`at90usb647\*(C'\fR, \f(CW\*(C`at94k\*(C'\fR, \f(CW\*(C`m3000\*(C'\fR.
  .ie n .IP """avr51""" 4
  .el .IP "\f(CWavr51\fR" 4
  .IX Item "avr51"
*************** The default for this option is@tie{}\fBa
*** 16200,16211 ****
  .el .IP "\f(CWavrxmega2\fR" 4
  .IX Item "avrxmega2"
  \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 8@tie{}KiB and up to 64@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`atxmega16a4\*(C'\fR, \f(CW\*(C`atxmega16a4u\*(C'\fR, \f(CW\*(C`atxmega16c4\*(C'\fR, \f(CW\*(C`atxmega16d4\*(C'\fR, \f(CW\*(C`atxmega16e5\*(C'\fR, \f(CW\*(C`atxmega32a4\*(C'\fR, \f(CW\*(C`atxmega32a4u\*(C'\fR, \f(CW\*(C`atxmega32c3\*(C'\fR, \f(CW\*(C`atxmega32c4\*(C'\fR, \f(CW\*(C`atxmega32d3\*(C'\fR, \f(CW\*(C`atxmega32d4\*(C'\fR, \f(CW\*(C`atxmega32e5\*(C'\fR, \f(CW\*(C`atxmega8e5\*(C'\fR.
  .ie n .IP """avrxmega3""" 4
  .el .IP "\f(CWavrxmega3\fR" 4
  .IX Item "avrxmega3"
  \&\*(L"\s-1XMEGA\*(R"\s0 devices with up to 64@tie{}KiB of combined program memory and \s-1RAM,\s0 and with program memory visible in the \s-1RAM\s0 address space.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny1614\*(C'\fR, \f(CW\*(C`attiny1616\*(C'\fR, \f(CW\*(C`attiny1617\*(C'\fR, \f(CW\*(C`attiny212\*(C'\fR, \f(CW\*(C`attiny214\*(C'\fR, \f(CW\*(C`attiny3214\*(C'\fR, \f(CW\*(C`attiny3216\*(C'\fR, \f(CW\*(C`attiny3217\*(C'\fR, \f(CW\*(C`attiny412\*(C'\fR, \f(CW\*(C`attiny414\*(C'\fR, \f(CW\*(C`attiny416\*(C'\fR, \f(CW\*(C`attiny417\*(C'\fR, \f(CW\*(C`attiny814\*(C'\fR, \f(CW\*(C`attiny816\*(C'\fR, \f(CW\*(C`attiny817\*(C'\fR.
  .ie n .IP """avrxmega4""" 4
  .el .IP "\f(CWavrxmega4\fR" 4
  .IX Item "avrxmega4"
--- 16199,16210 ----
  .el .IP "\f(CWavrxmega2\fR" 4
  .IX Item "avrxmega2"
  \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 8@tie{}KiB and up to 64@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`atxmega8e5\*(C'\fR, \f(CW\*(C`atxmega16a4\*(C'\fR, \f(CW\*(C`atxmega16a4u\*(C'\fR, \f(CW\*(C`atxmega16c4\*(C'\fR, \f(CW\*(C`atxmega16d4\*(C'\fR, \f(CW\*(C`atxmega16e5\*(C'\fR, \f(CW\*(C`atxmega32a4\*(C'\fR, \f(CW\*(C`atxmega32a4u\*(C'\fR, \f(CW\*(C`atxmega32c3\*(C'\fR, \f(CW\*(C`atxmega32c4\*(C'\fR, \f(CW\*(C`atxmega32d3\*(C'\fR, \f(CW\*(C`atxmega32d4\*(C'\fR, \f(CW\*(C`atxmega32e5\*(C'\fR.
  .ie n .IP """avrxmega3""" 4
  .el .IP "\f(CWavrxmega3\fR" 4
  .IX Item "avrxmega3"
  \&\*(L"\s-1XMEGA\*(R"\s0 devices with up to 64@tie{}KiB of combined program memory and \s-1RAM,\s0 and with program memory visible in the \s-1RAM\s0 address space.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny202\*(C'\fR, \f(CW\*(C`attiny204\*(C'\fR, \f(CW\*(C`attiny212\*(C'\fR, \f(CW\*(C`attiny214\*(C'\fR, \f(CW\*(C`attiny402\*(C'\fR, \f(CW\*(C`attiny404\*(C'\fR, \f(CW\*(C`attiny406\*(C'\fR, \f(CW\*(C`attiny412\*(C'\fR, \f(CW\*(C`attiny414\*(C'\fR, \f(CW\*(C`attiny416\*(C'\fR, \f(CW\*(C`attiny417\*(C'\fR, \f(CW\*(C`attiny804\*(C'\fR, \f(CW\*(C`attiny806\*(C'\fR, \f(CW\*(C`attiny807\*(C'\fR, \f(CW\*(C`attiny814\*(C'\fR, \f(CW\*(C`attiny816\*(C'\fR, \f(CW\*(C`attiny817\*(C'\fR, \f(CW\*(C`attiny1604\*(C'\fR, \f(CW\*(C`attiny1606\*(C'\fR, \f(CW\*(C`attiny1607\*(C'\fR, \f(CW\*(C`attiny1614\*(C'\fR, \f(CW\*(C`attiny1616\*(C'\fR, \f(CW\*(C`attiny1617\*(C'\fR, \f(CW\*(C`attiny3214\*(C'\fR, \f(CW\*(C`attiny3216\*(C'\fR, \f(CW\*(C`attiny3217\*(C'\fR, \f(CW\*(C`atmega808\*(C'\fR, \f(CW\*(C`atmega809\*(C'\fR, \f(CW\*(C`atmega1608\*(C'\fR, \f(CW\*(C`atmega1609\*(C'\fR, \f(CW\*(C`atmega3208\*(C'\fR, \f(CW\*(C`atmega3209\*(C'\fR, \f(CW\*(C`atmega4808\*(C'\fR, \f(CW\*(C`atmega4809\*(C'\fR.
  .ie n .IP """avrxmega4""" 4
  .el .IP "\f(CWavrxmega4\fR" 4
  .IX Item "avrxmega4"
*************** The default for this option is@tie{}\fBa
*** 16230,16236 ****
  .el .IP "\f(CWavrtiny\fR" 4
  .IX Item "avrtiny"
  \&\*(L"\s-1TINY\*(R"\s0 Tiny core devices with 512@tie{}B up to 4@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny10\*(C'\fR, \f(CW\*(C`attiny20\*(C'\fR, \f(CW\*(C`attiny4\*(C'\fR, \f(CW\*(C`attiny40\*(C'\fR, \f(CW\*(C`attiny5\*(C'\fR, \f(CW\*(C`attiny9\*(C'\fR.
  .ie n .IP """avr1""" 4
  .el .IP "\f(CWavr1\fR" 4
  .IX Item "avr1"
--- 16229,16235 ----
  .el .IP "\f(CWavrtiny\fR" 4
  .IX Item "avrtiny"
  \&\*(L"\s-1TINY\*(R"\s0 Tiny core devices with 512@tie{}B up to 4@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny4\*(C'\fR, \f(CW\*(C`attiny5\*(C'\fR, \f(CW\*(C`attiny9\*(C'\fR, \f(CW\*(C`attiny10\*(C'\fR, \f(CW\*(C`attiny20\*(C'\fR, \f(CW\*(C`attiny40\*(C'\fR.
  .ie n .IP """avr1""" 4
  .el .IP "\f(CWavr1\fR" 4
  .IX Item "avr1"
*************** Allow to use truncation instead of round
*** 16365,16370 ****
--- 16364,16375 ----
  .IP "\fB\-nodevicelib\fR" 4
  .IX Item "-nodevicelib"
  Don't link against AVR-LibC's device specific library \f(CW\*(C`lib<mcu>.a\*(C'\fR.
+ .IP "\fB\-nodevicespecs\fR" 4
+ .IX Item "-nodevicespecs"
+ Don't add \fB\-specs=device\-specs/specs\-<mcu>\fR to the compiler driver's
+ command line.  The user takes responsibility for supplying the sub-processes
+ like compiler proper, assembler and linker with appropriate command line
+ options.
  .IP "\fB\-Waddr\-space\-convert\fR" 4
  .IX Item "-Waddr-space-convert"
  Warn about conversions between address spaces in the case where the
diff -Nrcpad gcc-8.3.0/gcc/doc/gcc.1 gcc-8.4.0/gcc/doc/gcc.1
*** gcc-8.3.0/gcc/doc/gcc.1	Fri Feb 22 14:35:28 2019
--- gcc-8.4.0/gcc/doc/gcc.1	Wed Mar  4 08:45:25 2020
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 "2019-02-22" "gcc-8.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 "2020-03-04" "gcc-8.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.
*** 571,578 ****
  \&\fB\-fdisable\-tree\-\fR\fIpass_name\fR 
  \&\fB\-fdisable\-tree\-\fR\fIpass-name\fR\fB=\fR\fIrange-list\fR 
  \&\fB\-fdump\-noaddr  \-fdump\-unnumbered  \-fdump\-unnumbered\-links 
! \&\-fdump\-class\-hierarchy\fR[\fB\-\fR\fIn\fR] 
! \&\fB\-fdump\-final\-insns\fR[\fB=\fR\fIfile\fR] 
  \&\fB\-fdump\-ipa\-all  \-fdump\-ipa\-cgraph  \-fdump\-ipa\-inline 
  \&\-fdump\-lang\-all 
  \&\-fdump\-lang\-\fR\fIswitch\fR 
--- 571,577 ----
  \&\fB\-fdisable\-tree\-\fR\fIpass_name\fR 
  \&\fB\-fdisable\-tree\-\fR\fIpass-name\fR\fB=\fR\fIrange-list\fR 
  \&\fB\-fdump\-noaddr  \-fdump\-unnumbered  \-fdump\-unnumbered\-links 
! \&\-fdump\-final\-insns\fR[\fB=\fR\fIfile\fR] 
  \&\fB\-fdump\-ipa\-all  \-fdump\-ipa\-cgraph  \-fdump\-ipa\-inline 
  \&\-fdump\-lang\-all 
  \&\-fdump\-lang\-\fR\fIswitch\fR 
*************** in the following sections.
*** 689,695 ****
  \&\-mn_flash=\fR\fIsize\fR  \fB\-mno\-interrupts 
  \&\-mmain\-is\-OS_task \-mrelax  \-mrmw  \-mstrict\-X  \-mtiny\-stack 
  \&\-mfract\-convert\-truncate 
! \&\-mshort\-calls  \-nodevicelib 
  \&\-Waddr\-space\-convert  \-Wmisspelled\-isr\fR
  .Sp
  \&\fIBlackfin Options\fR
--- 688,694 ----
  \&\-mn_flash=\fR\fIsize\fR  \fB\-mno\-interrupts 
  \&\-mmain\-is\-OS_task \-mrelax  \-mrmw  \-mstrict\-X  \-mtiny\-stack 
  \&\-mfract\-convert\-truncate 
! \&\-mshort\-calls \-nodevicelib  \-nodevicespecs 
  \&\-Waddr\-space\-convert  \-Wmisspelled\-isr\fR
  .Sp
  \&\fIBlackfin Options\fR
*************** would be rendered unable to decode locat
*** 6864,6871 ****
  .IP "\fB\-ginternal\-reset\-location\-views\fR" 4
  .IX Item "-ginternal-reset-location-views"
  .PD 0
! .IP "\fB\-gnointernal\-reset\-location\-views\fR" 4
! .IX Item "-gnointernal-reset-location-views"
  .PD
  Attempt to determine location views that can be omitted from location
  view lists.  This requires the compiler to have very accurate insn
--- 6863,6870 ----
  .IP "\fB\-ginternal\-reset\-location\-views\fR" 4
  .IX Item "-ginternal-reset-location-views"
  .PD 0
! .IP "\fB\-gno\-internal\-reset\-location\-views\fR" 4
! .IX Item "-gno-internal-reset-location-views"
  .PD
  Attempt to determine location views that can be omitted from location
  view lists.  This requires the compiler to have very accurate insn
*************** do not typically increase code size.
*** 7153,7160 ****
  .Sp
  \&\fB\-Os\fR disables the following optimization flags:
  \&\fB\-falign\-functions  \-falign\-jumps  \-falign\-loops 
! \&\-falign\-labels  \-freorder\-blocks  \-freorder\-blocks\-algorithm=stc 
! \&\-freorder\-blocks\-and\-partition  \-fprefetch\-loop\-arrays\fR
  .Sp
  It also enables \fB\-finline\-functions\fR, causes the compiler to tune for
  code size rather than execution speed, and performs further optimizations
--- 7152,7158 ----
  .Sp
  \&\fB\-Os\fR disables the following optimization flags:
  \&\fB\-falign\-functions  \-falign\-jumps  \-falign\-loops 
! \&\-falign\-labels  \-fprefetch\-loop\-arrays\fR
  .Sp
  It also enables \fB\-finline\-functions\fR, causes the compiler to tune for
  code size rather than execution speed, and performs further optimizations
*************** Specify the name of the target processor
*** 14232,14237 ****
--- 14230,14236 ----
  performance of the code.  Permissible values for this option are:
  \&\fBgeneric\fR, \fBcortex\-a35\fR, \fBcortex\-a53\fR, \fBcortex\-a55\fR,
  \&\fBcortex\-a57\fR, \fBcortex\-a72\fR, \fBcortex\-a73\fR, \fBcortex\-a75\fR,
+ \&\fBcortex\-a76\fR, \fBares\fR, \fBneoverse\-n1\fR
  \&\fBexynos\-m1\fR, \fBfalkor\fR, \fBqdf24xx\fR, \fBsaphira\fR,
  \&\fBxgene1\fR, \fBvulcan\fR, \fBthunderx\fR,
  \&\fBthunderxt88\fR, \fBthunderxt88p1\fR, \fBthunderxt81\fR,
*************** The default for this option is@tie{}\fBa
*** 16155,16171 ****
  .el .IP "\f(CWavr2\fR" 4
  .IX Item "avr2"
  \&\*(L"Classic\*(R" devices with up to 8@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny22\*(C'\fR, \f(CW\*(C`attiny26\*(C'\fR, \f(CW\*(C`at90c8534\*(C'\fR, \f(CW\*(C`at90s2313\*(C'\fR, \f(CW\*(C`at90s2323\*(C'\fR, \f(CW\*(C`at90s2333\*(C'\fR, \f(CW\*(C`at90s2343\*(C'\fR, \f(CW\*(C`at90s4414\*(C'\fR, \f(CW\*(C`at90s4433\*(C'\fR, \f(CW\*(C`at90s4434\*(C'\fR, \f(CW\*(C`at90s8515\*(C'\fR, \f(CW\*(C`at90s8535\*(C'\fR.
  .ie n .IP """avr25""" 4
  .el .IP "\f(CWavr25\fR" 4
  .IX Item "avr25"
  \&\*(L"Classic\*(R" devices with up to 8@tie{}KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`ata5272\*(C'\fR, \f(CW\*(C`ata6616c\*(C'\fR, \f(CW\*(C`attiny13\*(C'\fR, \f(CW\*(C`attiny13a\*(C'\fR, \f(CW\*(C`attiny2313\*(C'\fR, \f(CW\*(C`attiny2313a\*(C'\fR, \f(CW\*(C`attiny24\*(C'\fR, \f(CW\*(C`attiny24a\*(C'\fR, \f(CW\*(C`attiny25\*(C'\fR, \f(CW\*(C`attiny261\*(C'\fR, \f(CW\*(C`attiny261a\*(C'\fR, \f(CW\*(C`attiny43u\*(C'\fR, \f(CW\*(C`attiny4313\*(C'\fR, \f(CW\*(C`attiny44\*(C'\fR, \f(CW\*(C`attiny44a\*(C'\fR, \f(CW\*(C`attiny441\*(C'\fR, \f(CW\*(C`attiny45\*(C'\fR, \f(CW\*(C`attiny461\*(C'\fR, \f(CW\*(C`attiny461a\*(C'\fR, \f(CW\*(C`attiny48\*(C'\fR, \f(CW\*(C`attiny828\*(C'\fR, \f(CW\*(C`attiny84\*(C'\fR, \f(CW\*(C`attiny84a\*(C'\fR, \f(CW\*(C`attiny841\*(C'\fR, \f(CW\*(C`attiny85\*(C'\fR, \f(CW\*(C`attiny861\*(C'\fR, \f(CW\*(C`attiny861a\*(C'\fR, \f(CW\*(C`attiny87\*(C'\fR, \f(CW\*(C`attiny88\*(C'\fR, \f(CW\*(C`at86rf401\*(C'\fR.
  .ie n .IP """avr3""" 4
  .el .IP "\f(CWavr3\fR" 4
  .IX Item "avr3"
! \&\*(L"Classic\*(R" devices with 16@tie{}KiB up to 64@tie{}KiB of  program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`at43usb355\*(C'\fR, \f(CW\*(C`at76c711\*(C'\fR.
  .ie n .IP """avr31""" 4
  .el .IP "\f(CWavr31\fR" 4
  .IX Item "avr31"
--- 16154,16170 ----
  .el .IP "\f(CWavr2\fR" 4
  .IX Item "avr2"
  \&\*(L"Classic\*(R" devices with up to 8@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny22\*(C'\fR, \f(CW\*(C`attiny26\*(C'\fR, \f(CW\*(C`at90s2313\*(C'\fR, \f(CW\*(C`at90s2323\*(C'\fR, \f(CW\*(C`at90s2333\*(C'\fR, \f(CW\*(C`at90s2343\*(C'\fR, \f(CW\*(C`at90s4414\*(C'\fR, \f(CW\*(C`at90s4433\*(C'\fR, \f(CW\*(C`at90s4434\*(C'\fR, \f(CW\*(C`at90c8534\*(C'\fR, \f(CW\*(C`at90s8515\*(C'\fR, \f(CW\*(C`at90s8535\*(C'\fR.
  .ie n .IP """avr25""" 4
  .el .IP "\f(CWavr25\fR" 4
  .IX Item "avr25"
  \&\*(L"Classic\*(R" devices with up to 8@tie{}KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny13\*(C'\fR, \f(CW\*(C`attiny13a\*(C'\fR, \f(CW\*(C`attiny24\*(C'\fR, \f(CW\*(C`attiny24a\*(C'\fR, \f(CW\*(C`attiny25\*(C'\fR, \f(CW\*(C`attiny261\*(C'\fR, \f(CW\*(C`attiny261a\*(C'\fR, \f(CW\*(C`attiny2313\*(C'\fR, \f(CW\*(C`attiny2313a\*(C'\fR, \f(CW\*(C`attiny43u\*(C'\fR, \f(CW\*(C`attiny44\*(C'\fR, \f(CW\*(C`attiny44a\*(C'\fR, \f(CW\*(C`attiny45\*(C'\fR, \f(CW\*(C`attiny48\*(C'\fR, \f(CW\*(C`attiny441\*(C'\fR, \f(CW\*(C`attiny461\*(C'\fR, \f(CW\*(C`attiny461a\*(C'\fR, \f(CW\*(C`attiny4313\*(C'\fR, \f(CW\*(C`attiny84\*(C'\fR, \f(CW\*(C`attiny84a\*(C'\fR, \f(CW\*(C`attiny85\*(C'\fR, \f(CW\*(C`attiny87\*(C'\fR, \f(CW\*(C`attiny88\*(C'\fR, \f(CW\*(C`attiny828\*(C'\fR, \f(CW\*(C`attiny841\*(C'\fR, \f(CW\*(C`attiny861\*(C'\fR, \f(CW\*(C`attiny861a\*(C'\fR, \f(CW\*(C`ata5272\*(C'\fR, \f(CW\*(C`ata6616c\*(C'\fR, \f(CW\*(C`at86rf401\*(C'\fR.
  .ie n .IP """avr3""" 4
  .el .IP "\f(CWavr3\fR" 4
  .IX Item "avr3"
! \&\*(L"Classic\*(R" devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`at76c711\*(C'\fR, \f(CW\*(C`at43usb355\*(C'\fR.
  .ie n .IP """avr31""" 4
  .el .IP "\f(CWavr31\fR" 4
  .IX Item "avr31"
*************** The default for this option is@tie{}\fBa
*** 16175,16191 ****
  .el .IP "\f(CWavr35\fR" 4
  .IX Item "avr35"
  \&\*(L"Classic\*(R" devices with 16@tie{}KiB up to 64@tie{}KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`ata5505\*(C'\fR, \f(CW\*(C`ata6617c\*(C'\fR, \f(CW\*(C`ata664251\*(C'\fR, \f(CW\*(C`atmega16u2\*(C'\fR, \f(CW\*(C`atmega32u2\*(C'\fR, \f(CW\*(C`atmega8u2\*(C'\fR, \f(CW\*(C`attiny1634\*(C'\fR, \f(CW\*(C`attiny167\*(C'\fR, \f(CW\*(C`at90usb162\*(C'\fR, \f(CW\*(C`at90usb82\*(C'\fR.
  .ie n .IP """avr4""" 4
  .el .IP "\f(CWavr4\fR" 4
  .IX Item "avr4"
  \&\*(L"Enhanced\*(R" devices with up to 8@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`ata6285\*(C'\fR, \f(CW\*(C`ata6286\*(C'\fR, \f(CW\*(C`ata6289\*(C'\fR, \f(CW\*(C`ata6612c\*(C'\fR, \f(CW\*(C`atmega48\*(C'\fR, \f(CW\*(C`atmega48a\*(C'\fR, \f(CW\*(C`atmega48p\*(C'\fR, \f(CW\*(C`atmega48pa\*(C'\fR, \f(CW\*(C`atmega48pb\*(C'\fR, \f(CW\*(C`atmega8\*(C'\fR, \f(CW\*(C`atmega8a\*(C'\fR, \f(CW\*(C`atmega8hva\*(C'\fR, \f(CW\*(C`atmega8515\*(C'\fR, \f(CW\*(C`atmega8535\*(C'\fR, \f(CW\*(C`atmega88\*(C'\fR, \f(CW\*(C`atmega88a\*(C'\fR, \f(CW\*(C`atmega88p\*(C'\fR, \f(CW\*(C`atmega88pa\*(C'\fR, \f(CW\*(C`atmega88pb\*(C'\fR, \f(CW\*(C`at90pwm1\*(C'\fR, \f(CW\*(C`at90pwm2\*(C'\fR, \f(CW\*(C`at90pwm2b\*(C'\fR, \f(CW\*(C`at90pwm3\*(C'\fR, \f(CW\*(C`at90pwm3b\*(C'\fR, \f(CW\*(C`at90pwm81\*(C'\fR.
  .ie n .IP """avr5""" 4
  .el .IP "\f(CWavr5\fR" 4
  .IX Item "avr5"
  \&\*(L"Enhanced\*(R" devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`ata5702m322\*(C'\fR, \f(CW\*(C`ata5782\*(C'\fR, \f(CW\*(C`ata5790\*(C'\fR, \f(CW\*(C`ata5790n\*(C'\fR, \f(CW\*(C`ata5791\*(C'\fR, \f(CW\*(C`ata5795\*(C'\fR, \f(CW\*(C`ata5831\*(C'\fR, \f(CW\*(C`ata6613c\*(C'\fR, \f(CW\*(C`ata6614q\*(C'\fR, \f(CW\*(C`ata8210\*(C'\fR, \f(CW\*(C`ata8510\*(C'\fR, \f(CW\*(C`atmega16\*(C'\fR, \f(CW\*(C`atmega16a\*(C'\fR, \f(CW\*(C`atmega16hva\*(C'\fR, \f(CW\*(C`atmega16hva2\*(C'\fR, \f(CW\*(C`atmega16hvb\*(C'\fR, \f(CW\*(C`atmega16hvbrevb\*(C'\fR, \f(CW\*(C`atmega16m1\*(C'\fR, \f(CW\*(C`atmega16u4\*(C'\fR, \f(CW\*(C`atmega161\*(C'\fR, \f(CW\*(C`atmega162\*(C'\fR, \f(CW\*(C`atmega163\*(C'\fR, \f(CW\*(C`atmega164a\*(C'\fR, \f(CW\*(C`atmega164p\*(C'\fR, \f(CW\*(C`atmega164pa\*(C'\fR, \f(CW\*(C`atmega165\*(C'\fR, \f(CW\*(C`atmega165a\*(C'\fR, \f(CW\*(C`atmega165p\*(C'\fR, \f(CW\*(C`atmega165pa\*(C'\fR, \f(CW\*(C`atmega168\*(C'\fR, \f(CW\*(C`atmega168a\*(C'\fR, \f(CW\*(C`atmega168p\*(C'\fR, \f(CW\*(C`atmega168pa\*(C'\fR, \f(CW\*(C`atmega168pb\*(C'\fR, \f(CW\*(C`atmega169\*(C'\fR, \f(CW\*(C`atmega169a\*(C'\fR, \f(CW\*(C`atmega169p\*(C'\fR, \f(CW\*(C`atmega169pa\*(C'\fR, \f(CW\*(C`atmega32\*(C'\fR, \f(CW\*(C`atmega32a\*(C'\fR, \f(CW\*(C`atmega32c1\*(C'\fR, \f(CW\*(C`atmega32hvb\*(C'\fR, \f(CW\*(C`atmega32hvbrevb\*(C'\fR, \f(CW\*(C`atmega32m1\*(C'\fR, \f(CW\*(C`atmega32u4\*(C'\fR, \f(CW\*(C`atmega32u6\*(C'\fR, \f(CW\*(C`atmega323\*(C'\fR, \f(CW\*(C`atmega324a\*(C'\fR, \f(CW\*(C`atmega324p\*(C'\fR, \f(CW\*(C`atmega324pa\*(C'\fR, \f(CW\*(C`atmega325\*(C'\fR, \f(CW\*(C`atmega325a\*(C'\fR, \f(CW\*(C`atmega325p\*(C'\fR, \f(CW\*(C`atmega325pa\*(C'\fR, \f(CW\*(C`atmega3250\*(C'\fR, \f(CW\*(C`atmega3250a\*(C'\fR, \f(CW\*(C`atmega3250p\*(C'\fR, \f(CW\*(C`atmega3250pa\*(C'\fR, \f(CW\*(C`atmega328\*(C'\fR, \f(CW\*(C`atmega328p\*(C'\fR, \f(CW\*(C`atmega328pb\*(C'\fR, \f(CW\*(C`atmega329\*(C'\fR, \f(CW\*(C`atmega329a\*(C'\fR, \f(CW\*(C`atmega329p\*(C'\fR, \f(CW\*(C`atmega329pa\*(C'\fR, \f(CW\*(C`atmega3290\*(C'\fR, \f(CW\*(C`atmega3290a\*(C'\fR, \f(CW\*(C`atmega3290p\*(C'\fR, \f(CW\*(C`atmega3290pa\*(C'\fR, \f(CW\*(C`atmega406\*(C'\fR, \f(CW\*(C`atmega64\*(C'\fR, \f(CW\*(C`atmega64a\*(C'\fR, \f(CW\*(C`atmega64c1\*(C'\fR, \f(CW\*(C`atmega64hve\*(C'\fR, \f(CW\*(C`atmega64hve2\*(C'\fR, \f(CW\*(C`atmega64m1\*(C'\fR, \f(CW\*(C`atmega64rfr2\*(C'\fR, \f(CW\*(C`atmega640\*(C'\fR, \f(CW\*(C`atmega644\*(C'\fR, \f(CW\*(C`atmega644a\*(C'\fR, \f(CW\*(C`atmega644p\*(C'\fR, \f(CW\*(C`atmega644pa\*(C'\fR, \f(CW\*(C`atmega644rfr2\*(C'\fR, \f(CW\*(C`atmega645\*(C'\fR, \f(CW\*(C`atmega645a\*(C'\fR, \f(CW\*(C`atmega645p\*(C'\fR, \f(CW\*(C`atmega6450\*(C'\fR, \f(CW\*(C`atmega6450a\*(C'\fR, \f(CW\*(C`atmega6450p\*(C'\fR, \f(CW\*(C`atmega649\*(C'\fR, \f(CW\*(C`atmega649a\*(C'\fR, \f(CW\*(C`atmega649p\*(C'\fR, \f(CW\*(C`atmega6490\*(C'\fR, \f(CW\*(C`atmega6490a\*(C'\fR, \f(CW\*(C`atmega6490p\*(C'\fR, \f(CW\*(C`at90can32\*(C'\fR, \f(CW\*(C`at90can64\*(C'\fR, \f(CW\*(C`at90pwm161\*(C'\fR, \f(CW\*(C`at90pwm216\*(C'\fR, \f(CW\*(C`at90pwm316\*(C'\fR, \f(CW\*(C`at90scr100\*(C'\fR, \f(CW\*(C`at90usb646\*(C'\fR, \f(CW\*(C`at90usb647\*(C'\fR, \f(CW\*(C`at94k\*(C'\fR, \f(CW\*(C`m3000\*(C'\fR.
  .ie n .IP """avr51""" 4
  .el .IP "\f(CWavr51\fR" 4
  .IX Item "avr51"
--- 16174,16190 ----
  .el .IP "\f(CWavr35\fR" 4
  .IX Item "avr35"
  \&\*(L"Classic\*(R" devices with 16@tie{}KiB up to 64@tie{}KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny167\*(C'\fR, \f(CW\*(C`attiny1634\*(C'\fR, \f(CW\*(C`atmega8u2\*(C'\fR, \f(CW\*(C`atmega16u2\*(C'\fR, \f(CW\*(C`atmega32u2\*(C'\fR, \f(CW\*(C`ata5505\*(C'\fR, \f(CW\*(C`ata6617c\*(C'\fR, \f(CW\*(C`ata664251\*(C'\fR, \f(CW\*(C`at90usb82\*(C'\fR, \f(CW\*(C`at90usb162\*(C'\fR.
  .ie n .IP """avr4""" 4
  .el .IP "\f(CWavr4\fR" 4
  .IX Item "avr4"
  \&\*(L"Enhanced\*(R" devices with up to 8@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`atmega48\*(C'\fR, \f(CW\*(C`atmega48a\*(C'\fR, \f(CW\*(C`atmega48p\*(C'\fR, \f(CW\*(C`atmega48pa\*(C'\fR, \f(CW\*(C`atmega48pb\*(C'\fR, \f(CW\*(C`atmega8\*(C'\fR, \f(CW\*(C`atmega8a\*(C'\fR, \f(CW\*(C`atmega8hva\*(C'\fR, \f(CW\*(C`atmega88\*(C'\fR, \f(CW\*(C`atmega88a\*(C'\fR, \f(CW\*(C`atmega88p\*(C'\fR, \f(CW\*(C`atmega88pa\*(C'\fR, \f(CW\*(C`atmega88pb\*(C'\fR, \f(CW\*(C`atmega8515\*(C'\fR, \f(CW\*(C`atmega8535\*(C'\fR, \f(CW\*(C`ata6285\*(C'\fR, \f(CW\*(C`ata6286\*(C'\fR, \f(CW\*(C`ata6289\*(C'\fR, \f(CW\*(C`ata6612c\*(C'\fR, \f(CW\*(C`at90pwm1\*(C'\fR, \f(CW\*(C`at90pwm2\*(C'\fR, \f(CW\*(C`at90pwm2b\*(C'\fR, \f(CW\*(C`at90pwm3\*(C'\fR, \f(CW\*(C`at90pwm3b\*(C'\fR, \f(CW\*(C`at90pwm81\*(C'\fR.
  .ie n .IP """avr5""" 4
  .el .IP "\f(CWavr5\fR" 4
  .IX Item "avr5"
  \&\*(L"Enhanced\*(R" devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`atmega16\*(C'\fR, \f(CW\*(C`atmega16a\*(C'\fR, \f(CW\*(C`atmega16hva\*(C'\fR, \f(CW\*(C`atmega16hva2\*(C'\fR, \f(CW\*(C`atmega16hvb\*(C'\fR, \f(CW\*(C`atmega16hvbrevb\*(C'\fR, \f(CW\*(C`atmega16m1\*(C'\fR, \f(CW\*(C`atmega16u4\*(C'\fR, \f(CW\*(C`atmega161\*(C'\fR, \f(CW\*(C`atmega162\*(C'\fR, \f(CW\*(C`atmega163\*(C'\fR, \f(CW\*(C`atmega164a\*(C'\fR, \f(CW\*(C`atmega164p\*(C'\fR, \f(CW\*(C`atmega164pa\*(C'\fR, \f(CW\*(C`atmega165\*(C'\fR, \f(CW\*(C`atmega165a\*(C'\fR, \f(CW\*(C`atmega165p\*(C'\fR, \f(CW\*(C`atmega165pa\*(C'\fR, \f(CW\*(C`atmega168\*(C'\fR, \f(CW\*(C`atmega168a\*(C'\fR, \f(CW\*(C`atmega168p\*(C'\fR, \f(CW\*(C`atmega168pa\*(C'\fR, \f(CW\*(C`atmega168pb\*(C'\fR, \f(CW\*(C`atmega169\*(C'\fR, \f(CW\*(C`atmega169a\*(C'\fR, \f(CW\*(C`atmega169p\*(C'\fR, \f(CW\*(C`atmega169pa\*(C'\fR, \f(CW\*(C`atmega32\*(C'\fR, \f(CW\*(C`atmega32a\*(C'\fR, \f(CW\*(C`atmega32c1\*(C'\fR, \f(CW\*(C`atmega32hvb\*(C'\fR, \f(CW\*(C`atmega32hvbrevb\*(C'\fR, \f(CW\*(C`atmega32m1\*(C'\fR, \f(CW\*(C`atmega32u4\*(C'\fR, \f(CW\*(C`atmega32u6\*(C'\fR, \f(CW\*(C`atmega323\*(C'\fR, \f(CW\*(C`atmega324a\*(C'\fR, \f(CW\*(C`atmega324p\*(C'\fR, \f(CW\*(C`atmega324pa\*(C'\fR, \f(CW\*(C`atmega325\*(C'\fR, \f(CW\*(C`atmega325a\*(C'\fR, \f(CW\*(C`atmega325p\*(C'\fR, \f(CW\*(C`atmega325pa\*(C'\fR, \f(CW\*(C`atmega328\*(C'\fR, \f(CW\*(C`atmega328p\*(C'\fR, \f(CW\*(C`atmega328pb\*(C'\fR, \f(CW\*(C`atmega329\*(C'\fR, \f(CW\*(C`atmega329a\*(C'\fR, \f(CW\*(C`atmega329p\*(C'\fR, \f(CW\*(C`atmega329pa\*(C'\fR, \f(CW\*(C`atmega3250\*(C'\fR, \f(CW\*(C`atmega3250a\*(C'\fR, \f(CW\*(C`atmega3250p\*(C'\fR, \f(CW\*(C`atmega3250pa\*(C'\fR, \f(CW\*(C`atmega3290\*(C'\fR, \f(CW\*(C`atmega3290a\*(C'\fR, \f(CW\*(C`atmega3290p\*(C'\fR, \f(CW\*(C`atmega3290pa\*(C'\fR, \f(CW\*(C`atmega406\*(C'\fR, \f(CW\*(C`atmega64\*(C'\fR, \f(CW\*(C`atmega64a\*(C'\fR, \f(CW\*(C`atmega64c1\*(C'\fR, \f(CW\*(C`atmega64hve\*(C'\fR, \f(CW\*(C`atmega64hve2\*(C'\fR, \f(CW\*(C`atmega64m1\*(C'\fR, \f(CW\*(C`atmega64rfr2\*(C'\fR, \f(CW\*(C`atmega640\*(C'\fR, \f(CW\*(C`atmega644\*(C'\fR, \f(CW\*(C`atmega644a\*(C'\fR, \f(CW\*(C`atmega644p\*(C'\fR, \f(CW\*(C`atmega644pa\*(C'\fR, \f(CW\*(C`atmega644rfr2\*(C'\fR, \f(CW\*(C`atmega645\*(C'\fR, \f(CW\*(C`atmega645a\*(C'\fR, \f(CW\*(C`atmega645p\*(C'\fR, \f(CW\*(C`atmega649\*(C'\fR, \f(CW\*(C`atmega649a\*(C'\fR, \f(CW\*(C`atmega649p\*(C'\fR, \f(CW\*(C`atmega6450\*(C'\fR, \f(CW\*(C`atmega6450a\*(C'\fR, \f(CW\*(C`atmega6450p\*(C'\fR, \f(CW\*(C`atmega6490\*(C'\fR, \f(CW\*(C`atmega6490a\*(C'\fR, \f(CW\*(C`atmega6490p\*(C'\fR, \f(CW\*(C`ata5795\*(C'\fR, \f(CW\*(C`ata5790\*(C'\fR, \f(CW\*(C`ata5790n\*(C'\fR, \f(CW\*(C`ata5791\*(C'\fR, \f(CW\*(C`ata6613c\*(C'\fR, \f(CW\*(C`ata6614q\*(C'\fR, \f(CW\*(C`ata5782\*(C'\fR, \f(CW\*(C`ata5831\*(C'\fR, \f(CW\*(C`ata8210\*(C'\fR, \f(CW\*(C`ata8510\*(C'\fR, \f(CW\*(C`ata5702m322\*(C'\fR, \f(CW\*(C`at90pwm161\*(C'\fR, \f(CW\*(C`at90pwm216\*(C'\fR, \f(CW\*(C`at90pwm316\*(C'\fR, \f(CW\*(C`at90can32\*(C'\fR, \f(CW\*(C`at90can64\*(C'\fR, \f(CW\*(C`at90scr100\*(C'\fR, \f(CW\*(C`at90usb646\*(C'\fR, \f(CW\*(C`at90usb647\*(C'\fR, \f(CW\*(C`at94k\*(C'\fR, \f(CW\*(C`m3000\*(C'\fR.
  .ie n .IP """avr51""" 4
  .el .IP "\f(CWavr51\fR" 4
  .IX Item "avr51"
*************** The default for this option is@tie{}\fBa
*** 16200,16211 ****
  .el .IP "\f(CWavrxmega2\fR" 4
  .IX Item "avrxmega2"
  \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 8@tie{}KiB and up to 64@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`atxmega16a4\*(C'\fR, \f(CW\*(C`atxmega16a4u\*(C'\fR, \f(CW\*(C`atxmega16c4\*(C'\fR, \f(CW\*(C`atxmega16d4\*(C'\fR, \f(CW\*(C`atxmega16e5\*(C'\fR, \f(CW\*(C`atxmega32a4\*(C'\fR, \f(CW\*(C`atxmega32a4u\*(C'\fR, \f(CW\*(C`atxmega32c3\*(C'\fR, \f(CW\*(C`atxmega32c4\*(C'\fR, \f(CW\*(C`atxmega32d3\*(C'\fR, \f(CW\*(C`atxmega32d4\*(C'\fR, \f(CW\*(C`atxmega32e5\*(C'\fR, \f(CW\*(C`atxmega8e5\*(C'\fR.
  .ie n .IP """avrxmega3""" 4
  .el .IP "\f(CWavrxmega3\fR" 4
  .IX Item "avrxmega3"
  \&\*(L"\s-1XMEGA\*(R"\s0 devices with up to 64@tie{}KiB of combined program memory and \s-1RAM,\s0 and with program memory visible in the \s-1RAM\s0 address space.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny1614\*(C'\fR, \f(CW\*(C`attiny1616\*(C'\fR, \f(CW\*(C`attiny1617\*(C'\fR, \f(CW\*(C`attiny212\*(C'\fR, \f(CW\*(C`attiny214\*(C'\fR, \f(CW\*(C`attiny3214\*(C'\fR, \f(CW\*(C`attiny3216\*(C'\fR, \f(CW\*(C`attiny3217\*(C'\fR, \f(CW\*(C`attiny412\*(C'\fR, \f(CW\*(C`attiny414\*(C'\fR, \f(CW\*(C`attiny416\*(C'\fR, \f(CW\*(C`attiny417\*(C'\fR, \f(CW\*(C`attiny814\*(C'\fR, \f(CW\*(C`attiny816\*(C'\fR, \f(CW\*(C`attiny817\*(C'\fR.
  .ie n .IP """avrxmega4""" 4
  .el .IP "\f(CWavrxmega4\fR" 4
  .IX Item "avrxmega4"
--- 16199,16210 ----
  .el .IP "\f(CWavrxmega2\fR" 4
  .IX Item "avrxmega2"
  \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 8@tie{}KiB and up to 64@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`atxmega8e5\*(C'\fR, \f(CW\*(C`atxmega16a4\*(C'\fR, \f(CW\*(C`atxmega16a4u\*(C'\fR, \f(CW\*(C`atxmega16c4\*(C'\fR, \f(CW\*(C`atxmega16d4\*(C'\fR, \f(CW\*(C`atxmega16e5\*(C'\fR, \f(CW\*(C`atxmega32a4\*(C'\fR, \f(CW\*(C`atxmega32a4u\*(C'\fR, \f(CW\*(C`atxmega32c3\*(C'\fR, \f(CW\*(C`atxmega32c4\*(C'\fR, \f(CW\*(C`atxmega32d3\*(C'\fR, \f(CW\*(C`atxmega32d4\*(C'\fR, \f(CW\*(C`atxmega32e5\*(C'\fR.
  .ie n .IP """avrxmega3""" 4
  .el .IP "\f(CWavrxmega3\fR" 4
  .IX Item "avrxmega3"
  \&\*(L"\s-1XMEGA\*(R"\s0 devices with up to 64@tie{}KiB of combined program memory and \s-1RAM,\s0 and with program memory visible in the \s-1RAM\s0 address space.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny202\*(C'\fR, \f(CW\*(C`attiny204\*(C'\fR, \f(CW\*(C`attiny212\*(C'\fR, \f(CW\*(C`attiny214\*(C'\fR, \f(CW\*(C`attiny402\*(C'\fR, \f(CW\*(C`attiny404\*(C'\fR, \f(CW\*(C`attiny406\*(C'\fR, \f(CW\*(C`attiny412\*(C'\fR, \f(CW\*(C`attiny414\*(C'\fR, \f(CW\*(C`attiny416\*(C'\fR, \f(CW\*(C`attiny417\*(C'\fR, \f(CW\*(C`attiny804\*(C'\fR, \f(CW\*(C`attiny806\*(C'\fR, \f(CW\*(C`attiny807\*(C'\fR, \f(CW\*(C`attiny814\*(C'\fR, \f(CW\*(C`attiny816\*(C'\fR, \f(CW\*(C`attiny817\*(C'\fR, \f(CW\*(C`attiny1604\*(C'\fR, \f(CW\*(C`attiny1606\*(C'\fR, \f(CW\*(C`attiny1607\*(C'\fR, \f(CW\*(C`attiny1614\*(C'\fR, \f(CW\*(C`attiny1616\*(C'\fR, \f(CW\*(C`attiny1617\*(C'\fR, \f(CW\*(C`attiny3214\*(C'\fR, \f(CW\*(C`attiny3216\*(C'\fR, \f(CW\*(C`attiny3217\*(C'\fR, \f(CW\*(C`atmega808\*(C'\fR, \f(CW\*(C`atmega809\*(C'\fR, \f(CW\*(C`atmega1608\*(C'\fR, \f(CW\*(C`atmega1609\*(C'\fR, \f(CW\*(C`atmega3208\*(C'\fR, \f(CW\*(C`atmega3209\*(C'\fR, \f(CW\*(C`atmega4808\*(C'\fR, \f(CW\*(C`atmega4809\*(C'\fR.
  .ie n .IP """avrxmega4""" 4
  .el .IP "\f(CWavrxmega4\fR" 4
  .IX Item "avrxmega4"
*************** The default for this option is@tie{}\fBa
*** 16230,16236 ****
  .el .IP "\f(CWavrtiny\fR" 4
  .IX Item "avrtiny"
  \&\*(L"\s-1TINY\*(R"\s0 Tiny core devices with 512@tie{}B up to 4@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny10\*(C'\fR, \f(CW\*(C`attiny20\*(C'\fR, \f(CW\*(C`attiny4\*(C'\fR, \f(CW\*(C`attiny40\*(C'\fR, \f(CW\*(C`attiny5\*(C'\fR, \f(CW\*(C`attiny9\*(C'\fR.
  .ie n .IP """avr1""" 4
  .el .IP "\f(CWavr1\fR" 4
  .IX Item "avr1"
--- 16229,16235 ----
  .el .IP "\f(CWavrtiny\fR" 4
  .IX Item "avrtiny"
  \&\*(L"\s-1TINY\*(R"\s0 Tiny core devices with 512@tie{}B up to 4@tie{}KiB of program memory.
! \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny4\*(C'\fR, \f(CW\*(C`attiny5\*(C'\fR, \f(CW\*(C`attiny9\*(C'\fR, \f(CW\*(C`attiny10\*(C'\fR, \f(CW\*(C`attiny20\*(C'\fR, \f(CW\*(C`attiny40\*(C'\fR.
  .ie n .IP """avr1""" 4
  .el .IP "\f(CWavr1\fR" 4
  .IX Item "avr1"
*************** Allow to use truncation instead of round
*** 16365,16370 ****
--- 16364,16375 ----
  .IP "\fB\-nodevicelib\fR" 4
  .IX Item "-nodevicelib"
  Don't link against AVR-LibC's device specific library \f(CW\*(C`lib<mcu>.a\*(C'\fR.
+ .IP "\fB\-nodevicespecs\fR" 4
+ .IX Item "-nodevicespecs"
+ Don't add \fB\-specs=device\-specs/specs\-<mcu>\fR to the compiler driver's
+ command line.  The user takes responsibility for supplying the sub-processes
+ like compiler proper, assembler and linker with appropriate command line
+ options.
  .IP "\fB\-Waddr\-space\-convert\fR" 4
  .IX Item "-Waddr-space-convert"
  Warn about conversions between address spaces in the case where the
diff -Nrcpad gcc-8.3.0/gcc/doc/gcc.info gcc-8.4.0/gcc/doc/gcc.info
*** gcc-8.3.0/gcc/doc/gcc.info	Fri Feb 22 14:35:37 2019
--- gcc-8.4.0/gcc/doc/gcc.info	Wed Mar  4 08:45:33 2020
*************** Introduction
*** 58,64 ****
  
  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 8.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.
--- 58,64 ----
  
  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 8.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.
*************** _Developer Options_
*** 872,878 ****
            -fdisable-tree-PASS_NAME
            -fdisable-tree-PASS-NAME=RANGE-LIST
            -fdump-noaddr  -fdump-unnumbered  -fdump-unnumbered-links
-           -fdump-class-hierarchy[-N]
            -fdump-final-insns[=FILE]
            -fdump-ipa-all  -fdump-ipa-cgraph  -fdump-ipa-inline
            -fdump-lang-all
--- 872,877 ----
*************** _Machine-Dependent Options_
*** 992,998 ****
            -mn_flash=SIZE  -mno-interrupts
            -mmain-is-OS_task -mrelax  -mrmw  -mstrict-X  -mtiny-stack
            -mfract-convert-truncate
!           -mshort-calls  -nodevicelib
            -Waddr-space-convert  -Wmisspelled-isr
  
       _Blackfin Options_
--- 991,997 ----
            -mn_flash=SIZE  -mno-interrupts
            -mmain-is-OS_task -mrelax  -mrmw  -mstrict-X  -mtiny-stack
            -mfract-convert-truncate
!           -mshort-calls -nodevicelib  -nodevicespecs
            -Waddr-space-convert  -Wmisspelled-isr
  
       _Blackfin Options_
*************** experience.
*** 6790,6796 ****
       rendered unable to decode location lists using it.
  
  '-ginternal-reset-location-views'
! '-gnointernal-reset-location-views'
       Attempt to determine location views that can be omitted from
       location view lists.  This requires the compiler to have very
       accurate insn length estimates, which isn't always the case, and it
--- 6789,6795 ----
       rendered unable to decode location lists using it.
  
  '-ginternal-reset-location-views'
! '-gno-internal-reset-location-views'
       Attempt to determine location views that can be omitted from
       location view lists.  This requires the compiler to have very
       accurate insn length estimates, which isn't always the case, and it
*************** find out the exact set of optimizations
*** 7074,7081 ****
  
       '-Os' disables the following optimization flags:
            -falign-functions  -falign-jumps  -falign-loops
!           -falign-labels  -freorder-blocks  -freorder-blocks-algorithm=stc
!           -freorder-blocks-and-partition  -fprefetch-loop-arrays
  
       It also enables '-finline-functions', causes the compiler to tune
       for code size rather than execution speed, and performs further
--- 7073,7079 ----
  
       '-Os' disables the following optimization flags:
            -falign-functions  -falign-jumps  -falign-loops
!           -falign-labels  -fprefetch-loop-arrays
  
       It also enables '-finline-functions', causes the compiler to tune
       for code size rather than execution speed, and performs further
*************** These options are defined for AArch64 im
*** 14075,14085 ****
       the performance of the code.  Permissible values for this option
       are: 'generic', 'cortex-a35', 'cortex-a53', 'cortex-a55',
       'cortex-a57', 'cortex-a72', 'cortex-a73', 'cortex-a75',
!      'exynos-m1', 'falkor', 'qdf24xx', 'saphira', 'xgene1', 'vulcan',
!      'thunderx', 'thunderxt88', 'thunderxt88p1', 'thunderxt81',
!      'thunderxt83', 'thunderx2t99', 'cortex-a57.cortex-a53',
!      'cortex-a72.cortex-a53', 'cortex-a73.cortex-a35',
!      'cortex-a73.cortex-a53', 'cortex-a75.cortex-a55', 'native'.
  
       The values 'cortex-a57.cortex-a53', 'cortex-a72.cortex-a53',
       'cortex-a73.cortex-a35', 'cortex-a73.cortex-a53',
--- 14073,14084 ----
       the performance of the code.  Permissible values for this option
       are: 'generic', 'cortex-a35', 'cortex-a53', 'cortex-a55',
       'cortex-a57', 'cortex-a72', 'cortex-a73', 'cortex-a75',
!      'cortex-a76', 'ares', 'neoverse-n1' 'exynos-m1', 'falkor',
!      'qdf24xx', 'saphira', 'xgene1', 'vulcan', 'thunderx',
!      'thunderxt88', 'thunderxt88p1', 'thunderxt81', 'thunderxt83',
!      'thunderx2t99', 'cortex-a57.cortex-a53', 'cortex-a72.cortex-a53',
!      'cortex-a73.cortex-a35', 'cortex-a73.cortex-a53',
!      'cortex-a75.cortex-a55', 'native'.
  
       The values 'cortex-a57.cortex-a53', 'cortex-a72.cortex-a53',
       'cortex-a73.cortex-a35', 'cortex-a73.cortex-a53',
*************** These options are defined for AVR implem
*** 15822,15846 ****
  
       'avr2'
            "Classic" devices with up to 8 KiB of program memory.
!           MCU = 'attiny22', 'attiny26', 'at90c8534', 'at90s2313',
!           'at90s2323', 'at90s2333', 'at90s2343', 'at90s4414',
!           'at90s4433', 'at90s4434', 'at90s8515', 'at90s8535'.
  
       'avr25'
            "Classic" devices with up to 8 KiB of program memory and with
            the 'MOVW' instruction.
!           MCU = 'ata5272', 'ata6616c', 'attiny13', 'attiny13a',
!           'attiny2313', 'attiny2313a', 'attiny24', 'attiny24a',
!           'attiny25', 'attiny261', 'attiny261a', 'attiny43u',
!           'attiny4313', 'attiny44', 'attiny44a', 'attiny441',
!           'attiny45', 'attiny461', 'attiny461a', 'attiny48',
!           'attiny828', 'attiny84', 'attiny84a', 'attiny841', 'attiny85',
!           'attiny861', 'attiny861a', 'attiny87', 'attiny88',
!           'at86rf401'.
  
       'avr3'
            "Classic" devices with 16 KiB up to 64 KiB of program memory.
!           MCU = 'at43usb355', 'at76c711'.
  
       'avr31'
            "Classic" devices with 128 KiB of program memory.
--- 15821,15844 ----
  
       'avr2'
            "Classic" devices with up to 8 KiB of program memory.
!           MCU = 'attiny22', 'attiny26', 'at90s2313', 'at90s2323',
!           'at90s2333', 'at90s2343', 'at90s4414', 'at90s4433',
!           'at90s4434', 'at90c8534', 'at90s8515', 'at90s8535'.
  
       'avr25'
            "Classic" devices with up to 8 KiB of program memory and with
            the 'MOVW' instruction.
!           MCU = 'attiny13', 'attiny13a', 'attiny24', 'attiny24a',
!           'attiny25', 'attiny261', 'attiny261a', 'attiny2313',
!           'attiny2313a', 'attiny43u', 'attiny44', 'attiny44a',
!           'attiny45', 'attiny48', 'attiny441', 'attiny461',
!           'attiny461a', 'attiny4313', 'attiny84', 'attiny84a',
!           'attiny85', 'attiny87', 'attiny88', 'attiny828', 'attiny841',
!           'attiny861', 'attiny861a', 'ata5272', 'ata6616c', 'at86rf401'.
  
       'avr3'
            "Classic" devices with 16 KiB up to 64 KiB of program memory.
!           MCU = 'at76c711', 'at43usb355'.
  
       'avr31'
            "Classic" devices with 128 KiB of program memory.
*************** These options are defined for AVR implem
*** 15849,15896 ****
       'avr35'
            "Classic" devices with 16 KiB up to 64 KiB of program memory
            and with the 'MOVW' instruction.
!           MCU = 'ata5505', 'ata6617c', 'ata664251', 'atmega16u2',
!           'atmega32u2', 'atmega8u2', 'attiny1634', 'attiny167',
!           'at90usb162', 'at90usb82'.
  
       'avr4'
            "Enhanced" devices with up to 8 KiB of program memory.
!           MCU = 'ata6285', 'ata6286', 'ata6289', 'ata6612c', 'atmega48',
!           'atmega48a', 'atmega48p', 'atmega48pa', 'atmega48pb',
!           'atmega8', 'atmega8a', 'atmega8hva', 'atmega8515',
!           'atmega8535', 'atmega88', 'atmega88a', 'atmega88p',
!           'atmega88pa', 'atmega88pb', 'at90pwm1', 'at90pwm2',
!           'at90pwm2b', 'at90pwm3', 'at90pwm3b', 'at90pwm81'.
  
       'avr5'
            "Enhanced" devices with 16 KiB up to 64 KiB of program memory.
  
!           MCU = 'ata5702m322', 'ata5782', 'ata5790', 'ata5790n',
!           'ata5791', 'ata5795', 'ata5831', 'ata6613c', 'ata6614q',
!           'ata8210', 'ata8510', 'atmega16', 'atmega16a', 'atmega16hva',
!           'atmega16hva2', 'atmega16hvb', 'atmega16hvbrevb',
!           'atmega16m1', 'atmega16u4', 'atmega161', 'atmega162',
!           'atmega163', 'atmega164a', 'atmega164p', 'atmega164pa',
!           'atmega165', 'atmega165a', 'atmega165p', 'atmega165pa',
!           'atmega168', 'atmega168a', 'atmega168p', 'atmega168pa',
!           'atmega168pb', 'atmega169', 'atmega169a', 'atmega169p',
!           'atmega169pa', 'atmega32', 'atmega32a', 'atmega32c1',
!           'atmega32hvb', 'atmega32hvbrevb', 'atmega32m1', 'atmega32u4',
!           'atmega32u6', 'atmega323', 'atmega324a', 'atmega324p',
!           'atmega324pa', 'atmega325', 'atmega325a', 'atmega325p',
!           'atmega325pa', 'atmega3250', 'atmega3250a', 'atmega3250p',
!           'atmega3250pa', 'atmega328', 'atmega328p', 'atmega328pb',
!           'atmega329', 'atmega329a', 'atmega329p', 'atmega329pa',
!           'atmega3290', 'atmega3290a', 'atmega3290p', 'atmega3290pa',
!           'atmega406', 'atmega64', 'atmega64a', 'atmega64c1',
!           'atmega64hve', 'atmega64hve2', 'atmega64m1', 'atmega64rfr2',
!           'atmega640', 'atmega644', 'atmega644a', 'atmega644p',
!           'atmega644pa', 'atmega644rfr2', 'atmega645', 'atmega645a',
!           'atmega645p', 'atmega6450', 'atmega6450a', 'atmega6450p',
!           'atmega649', 'atmega649a', 'atmega649p', 'atmega6490',
!           'atmega6490a', 'atmega6490p', 'at90can32', 'at90can64',
!           'at90pwm161', 'at90pwm216', 'at90pwm316', 'at90scr100',
!           'at90usb646', 'at90usb647', 'at94k', 'm3000'.
  
       'avr51'
            "Enhanced" devices with 128 KiB of program memory.
--- 15847,15894 ----
       'avr35'
            "Classic" devices with 16 KiB up to 64 KiB of program memory
            and with the 'MOVW' instruction.
!           MCU = 'attiny167', 'attiny1634', 'atmega8u2', 'atmega16u2',
!           'atmega32u2', 'ata5505', 'ata6617c', 'ata664251', 'at90usb82',
!           'at90usb162'.
  
       'avr4'
            "Enhanced" devices with up to 8 KiB of program memory.
!           MCU = 'atmega48', 'atmega48a', 'atmega48p', 'atmega48pa',
!           'atmega48pb', 'atmega8', 'atmega8a', 'atmega8hva', 'atmega88',
!           'atmega88a', 'atmega88p', 'atmega88pa', 'atmega88pb',
!           'atmega8515', 'atmega8535', 'ata6285', 'ata6286', 'ata6289',
!           'ata6612c', 'at90pwm1', 'at90pwm2', 'at90pwm2b', 'at90pwm3',
!           'at90pwm3b', 'at90pwm81'.
  
       'avr5'
            "Enhanced" devices with 16 KiB up to 64 KiB of program memory.
  
!           MCU = 'atmega16', 'atmega16a', 'atmega16hva', 'atmega16hva2',
!           'atmega16hvb', 'atmega16hvbrevb', 'atmega16m1', 'atmega16u4',
!           'atmega161', 'atmega162', 'atmega163', 'atmega164a',
!           'atmega164p', 'atmega164pa', 'atmega165', 'atmega165a',
!           'atmega165p', 'atmega165pa', 'atmega168', 'atmega168a',
!           'atmega168p', 'atmega168pa', 'atmega168pb', 'atmega169',
!           'atmega169a', 'atmega169p', 'atmega169pa', 'atmega32',
!           'atmega32a', 'atmega32c1', 'atmega32hvb', 'atmega32hvbrevb',
!           'atmega32m1', 'atmega32u4', 'atmega32u6', 'atmega323',
!           'atmega324a', 'atmega324p', 'atmega324pa', 'atmega325',
!           'atmega325a', 'atmega325p', 'atmega325pa', 'atmega328',
!           'atmega328p', 'atmega328pb', 'atmega329', 'atmega329a',
!           'atmega329p', 'atmega329pa', 'atmega3250', 'atmega3250a',
!           'atmega3250p', 'atmega3250pa', 'atmega3290', 'atmega3290a',
!           'atmega3290p', 'atmega3290pa', 'atmega406', 'atmega64',
!           'atmega64a', 'atmega64c1', 'atmega64hve', 'atmega64hve2',
!           'atmega64m1', 'atmega64rfr2', 'atmega640', 'atmega644',
!           'atmega644a', 'atmega644p', 'atmega644pa', 'atmega644rfr2',
!           'atmega645', 'atmega645a', 'atmega645p', 'atmega649',
!           'atmega649a', 'atmega649p', 'atmega6450', 'atmega6450a',
!           'atmega6450p', 'atmega6490', 'atmega6490a', 'atmega6490p',
!           'ata5795', 'ata5790', 'ata5790n', 'ata5791', 'ata6613c',
!           'ata6614q', 'ata5782', 'ata5831', 'ata8210', 'ata8510',
!           'ata5702m322', 'at90pwm161', 'at90pwm216', 'at90pwm316',
!           'at90can32', 'at90can64', 'at90scr100', 'at90usb646',
!           'at90usb647', 'at94k', 'm3000'.
  
       'avr51'
            "Enhanced" devices with 128 KiB of program memory.
*************** These options are defined for AVR implem
*** 15908,15926 ****
       'avrxmega2'
            "XMEGA" devices with more than 8 KiB and up to 64 KiB of
            program memory.
!           MCU = 'atxmega16a4', 'atxmega16a4u', 'atxmega16c4',
!           'atxmega16d4', 'atxmega16e5', 'atxmega32a4', 'atxmega32a4u',
!           'atxmega32c3', 'atxmega32c4', 'atxmega32d3', 'atxmega32d4',
!           'atxmega32e5', 'atxmega8e5'.
  
       'avrxmega3'
            "XMEGA" devices with up to 64 KiB of combined program memory
            and RAM, and with program memory visible in the RAM address
            space.
!           MCU = 'attiny1614', 'attiny1616', 'attiny1617', 'attiny212',
!           'attiny214', 'attiny3214', 'attiny3216', 'attiny3217',
!           'attiny412', 'attiny414', 'attiny416', 'attiny417',
!           'attiny814', 'attiny816', 'attiny817'.
  
       'avrxmega4'
            "XMEGA" devices with more than 64 KiB and up to 128 KiB of
--- 15906,15929 ----
       'avrxmega2'
            "XMEGA" devices with more than 8 KiB and up to 64 KiB of
            program memory.
!           MCU = 'atxmega8e5', 'atxmega16a4', 'atxmega16a4u',
!           'atxmega16c4', 'atxmega16d4', 'atxmega16e5', 'atxmega32a4',
!           'atxmega32a4u', 'atxmega32c3', 'atxmega32c4', 'atxmega32d3',
!           'atxmega32d4', 'atxmega32e5'.
  
       'avrxmega3'
            "XMEGA" devices with up to 64 KiB of combined program memory
            and RAM, and with program memory visible in the RAM address
            space.
!           MCU = 'attiny202', 'attiny204', 'attiny212', 'attiny214',
!           'attiny402', 'attiny404', 'attiny406', 'attiny412',
!           'attiny414', 'attiny416', 'attiny417', 'attiny804',
!           'attiny806', 'attiny807', 'attiny814', 'attiny816',
!           'attiny817', 'attiny1604', 'attiny1606', 'attiny1607',
!           'attiny1614', 'attiny1616', 'attiny1617', 'attiny3214',
!           'attiny3216', 'attiny3217', 'atmega808', 'atmega809',
!           'atmega1608', 'atmega1609', 'atmega3208', 'atmega3209',
!           'atmega4808', 'atmega4809'.
  
       'avrxmega4'
            "XMEGA" devices with more than 64 KiB and up to 128 KiB of
*************** These options are defined for AVR implem
*** 15952,15959 ****
       'avrtiny'
            "TINY" Tiny core devices with 512 B up to 4 KiB of program
            memory.
!           MCU = 'attiny10', 'attiny20', 'attiny4', 'attiny40',
!           'attiny5', 'attiny9'.
  
       'avr1'
            This ISA is implemented by the minimal AVR core and supported
--- 15955,15962 ----
       'avrtiny'
            "TINY" Tiny core devices with 512 B up to 4 KiB of program
            memory.
!           MCU = 'attiny4', 'attiny5', 'attiny9', 'attiny10', 'attiny20',
!           'attiny40'.
  
       'avr1'
            This ISA is implemented by the minimal AVR core and supported
*************** These options are defined for AVR implem
*** 16081,16086 ****
--- 16084,16095 ----
  '-nodevicelib'
       Don't link against AVR-LibC's device specific library 'lib<mcu>.a'.
  
+ '-nodevicespecs'
+      Don't add '-specs=device-specs/specs-<mcu>' to the compiler
+      driver's command line.  The user takes responsibility for supplying
+      the sub-processes like compiler proper, assembler and linker with
+      appropriate command line options.
+ 
  '-Waddr-space-convert'
       Warn about conversions between address spaces in the case where the
       resulting address space is not contained in the incoming address
*************** _RL78--'config/rl78/constraints.md'_
*** 37728,37734 ****
  _RISC-V--'config/riscv/constraints.md'_
  
       'f'
!           A floating-point register (if availiable).
  
       'I'
            An I-type 12-bit signed immediate.
--- 37737,37743 ----
  _RISC-V--'config/riscv/constraints.md'_
  
       'f'
!           A floating-point register (if available).
  
       'I'
            An I-type 12-bit signed immediate.
*************** char' reverses the bytes in the whole wo
*** 47355,47374 ****
--- 47364,47396 ----
  
       vector unsigned long long __builtin_crypto_vsbox (vector unsigned long long);
  
+      vector unsigned char vec_sbox_be (vector unsigned char);
+ 
       vector unsigned long long __builtin_crypto_vcipher (vector unsigned long long,
                                                           vector unsigned long long);
  
+      vector unsigned char vec_cipher_be (vector unsigned char, vector unsigned char);
+ 
       vector unsigned long long __builtin_crypto_vcipherlast
                                            (vector unsigned long long,
                                             vector unsigned long long);
  
+      vector unsigned char vec_cipherlast_be (vector unsigned char,
+                                              vector unsigned char);
+ 
       vector unsigned long long __builtin_crypto_vncipher (vector unsigned long long,
                                                            vector unsigned long long);
  
+      vector unsigned char vec_ncipher_be (vector unsigned char,
+                                           vector unsigned char);
+ 
       vector unsigned long long __builtin_crypto_vncipherlast
                                            (vector unsigned long long,
                                             vector unsigned long long);
  
+      vector unsigned char vec_ncipherlast_be (vector unsigned char,
+                                               vector unsigned char);
+ 
       vector unsigned char __builtin_crypto_vpermxor (vector unsigned char,
                                                       vector unsigned char,
                                                       vector unsigned char);
*************** char' reverses the bytes in the whole wo
*** 47388,47400 ****
       vector unsigned char __builtin_crypto_vpmsumb (vector unsigned char,
                                                      vector unsigned char);
  
!      vector unsigned short __builtin_crypto_vpmsumb (vector unsigned short,
                                                       vector unsigned short);
  
!      vector unsigned int __builtin_crypto_vpmsumb (vector unsigned int,
                                                     vector unsigned int);
  
!      vector unsigned long long __builtin_crypto_vpmsumb (vector unsigned long long,
                                                           vector unsigned long long);
  
       vector unsigned long long __builtin_crypto_vshasigmad
--- 47410,47422 ----
       vector unsigned char __builtin_crypto_vpmsumb (vector unsigned char,
                                                      vector unsigned char);
  
!      vector unsigned short __builtin_crypto_vpmsumh (vector unsigned short,
                                                       vector unsigned short);
  
!      vector unsigned int __builtin_crypto_vpmsumw (vector unsigned int,
                                                     vector unsigned int);
  
!      vector unsigned long long __builtin_crypto_vpmsumd (vector unsigned long long,
                                                           vector unsigned long long);
  
       vector unsigned long long __builtin_crypto_vshasigmad
*************** File: gcc.info,  Node: Contributing,  Ne
*** 54945,54952 ****
  **********************************
  
  If you would like to help pretest GCC releases to assure they work well,
! current development sources are available by SVN (see
! <http://gcc.gnu.org/svn.html>).  Source and binary snapshots are also
  available for FTP; see <http://gcc.gnu.org/snapshots.html>.
  
   If you would like to work on improvements to GCC, please read the
--- 54967,54974 ----
  **********************************
  
  If you would like to help pretest GCC releases to assure they work well,
! current development sources are available via Git (see
! <http://gcc.gnu.org/git.html>).  Source and binary snapshots are also
  available for FTP; see <http://gcc.gnu.org/snapshots.html>.
  
   If you would like to work on improvements to GCC, please read the
*************** look up both forms.
*** 57549,57556 ****
  * Menu:
  
  * ###:                                   Overall Options.    (line  204)
! * -fipa-bit-cp:                          Optimize Options.   (line 1026)
! * -fipa-vrp:                             Optimize Options.   (line 1031)
  * -mfunction-return:                     x86 Options.        (line 1305)
  * -mindirect-branch:                     x86 Options.        (line 1286)
  * -mindirect-branch-register:            x86 Options.        (line 1320)
--- 57571,57578 ----
  * Menu:
  
  * ###:                                   Overall Options.    (line  204)
! * -fipa-bit-cp:                          Optimize Options.   (line 1025)
! * -fipa-vrp:                             Optimize Options.   (line 1030)
  * -mfunction-return:                     x86 Options.        (line 1305)
  * -mindirect-branch:                     x86 Options.        (line 1286)
  * -mindirect-branch-register:            x86 Options.        (line 1320)
*************** look up both forms.
*** 57635,57664 ****
  * fabi-version:                          C++ Dialect Options.
                                                               (line   24)
  * fada-spec-parent:                      Overall Options.    (line  384)
! * faggressive-loop-optimizations:        Optimize Options.   (line  524)
! * falign-functions:                      Optimize Options.   (line 1537)
! * falign-jumps:                          Optimize Options.   (line 1595)
! * falign-labels:                         Optimize Options.   (line 1562)
! * falign-loops:                          Optimize Options.   (line 1581)
  * faligned-new:                          C++ Dialect Options.
                                                               (line  105)
  * fallow-parameterless-variadic-functions: C Dialect Options.
                                                               (line  233)
  * fasan-shadow-offset:                   Instrumentation Options.
                                                               (line  380)
! * fassociative-math:                     Optimize Options.   (line 2077)
  * fasynchronous-unwind-tables:           Code Gen Options.   (line  156)
! * fauto-inc-dec:                         Optimize Options.   (line  546)
! * fauto-profile:                         Optimize Options.   (line 1956)
  * fbounds-check:                         Instrumentation Options.
                                                               (line  453)
! * fbranch-probabilities:                 Optimize Options.   (line 2222)
! * fbranch-target-load-optimize:          Optimize Options.   (line 2358)
! * fbranch-target-load-optimize2:         Optimize Options.   (line 2364)
! * fbtr-bb-exclusive:                     Optimize Options.   (line 2368)
  * fcall-saved:                           Code Gen Options.   (line  454)
  * fcall-used:                            Code Gen Options.   (line  440)
! * fcaller-saves:                         Optimize Options.   (line  904)
  * fcf-protection:                        Instrumentation Options.
                                                               (line  581)
  * fcheck-new:                            C++ Dialect Options.
--- 57657,57686 ----
  * fabi-version:                          C++ Dialect Options.
                                                               (line   24)
  * fada-spec-parent:                      Overall Options.    (line  384)
! * faggressive-loop-optimizations:        Optimize Options.   (line  523)
! * falign-functions:                      Optimize Options.   (line 1536)
! * falign-jumps:                          Optimize Options.   (line 1594)
! * falign-labels:                         Optimize Options.   (line 1561)
! * falign-loops:                          Optimize Options.   (line 1580)
  * faligned-new:                          C++ Dialect Options.
                                                               (line  105)
  * fallow-parameterless-variadic-functions: C Dialect Options.
                                                               (line  233)
  * fasan-shadow-offset:                   Instrumentation Options.
                                                               (line  380)
! * fassociative-math:                     Optimize Options.   (line 2076)
  * fasynchronous-unwind-tables:           Code Gen Options.   (line  156)
! * fauto-inc-dec:                         Optimize Options.   (line  545)
! * fauto-profile:                         Optimize Options.   (line 1955)
  * fbounds-check:                         Instrumentation Options.
                                                               (line  453)
! * fbranch-probabilities:                 Optimize Options.   (line 2221)
! * fbranch-target-load-optimize:          Optimize Options.   (line 2357)
! * fbranch-target-load-optimize2:         Optimize Options.   (line 2363)
! * fbtr-bb-exclusive:                     Optimize Options.   (line 2367)
  * fcall-saved:                           Code Gen Options.   (line  454)
  * fcall-used:                            Code Gen Options.   (line  440)
! * fcaller-saves:                         Optimize Options.   (line  903)
  * fcf-protection:                        Instrumentation Options.
                                                               (line  581)
  * fcheck-new:                            C++ Dialect Options.
*************** look up both forms.
*** 57700,57745 ****
                                                               (line  541)
  * fchkp-use-wrappers:                    Instrumentation Options.
                                                               (line  574)
! * fcode-hoisting:                        Optimize Options.   (line  945)
! * fcombine-stack-adjustments:            Optimize Options.   (line  916)
  * fcommon:                               Common Variable Attributes.
                                                               (line  118)
  * fcompare-debug:                        Developer Options.  (line  727)
  * fcompare-debug-second:                 Developer Options.  (line  753)
! * fcompare-elim:                         Optimize Options.   (line 1909)
  * fconcepts:                             C++ Dialect Options.
                                                               (line  124)
  * fcond-mismatch:                        C Dialect Options.  (line  384)
! * fconserve-stack:                       Optimize Options.   (line  935)
  * fconstant-string-class:                Objective-C and Objective-C++ Dialect Options.
                                                               (line   30)
  * fconstexpr-depth:                      C++ Dialect Options.
                                                               (line  131)
  * fconstexpr-loop-limit:                 C++ Dialect Options.
                                                               (line  137)
! * fcprop-registers:                      Optimize Options.   (line 1921)
! * fcrossjumping:                         Optimize Options.   (line  539)
! * fcse-follow-jumps:                     Optimize Options.   (line  460)
! * fcse-skip-blocks:                      Optimize Options.   (line  469)
! * fcx-fortran-rules:                     Optimize Options.   (line 2209)
! * fcx-limited-range:                     Optimize Options.   (line 2197)
! * fdata-sections:                        Optimize Options.   (line 2329)
  * fdbg-cnt:                              Developer Options.  (line  863)
  * fdbg-cnt-list:                         Developer Options.  (line  860)
! * fdce:                                  Optimize Options.   (line  552)
  * fdebug-cpp:                            Preprocessor Options.
                                                               (line  448)
  * fdebug-prefix-map:                     Debugging Options.  (line  137)
  * fdebug-types-section:                  Debugging Options.  (line  183)
! * fdeclone-ctor-dtor:                    Optimize Options.   (line  575)
  * fdeduce-init-list:                     C++ Dialect Options.
                                                               (line  142)
! * fdelayed-branch:                       Optimize Options.   (line  728)
  * fdelete-dead-exceptions:               Code Gen Options.   (line  141)
! * fdelete-null-pointer-checks:           Optimize Options.   (line  586)
! * fdevirtualize:                         Optimize Options.   (line  607)
! * fdevirtualize-at-ltrans:               Optimize Options.   (line  624)
! * fdevirtualize-speculatively:           Optimize Options.   (line  614)
  * fdiagnostics-color:                    Diagnostic Message Formatting Options.
                                                               (line   35)
  * fdiagnostics-generate-patch:           Diagnostic Message Formatting Options.
--- 57722,57767 ----
                                                               (line  541)
  * fchkp-use-wrappers:                    Instrumentation Options.
                                                               (line  574)
! * fcode-hoisting:                        Optimize Options.   (line  944)
! * fcombine-stack-adjustments:            Optimize Options.   (line  915)
  * fcommon:                               Common Variable Attributes.
                                                               (line  118)
  * fcompare-debug:                        Developer Options.  (line  727)
  * fcompare-debug-second:                 Developer Options.  (line  753)
! * fcompare-elim:                         Optimize Options.   (line 1908)
  * fconcepts:                             C++ Dialect Options.
                                                               (line  124)
  * fcond-mismatch:                        C Dialect Options.  (line  384)
! * fconserve-stack:                       Optimize Options.   (line  934)
  * fconstant-string-class:                Objective-C and Objective-C++ Dialect Options.
                                                               (line   30)
  * fconstexpr-depth:                      C++ Dialect Options.
                                                               (line  131)
  * fconstexpr-loop-limit:                 C++ Dialect Options.
                                                               (line  137)
! * fcprop-registers:                      Optimize Options.   (line 1920)
! * fcrossjumping:                         Optimize Options.   (line  538)
! * fcse-follow-jumps:                     Optimize Options.   (line  459)
! * fcse-skip-blocks:                      Optimize Options.   (line  468)
! * fcx-fortran-rules:                     Optimize Options.   (line 2208)
! * fcx-limited-range:                     Optimize Options.   (line 2196)
! * fdata-sections:                        Optimize Options.   (line 2328)
  * fdbg-cnt:                              Developer Options.  (line  863)
  * fdbg-cnt-list:                         Developer Options.  (line  860)
! * fdce:                                  Optimize Options.   (line  551)
  * fdebug-cpp:                            Preprocessor Options.
                                                               (line  448)
  * fdebug-prefix-map:                     Debugging Options.  (line  137)
  * fdebug-types-section:                  Debugging Options.  (line  183)
! * fdeclone-ctor-dtor:                    Optimize Options.   (line  574)
  * fdeduce-init-list:                     C++ Dialect Options.
                                                               (line  142)
! * fdelayed-branch:                       Optimize Options.   (line  727)
  * fdelete-dead-exceptions:               Code Gen Options.   (line  141)
! * fdelete-null-pointer-checks:           Optimize Options.   (line  585)
! * fdevirtualize:                         Optimize Options.   (line  606)
! * fdevirtualize-at-ltrans:               Optimize Options.   (line  623)
! * fdevirtualize-speculatively:           Optimize Options.   (line  613)
  * fdiagnostics-color:                    Diagnostic Message Formatting Options.
                                                               (line   35)
  * fdiagnostics-generate-patch:           Diagnostic Message Formatting Options.
*************** look up both forms.
*** 57761,57767 ****
                                                               (line  223)
  * fdollars-in-identifiers <1>:           Interoperation.     (line  141)
  * fdpic:                                 SH Options.         (line  388)
! * fdse:                                  Optimize Options.   (line  556)
  * fdump-ada-spec:                        Overall Options.    (line  379)
  * fdump-final-insns:                     Developer Options.  (line  721)
  * fdump-go-spec:                         Overall Options.    (line  388)
--- 57783,57789 ----
                                                               (line  223)
  * fdollars-in-identifiers <1>:           Interoperation.     (line  141)
  * fdpic:                                 SH Options.         (line  388)
! * fdse:                                  Optimize Options.   (line  555)
  * fdump-ada-spec:                        Overall Options.    (line  379)
  * fdump-final-insns:                     Developer Options.  (line  721)
  * fdump-go-spec:                         Overall Options.    (line  388)
*************** look up both forms.
*** 57844,57850 ****
  * fdump-unnumbered:                      Developer Options.  (line  262)
  * fdump-unnumbered-links:                Developer Options.  (line  268)
  * fdwarf2-cfi-asm:                       Debugging Options.  (line  388)
! * fearly-inlining:                       Optimize Options.   (line  305)
  * felide-type:                           Diagnostic Message Formatting Options.
                                                               (line  198)
  * feliminate-unused-debug-symbols:       Debugging Options.  (line  118)
--- 57866,57872 ----
  * fdump-unnumbered:                      Developer Options.  (line  262)
  * fdump-unnumbered-links:                Developer Options.  (line  268)
  * fdwarf2-cfi-asm:                       Debugging Options.  (line  388)
! * fearly-inlining:                       Optimize Options.   (line  304)
  * felide-type:                           Diagnostic Message Formatting Options.
                                                               (line  198)
  * feliminate-unused-debug-symbols:       Debugging Options.  (line  118)
*************** look up both forms.
*** 57855,57882 ****
  * femit-struct-debug-reduced:            Debugging Options.  (line  332)
  * fenable-:                              Developer Options.  (line  564)
  * fexceptions:                           Code Gen Options.   (line  119)
! * fexcess-precision:                     Optimize Options.   (line 2003)
  * fexec-charset:                         Preprocessor Options.
                                                               (line  266)
! * fexpensive-optimizations:              Optimize Options.   (line  631)
  * fext-numeric-literals:                 C++ Dialect Options.
                                                               (line  695)
  * fextended-identifiers:                 Preprocessor Options.
                                                               (line  226)
  * fextern-tls-init:                      C++ Dialect Options.
                                                               (line  195)
! * ffast-math:                            Optimize Options.   (line 2027)
! * ffat-lto-objects:                      Optimize Options.   (line 1886)
  * ffile-prefix-map:                      Overall Options.    (line  359)
! * ffinite-math-only:                     Optimize Options.   (line 2104)
  * ffix-and-continue:                     Darwin Options.     (line  104)
  * ffixed:                                Code Gen Options.   (line  428)
! * ffloat-store:                          Optimize Options.   (line 1989)
  * ffloat-store <1>:                      Disappointments.    (line   77)
  * ffor-scope:                            C++ Dialect Options.
                                                               (line  216)
! * fforward-propagate:                    Optimize Options.   (line  213)
! * ffp-contract:                          Optimize Options.   (line  222)
  * ffreestanding:                         Standards.          (line   94)
  * ffreestanding <1>:                     C Dialect Options.  (line  302)
  * ffreestanding <2>:                     Warning Options.    (line  294)
--- 57877,57904 ----
  * femit-struct-debug-reduced:            Debugging Options.  (line  332)
  * fenable-:                              Developer Options.  (line  564)
  * fexceptions:                           Code Gen Options.   (line  119)
! * fexcess-precision:                     Optimize Options.   (line 2002)
  * fexec-charset:                         Preprocessor Options.
                                                               (line  266)
! * fexpensive-optimizations:              Optimize Options.   (line  630)
  * fext-numeric-literals:                 C++ Dialect Options.
                                                               (line  695)
  * fextended-identifiers:                 Preprocessor Options.
                                                               (line  226)
  * fextern-tls-init:                      C++ Dialect Options.
                                                               (line  195)
! * ffast-math:                            Optimize Options.   (line 2026)
! * ffat-lto-objects:                      Optimize Options.   (line 1885)
  * ffile-prefix-map:                      Overall Options.    (line  359)
! * ffinite-math-only:                     Optimize Options.   (line 2103)
  * ffix-and-continue:                     Darwin Options.     (line  104)
  * ffixed:                                Code Gen Options.   (line  428)
! * ffloat-store:                          Optimize Options.   (line 1988)
  * ffloat-store <1>:                      Disappointments.    (line   77)
  * ffor-scope:                            C++ Dialect Options.
                                                               (line  216)
! * fforward-propagate:                    Optimize Options.   (line  212)
! * ffp-contract:                          Optimize Options.   (line  221)
  * ffreestanding:                         Standards.          (line   94)
  * ffreestanding <1>:                     C Dialect Options.  (line  302)
  * ffreestanding <2>:                     Warning Options.    (line  294)
*************** look up both forms.
*** 57884,57913 ****
                                                               (line  283)
  * ffriend-injection:                     C++ Dialect Options.
                                                               (line  163)
! * ffunction-sections:                    Optimize Options.   (line 2329)
! * fgcse:                                 Optimize Options.   (line  483)
! * fgcse-after-reload:                    Optimize Options.   (line  519)
! * fgcse-las:                             Optimize Options.   (line  512)
! * fgcse-lm:                              Optimize Options.   (line  494)
! * fgcse-sm:                              Optimize Options.   (line  503)
  * fgimple:                               C Dialect Options.  (line  288)
  * fgnu-runtime:                          Objective-C and Objective-C++ Dialect Options.
                                                               (line   39)
  * fgnu-tm:                               C Dialect Options.  (line  341)
  * fgnu89-inline:                         C Dialect Options.  (line  178)
! * fgraphite-identity:                    Optimize Options.   (line 1147)
! * fhoist-adjacent-loads:                 Optimize Options.   (line  975)
  * fhosted:                               C Dialect Options.  (line  294)
! * fif-conversion:                        Optimize Options.   (line  560)
! * fif-conversion2:                       Optimize Options.   (line  569)
  * filelist:                              Darwin Options.     (line  196)
  * findirect-data:                        Darwin Options.     (line  104)
! * findirect-inlining:                    Optimize Options.   (line  277)
  * finhibit-size-directive:               Code Gen Options.   (line  261)
! * finline-functions:                     Optimize Options.   (line  286)
! * finline-functions-called-once:         Optimize Options.   (line  297)
! * finline-limit:                         Optimize Options.   (line  321)
! * finline-small-functions:               Optimize Options.   (line  268)
  * finput-charset:                        Preprocessor Options.
                                                               (line  279)
  * finstrument-functions:                 Instrumentation Options.
--- 57906,57935 ----
                                                               (line  283)
  * ffriend-injection:                     C++ Dialect Options.
                                                               (line  163)
! * ffunction-sections:                    Optimize Options.   (line 2328)
! * fgcse:                                 Optimize Options.   (line  482)
! * fgcse-after-reload:                    Optimize Options.   (line  518)
! * fgcse-las:                             Optimize Options.   (line  511)
! * fgcse-lm:                              Optimize Options.   (line  493)
! * fgcse-sm:                              Optimize Options.   (line  502)
  * fgimple:                               C Dialect Options.  (line  288)
  * fgnu-runtime:                          Objective-C and Objective-C++ Dialect Options.
                                                               (line   39)
  * fgnu-tm:                               C Dialect Options.  (line  341)
  * fgnu89-inline:                         C Dialect Options.  (line  178)
! * fgraphite-identity:                    Optimize Options.   (line 1146)
! * fhoist-adjacent-loads:                 Optimize Options.   (line  974)
  * fhosted:                               C Dialect Options.  (line  294)
! * fif-conversion:                        Optimize Options.   (line  559)
! * fif-conversion2:                       Optimize Options.   (line  568)
  * filelist:                              Darwin Options.     (line  196)
  * findirect-data:                        Darwin Options.     (line  104)
! * findirect-inlining:                    Optimize Options.   (line  276)
  * finhibit-size-directive:               Code Gen Options.   (line  261)
! * finline-functions:                     Optimize Options.   (line  285)
! * finline-functions-called-once:         Optimize Options.   (line  296)
! * finline-limit:                         Optimize Options.   (line  320)
! * finline-small-functions:               Optimize Options.   (line  267)
  * finput-charset:                        Preprocessor Options.
                                                               (line  279)
  * finstrument-functions:                 Instrumentation Options.
*************** look up both forms.
*** 57918,57963 ****
                                                               (line  809)
  * finstrument-functions-exclude-function-list: Instrumentation Options.
                                                               (line  830)
! * fipa-cp:                               Optimize Options.   (line 1008)
! * fipa-cp-clone:                         Optimize Options.   (line 1016)
! * fipa-icf:                              Optimize Options.   (line 1036)
! * fipa-profile:                          Optimize Options.   (line 1000)
! * fipa-pta:                              Optimize Options.   (line  994)
! * fipa-pure-const:                       Optimize Options.   (line  986)
! * fipa-ra:                               Optimize Options.   (line  922)
! * fipa-reference:                        Optimize Options.   (line  990)
! * fipa-sra:                              Optimize Options.   (line  314)
! * fira-algorithm:                        Optimize Options.   (line  665)
! * fira-hoist-pressure:                   Optimize Options.   (line  694)
! * fira-loop-pressure:                    Optimize Options.   (line  701)
! * fira-region:                           Optimize Options.   (line  673)
  * fira-verbose:                          Developer Options.  (line  790)
! * fisolate-erroneous-paths-attribute:    Optimize Options.   (line 1058)
! * fisolate-erroneous-paths-dereference:  Optimize Options.   (line 1050)
  * fivar-visibility:                      Objective-C and Objective-C++ Dialect Options.
                                                               (line  161)
! * fivopts:                               Optimize Options.   (line 1258)
! * fkeep-inline-functions:                Optimize Options.   (line  352)
  * fkeep-inline-functions <1>:            Inline.             (line   51)
! * fkeep-static-consts:                   Optimize Options.   (line  363)
! * fkeep-static-functions:                Optimize Options.   (line  359)
  * flat_namespace:                        Darwin Options.     (line  196)
  * flax-vector-conversions:               C Dialect Options.  (line  389)
  * fleading-underscore:                   Code Gen Options.   (line  484)
! * flive-range-shrinkage:                 Optimize Options.   (line  660)
  * flocal-ivars:                          Objective-C and Objective-C++ Dialect Options.
                                                               (line  152)
! * floop-block:                           Optimize Options.   (line 1141)
! * floop-interchange:                     Optimize Options.   (line 1221)
! * floop-nest-optimize:                   Optimize Options.   (line 1155)
! * floop-parallelize-all:                 Optimize Options.   (line 1161)
! * floop-strip-mine:                      Optimize Options.   (line 1141)
! * floop-unroll-and-jam:                  Optimize Options.   (line 1237)
! * flra-remat:                            Optimize Options.   (line  721)
! * flto:                                  Optimize Options.   (line 1650)
! * flto-compression-level:                Optimize Options.   (line 1860)
! * flto-odr-type-merging:                 Optimize Options.   (line 1855)
! * flto-partition:                        Optimize Options.   (line 1841)
  * flto-report:                           Developer Options.  (line  796)
  * flto-report-wpa:                       Developer Options.  (line  804)
  * fmacro-prefix-map:                     Preprocessor Options.
--- 57940,57985 ----
                                                               (line  809)
  * finstrument-functions-exclude-function-list: Instrumentation Options.
                                                               (line  830)
! * fipa-cp:                               Optimize Options.   (line 1007)
! * fipa-cp-clone:                         Optimize Options.   (line 1015)
! * fipa-icf:                              Optimize Options.   (line 1035)
! * fipa-profile:                          Optimize Options.   (line  999)
! * fipa-pta:                              Optimize Options.   (line  993)
! * fipa-pure-const:                       Optimize Options.   (line  985)
! * fipa-ra:                               Optimize Options.   (line  921)
! * fipa-reference:                        Optimize Options.   (line  989)
! * fipa-sra:                              Optimize Options.   (line  313)
! * fira-algorithm:                        Optimize Options.   (line  664)
! * fira-hoist-pressure:                   Optimize Options.   (line  693)
! * fira-loop-pressure:                    Optimize Options.   (line  700)
! * fira-region:                           Optimize Options.   (line  672)
  * fira-verbose:                          Developer Options.  (line  790)
! * fisolate-erroneous-paths-attribute:    Optimize Options.   (line 1057)
! * fisolate-erroneous-paths-dereference:  Optimize Options.   (line 1049)
  * fivar-visibility:                      Objective-C and Objective-C++ Dialect Options.
                                                               (line  161)
! * fivopts:                               Optimize Options.   (line 1257)
! * fkeep-inline-functions:                Optimize Options.   (line  351)
  * fkeep-inline-functions <1>:            Inline.             (line   51)
! * fkeep-static-consts:                   Optimize Options.   (line  362)
! * fkeep-static-functions:                Optimize Options.   (line  358)
  * flat_namespace:                        Darwin Options.     (line  196)
  * flax-vector-conversions:               C Dialect Options.  (line  389)
  * fleading-underscore:                   Code Gen Options.   (line  484)
! * flive-range-shrinkage:                 Optimize Options.   (line  659)
  * flocal-ivars:                          Objective-C and Objective-C++ Dialect Options.
                                                               (line  152)
! * floop-block:                           Optimize Options.   (line 1140)
! * floop-interchange:                     Optimize Options.   (line 1220)
! * floop-nest-optimize:                   Optimize Options.   (line 1154)
! * floop-parallelize-all:                 Optimize Options.   (line 1160)
! * floop-strip-mine:                      Optimize Options.   (line 1140)
! * floop-unroll-and-jam:                  Optimize Options.   (line 1236)
! * flra-remat:                            Optimize Options.   (line  720)
! * flto:                                  Optimize Options.   (line 1649)
! * flto-compression-level:                Optimize Options.   (line 1859)
! * flto-odr-type-merging:                 Optimize Options.   (line 1854)
! * flto-partition:                        Optimize Options.   (line 1840)
  * flto-report:                           Developer Options.  (line  796)
  * flto-report-wpa:                       Developer Options.  (line  804)
  * fmacro-prefix-map:                     Preprocessor Options.
*************** look up both forms.
*** 57965,57978 ****
  * fmax-errors:                           Warning Options.    (line   18)
  * fmem-report:                           Developer Options.  (line  808)
  * fmem-report-wpa:                       Developer Options.  (line  812)
! * fmerge-all-constants:                  Optimize Options.   (line  382)
! * fmerge-constants:                      Optimize Options.   (line  372)
  * fmerge-debug-strings:                  Debugging Options.  (line  130)
  * fmessage-length:                       Diagnostic Message Formatting Options.
                                                               (line   14)
! * fmodulo-sched:                         Optimize Options.   (line  393)
! * fmodulo-sched-allow-regmoves:          Optimize Options.   (line  398)
! * fmove-loop-invariants:                 Optimize Options.   (line 2315)
  * fms-extensions:                        C Dialect Options.  (line  356)
  * fms-extensions <1>:                    C++ Dialect Options.
                                                               (line  250)
--- 57987,58000 ----
  * fmax-errors:                           Warning Options.    (line   18)
  * fmem-report:                           Developer Options.  (line  808)
  * fmem-report-wpa:                       Developer Options.  (line  812)
! * fmerge-all-constants:                  Optimize Options.   (line  381)
! * fmerge-constants:                      Optimize Options.   (line  371)
  * fmerge-debug-strings:                  Debugging Options.  (line  130)
  * fmessage-length:                       Diagnostic Message Formatting Options.
                                                               (line   14)
! * fmodulo-sched:                         Optimize Options.   (line  392)
! * fmodulo-sched-allow-regmoves:          Optimize Options.   (line  397)
! * fmove-loop-invariants:                 Optimize Options.   (line 2314)
  * fms-extensions:                        C Dialect Options.  (line  356)
  * fms-extensions <1>:                    C++ Dialect Options.
                                                               (line  250)
*************** look up both forms.
*** 57986,57992 ****
  * fno-access-control:                    C++ Dialect Options.
                                                               (line  101)
  * fno-asm:                               C Dialect Options.  (line  240)
! * fno-branch-count-reg:                  Optimize Options.   (line  405)
  * fno-builtin:                           C Dialect Options.  (line  254)
  * fno-builtin <1>:                       Warning Options.    (line  294)
  * fno-builtin <2>:                       Common Function Attributes.
--- 58008,58014 ----
  * fno-access-control:                    C++ Dialect Options.
                                                               (line  101)
  * fno-asm:                               C Dialect Options.  (line  240)
! * fno-branch-count-reg:                  Optimize Options.   (line  404)
  * fno-builtin:                           C Dialect Options.  (line  254)
  * fno-builtin <1>:                       Warning Options.    (line  294)
  * fno-builtin <2>:                       Common Function Attributes.
*************** look up both forms.
*** 58037,58043 ****
  * fno-compare-debug:                     Developer Options.  (line  727)
  * fno-debug-types-section:               Debugging Options.  (line  183)
  * fno-default-inline:                    Inline.             (line   68)
! * fno-defer-pop:                         Optimize Options.   (line  205)
  * fno-diagnostics-show-caret:            Diagnostic Message Formatting Options.
                                                               (line  124)
  * fno-diagnostics-show-option:           Diagnostic Message Formatting Options.
--- 58059,58065 ----
  * fno-compare-debug:                     Developer Options.  (line  727)
  * fno-debug-types-section:               Debugging Options.  (line  183)
  * fno-default-inline:                    Inline.             (line   68)
! * fno-defer-pop:                         Optimize Options.   (line  204)
  * fno-diagnostics-show-caret:            Diagnostic Message Formatting Options.
                                                               (line  124)
  * fno-diagnostics-show-option:           Diagnostic Message Formatting Options.
*************** look up both forms.
*** 58056,58067 ****
                                                               (line  195)
  * fno-for-scope:                         C++ Dialect Options.
                                                               (line  216)
! * fno-fp-int-builtin-inexact:            Optimize Options.   (line 2176)
! * fno-function-cse:                      Optimize Options.   (line  420)
  * fno-gnu-keywords:                      C++ Dialect Options.
                                                               (line  227)
  * fno-gnu-unique:                        Code Gen Options.   (line  162)
! * fno-guess-branch-probability:          Optimize Options.   (line 1426)
  * fno-ident:                             Code Gen Options.   (line  258)
  * fno-implement-inlines:                 C++ Dialect Options.
                                                               (line  245)
--- 58078,58089 ----
                                                               (line  195)
  * fno-for-scope:                         C++ Dialect Options.
                                                               (line  216)
! * fno-fp-int-builtin-inexact:            Optimize Options.   (line 2175)
! * fno-function-cse:                      Optimize Options.   (line  419)
  * fno-gnu-keywords:                      C++ Dialect Options.
                                                               (line  227)
  * fno-gnu-unique:                        Code Gen Options.   (line  162)
! * fno-guess-branch-probability:          Optimize Options.   (line 1425)
  * fno-ident:                             Code Gen Options.   (line  258)
  * fno-implement-inlines:                 C++ Dialect Options.
                                                               (line  245)
*************** look up both forms.
*** 58072,58086 ****
                                                               (line  233)
  * fno-implicit-templates <1>:            Template Instantiation.
                                                               (line  118)
! * fno-inline:                            Optimize Options.   (line  260)
! * fno-ira-share-save-slots:              Optimize Options.   (line  709)
! * fno-ira-share-spill-slots:             Optimize Options.   (line  715)
  * fno-jump-tables:                       Code Gen Options.   (line  420)
! * fno-keep-inline-dllexport:             Optimize Options.   (line  346)
! * fno-lifetime-dse:                      Optimize Options.   (line  645)
  * fno-local-ivars:                       Objective-C and Objective-C++ Dialect Options.
                                                               (line  152)
! * fno-math-errno:                        Optimize Options.   (line 2041)
  * fno-merge-debug-strings:               Debugging Options.  (line  130)
  * fno-nil-receivers:                     Objective-C and Objective-C++ Dialect Options.
                                                               (line   49)
--- 58094,58108 ----
                                                               (line  233)
  * fno-implicit-templates <1>:            Template Instantiation.
                                                               (line  118)
! * fno-inline:                            Optimize Options.   (line  259)
! * fno-ira-share-save-slots:              Optimize Options.   (line  708)
! * fno-ira-share-spill-slots:             Optimize Options.   (line  714)
  * fno-jump-tables:                       Code Gen Options.   (line  420)
! * fno-keep-inline-dllexport:             Optimize Options.   (line  345)
! * fno-lifetime-dse:                      Optimize Options.   (line  644)
  * fno-local-ivars:                       Objective-C and Objective-C++ Dialect Options.
                                                               (line  152)
! * fno-math-errno:                        Optimize Options.   (line 2040)
  * fno-merge-debug-strings:               Debugging Options.  (line  130)
  * fno-nil-receivers:                     Objective-C and Objective-C++ Dialect Options.
                                                               (line   49)
*************** look up both forms.
*** 58090,58121 ****
                                                               (line  284)
  * fno-optional-diags:                    C++ Dialect Options.
                                                               (line  288)
! * fno-peephole:                          Optimize Options.   (line 1417)
! * fno-peephole2:                         Optimize Options.   (line 1417)
  * fno-plt:                               Code Gen Options.   (line  402)
  * fno-pretty-templates:                  C++ Dialect Options.
                                                               (line  298)
! * fno-printf-return-value:               Optimize Options.   (line 1394)
  * fno-rtti:                              C++ Dialect Options.
                                                               (line  315)
  * fno-sanitize-recover:                  Instrumentation Options.
                                                               (line  389)
  * fno-sanitize=all:                      Instrumentation Options.
                                                               (line  374)
! * fno-sched-interblock:                  Optimize Options.   (line  754)
! * fno-sched-spec:                        Optimize Options.   (line  759)
  * fno-set-stack-executable:              x86 Windows Options.
                                                               (line   46)
  * fno-show-column:                       Diagnostic Message Formatting Options.
                                                               (line  210)
  * fno-signed-bitfields:                  C Dialect Options.  (line  422)
! * fno-signed-zeros:                      Optimize Options.   (line 2116)
  * fno-stack-limit:                       Instrumentation Options.
                                                               (line  686)
  * fno-threadsafe-statics:                C++ Dialect Options.
                                                               (line  365)
! * fno-toplevel-reorder:                  Optimize Options.   (line 1616)
! * fno-trapping-math:                     Optimize Options.   (line 2126)
  * fno-unsigned-bitfields:                C Dialect Options.  (line  422)
  * fno-use-cxa-get-exception-ptr:         C++ Dialect Options.
                                                               (line  378)
--- 58112,58143 ----
                                                               (line  284)
  * fno-optional-diags:                    C++ Dialect Options.
                                                               (line  288)
! * fno-peephole:                          Optimize Options.   (line 1416)
! * fno-peephole2:                         Optimize Options.   (line 1416)
  * fno-plt:                               Code Gen Options.   (line  402)
  * fno-pretty-templates:                  C++ Dialect Options.
                                                               (line  298)
! * fno-printf-return-value:               Optimize Options.   (line 1393)
  * fno-rtti:                              C++ Dialect Options.
                                                               (line  315)
  * fno-sanitize-recover:                  Instrumentation Options.
                                                               (line  389)
  * fno-sanitize=all:                      Instrumentation Options.
                                                               (line  374)
! * fno-sched-interblock:                  Optimize Options.   (line  753)
! * fno-sched-spec:                        Optimize Options.   (line  758)
  * fno-set-stack-executable:              x86 Windows Options.
                                                               (line   46)
  * fno-show-column:                       Diagnostic Message Formatting Options.
                                                               (line  210)
  * fno-signed-bitfields:                  C Dialect Options.  (line  422)
! * fno-signed-zeros:                      Optimize Options.   (line 2115)
  * fno-stack-limit:                       Instrumentation Options.
                                                               (line  686)
  * fno-threadsafe-statics:                C++ Dialect Options.
                                                               (line  365)
! * fno-toplevel-reorder:                  Optimize Options.   (line 1615)
! * fno-trapping-math:                     Optimize Options.   (line 2125)
  * fno-unsigned-bitfields:                C Dialect Options.  (line  422)
  * fno-use-cxa-get-exception-ptr:         C++ Dialect Options.
                                                               (line  378)
*************** look up both forms.
*** 58127,58133 ****
                                                               (line  314)
  * fno-writable-relocated-rdata:          x86 Windows Options.
                                                               (line   53)
! * fno-zero-initialized-in-bss:           Optimize Options.   (line  431)
  * fnon-call-exceptions:                  Code Gen Options.   (line  133)
  * fnothrow-opt:                          C++ Dialect Options.
                                                               (line  273)
--- 58149,58155 ----
                                                               (line  314)
  * fno-writable-relocated-rdata:          x86 Windows Options.
                                                               (line   53)
! * fno-zero-initialized-in-bss:           Optimize Options.   (line  430)
  * fnon-call-exceptions:                  Code Gen Options.   (line  133)
  * fnothrow-opt:                          C++ Dialect Options.
                                                               (line  273)
*************** look up both forms.
*** 58145,58162 ****
                                                               (line  110)
  * fobjc-std:                             Objective-C and Objective-C++ Dialect Options.
                                                               (line  119)
! * fomit-frame-pointer:                   Optimize Options.   (line  233)
  * fopenacc:                              C Dialect Options.  (line  313)
  * fopenacc-dim:                          C Dialect Options.  (line  322)
  * fopenmp:                               C Dialect Options.  (line  328)
  * fopenmp-simd:                          C Dialect Options.  (line  337)
  * fopt-info:                             Developer Options.  (line  453)
! * foptimize-sibling-calls:               Optimize Options.   (line  248)
! * foptimize-strlen:                      Optimize Options.   (line  253)
  * force_cpusubtype_ALL:                  Darwin Options.     (line  135)
  * force_flat_namespace:                  Darwin Options.     (line  196)
  * fpack-struct:                          Code Gen Options.   (line  471)
! * fpartial-inlining:                     Optimize Options.   (line 1370)
  * fpatchable-function-entry:             Instrumentation Options.
                                                               (line  842)
  * fpcc-struct-return:                    Code Gen Options.   (line  175)
--- 58167,58184 ----
                                                               (line  110)
  * fobjc-std:                             Objective-C and Objective-C++ Dialect Options.
                                                               (line  119)
! * fomit-frame-pointer:                   Optimize Options.   (line  232)
  * fopenacc:                              C Dialect Options.  (line  313)
  * fopenacc-dim:                          C Dialect Options.  (line  322)
  * fopenmp:                               C Dialect Options.  (line  328)
  * fopenmp-simd:                          C Dialect Options.  (line  337)
  * fopt-info:                             Developer Options.  (line  453)
! * foptimize-sibling-calls:               Optimize Options.   (line  247)
! * foptimize-strlen:                      Optimize Options.   (line  252)
  * force_cpusubtype_ALL:                  Darwin Options.     (line  135)
  * force_flat_namespace:                  Darwin Options.     (line  196)
  * fpack-struct:                          Code Gen Options.   (line  471)
! * fpartial-inlining:                     Optimize Options.   (line 1369)
  * fpatchable-function-entry:             Instrumentation Options.
                                                               (line  842)
  * fpcc-struct-return:                    Code Gen Options.   (line  175)
*************** look up both forms.
*** 58165,58171 ****
                                                               (line  289)
  * fpch-preprocess:                       Preprocessor Options.
                                                               (line  297)
! * fpeel-loops:                           Optimize Options.   (line 2307)
  * fpermissive:                           C++ Dialect Options.
                                                               (line  293)
  * fpermitted-flt-eval-methods:           C Dialect Options.  (line  195)
--- 58187,58193 ----
                                                               (line  289)
  * fpch-preprocess:                       Preprocessor Options.
                                                               (line  297)
! * fpeel-loops:                           Optimize Options.   (line 2306)
  * fpermissive:                           C++ Dialect Options.
                                                               (line  293)
  * fpermitted-flt-eval-methods:           C Dialect Options.  (line  195)
*************** look up both forms.
*** 58181,58188 ****
  * fplugin-arg:                           Overall Options.    (line  375)
  * fpost-ipa-mem-report:                  Developer Options.  (line  817)
  * fpre-ipa-mem-report:                   Developer Options.  (line  816)
! * fpredictive-commoning:                 Optimize Options.   (line 1377)
! * fprefetch-loop-arrays:                 Optimize Options.   (line 1384)
  * fpreprocessed:                         Preprocessor Options.
                                                               (line  189)
  * fprofile-abs-path:                     Instrumentation Options.
--- 58203,58210 ----
  * fplugin-arg:                           Overall Options.    (line  375)
  * fpost-ipa-mem-report:                  Developer Options.  (line  817)
  * fpre-ipa-mem-report:                   Developer Options.  (line  816)
! * fpredictive-commoning:                 Optimize Options.   (line 1376)
! * fprefetch-loop-arrays:                 Optimize Options.   (line 1383)
  * fpreprocessed:                         Preprocessor Options.
                                                               (line  189)
  * fprofile-abs-path:                     Instrumentation Options.
*************** look up both forms.
*** 58190,58217 ****
  * fprofile-arcs:                         Instrumentation Options.
                                                               (line   31)
  * fprofile-arcs <1>:                     Other Builtins.     (line  425)
! * fprofile-correction:                   Optimize Options.   (line 1928)
  * fprofile-dir:                          Instrumentation Options.
                                                               (line  113)
  * fprofile-generate:                     Instrumentation Options.
                                                               (line  124)
! * fprofile-reorder-functions:            Optimize Options.   (line 2249)
  * fprofile-report:                       Developer Options.  (line  821)
  * fprofile-update:                       Instrumentation Options.
                                                               (line  141)
! * fprofile-use:                          Optimize Options.   (line 1936)
! * fprofile-values:                       Optimize Options.   (line 2240)
  * fpu:                                   RX Options.         (line   17)
  * frandom-seed:                          Developer Options.  (line  638)
! * freciprocal-math:                      Optimize Options.   (line 2094)
  * frecord-gcc-switches:                  Code Gen Options.   (line  347)
! * free:                                  Optimize Options.   (line  637)
  * freg-struct-return:                    Code Gen Options.   (line  193)
! * frename-registers:                     Optimize Options.   (line 2266)
! * freorder-blocks:                       Optimize Options.   (line 1443)
! * freorder-blocks-algorithm:             Optimize Options.   (line 1449)
! * freorder-blocks-and-partition:         Optimize Options.   (line 1460)
! * freorder-functions:                    Optimize Options.   (line 1477)
  * freplace-objc-classes:                 Objective-C and Objective-C++ Dialect Options.
                                                               (line  130)
  * frepo:                                 C++ Dialect Options.
--- 58212,58239 ----
  * fprofile-arcs:                         Instrumentation Options.
                                                               (line   31)
  * fprofile-arcs <1>:                     Other Builtins.     (line  425)
! * fprofile-correction:                   Optimize Options.   (line 1927)
  * fprofile-dir:                          Instrumentation Options.
                                                               (line  113)
  * fprofile-generate:                     Instrumentation Options.
                                                               (line  124)
! * fprofile-reorder-functions:            Optimize Options.   (line 2248)
  * fprofile-report:                       Developer Options.  (line  821)
  * fprofile-update:                       Instrumentation Options.
                                                               (line  141)
! * fprofile-use:                          Optimize Options.   (line 1935)
! * fprofile-values:                       Optimize Options.   (line 2239)
  * fpu:                                   RX Options.         (line   17)
  * frandom-seed:                          Developer Options.  (line  638)
! * freciprocal-math:                      Optimize Options.   (line 2093)
  * frecord-gcc-switches:                  Code Gen Options.   (line  347)
! * free:                                  Optimize Options.   (line  636)
  * freg-struct-return:                    Code Gen Options.   (line  193)
! * frename-registers:                     Optimize Options.   (line 2265)
! * freorder-blocks:                       Optimize Options.   (line 1442)
! * freorder-blocks-algorithm:             Optimize Options.   (line 1448)
! * freorder-blocks-and-partition:         Optimize Options.   (line 1459)
! * freorder-functions:                    Optimize Options.   (line 1476)
  * freplace-objc-classes:                 Objective-C and Objective-C++ Dialect Options.
                                                               (line  130)
  * frepo:                                 C++ Dialect Options.
*************** look up both forms.
*** 58219,58227 ****
  * frepo <1>:                             Template Instantiation.
                                                               (line   94)
  * freport-bug:                           Developer Options.  (line  258)
! * frerun-cse-after-loop:                 Optimize Options.   (line  477)
! * freschedule-modulo-scheduled-loops:    Optimize Options.   (line  853)
! * frounding-math:                        Optimize Options.   (line 2141)
  * fsanitize-address-use-after-scope:     Instrumentation Options.
                                                               (line  425)
  * fsanitize-coverage=trace-cmp:          Instrumentation Options.
--- 58241,58249 ----
  * frepo <1>:                             Template Instantiation.
                                                               (line   94)
  * freport-bug:                           Developer Options.  (line  258)
! * frerun-cse-after-loop:                 Optimize Options.   (line  476)
! * freschedule-modulo-scheduled-loops:    Optimize Options.   (line  852)
! * frounding-math:                        Optimize Options.   (line 2140)
  * fsanitize-address-use-after-scope:     Instrumentation Options.
                                                               (line  425)
  * fsanitize-coverage=trace-cmp:          Instrumentation Options.
*************** look up both forms.
*** 58292,58319 ****
                                                               (line  258)
  * fsanitize=vptr:                        Instrumentation Options.
                                                               (line  349)
! * fsched-critical-path-heuristic:        Optimize Options.   (line  819)
! * fsched-dep-count-heuristic:            Optimize Options.   (line  846)
! * fsched-group-heuristic:                Optimize Options.   (line  813)
! * fsched-last-insn-heuristic:            Optimize Options.   (line  839)
! * fsched-pressure:                       Optimize Options.   (line  764)
! * fsched-rank-heuristic:                 Optimize Options.   (line  832)
! * fsched-spec-insn-heuristic:            Optimize Options.   (line  825)
! * fsched-spec-load:                      Optimize Options.   (line  773)
! * fsched-spec-load-dangerous:            Optimize Options.   (line  778)
! * fsched-stalled-insns:                  Optimize Options.   (line  784)
! * fsched-stalled-insns-dep:              Optimize Options.   (line  794)
  * fsched-verbose:                        Developer Options.  (line  550)
! * fsched2-use-superblocks:               Optimize Options.   (line  803)
! * fschedule-fusion:                      Optimize Options.   (line 2276)
! * fschedule-insns:                       Optimize Options.   (line  735)
! * fschedule-insns2:                      Optimize Options.   (line  745)
! * fsection-anchors:                      Optimize Options.   (line 2376)
! * fsel-sched-pipelining:                 Optimize Options.   (line  866)
! * fsel-sched-pipelining-outer-loops:     Optimize Options.   (line  871)
! * fselective-scheduling:                 Optimize Options.   (line  858)
! * fselective-scheduling2:                Optimize Options.   (line  862)
! * fsemantic-interposition:               Optimize Options.   (line  876)
  * fshort-enums:                          Code Gen Options.   (line  211)
  * fshort-enums <1>:                      Structures unions enumerations and bit-fields implementation.
                                                               (line   48)
--- 58314,58341 ----
                                                               (line  258)
  * fsanitize=vptr:                        Instrumentation Options.
                                                               (line  349)
! * fsched-critical-path-heuristic:        Optimize Options.   (line  818)
! * fsched-dep-count-heuristic:            Optimize Options.   (line  845)
! * fsched-group-heuristic:                Optimize Options.   (line  812)
! * fsched-last-insn-heuristic:            Optimize Options.   (line  838)
! * fsched-pressure:                       Optimize Options.   (line  763)
! * fsched-rank-heuristic:                 Optimize Options.   (line  831)
! * fsched-spec-insn-heuristic:            Optimize Options.   (line  824)
! * fsched-spec-load:                      Optimize Options.   (line  772)
! * fsched-spec-load-dangerous:            Optimize Options.   (line  777)
! * fsched-stalled-insns:                  Optimize Options.   (line  783)
! * fsched-stalled-insns-dep:              Optimize Options.   (line  793)
  * fsched-verbose:                        Developer Options.  (line  550)
! * fsched2-use-superblocks:               Optimize Options.   (line  802)
! * fschedule-fusion:                      Optimize Options.   (line 2275)
! * fschedule-insns:                       Optimize Options.   (line  734)
! * fschedule-insns2:                      Optimize Options.   (line  744)
! * fsection-anchors:                      Optimize Options.   (line 2375)
! * fsel-sched-pipelining:                 Optimize Options.   (line  865)
! * fsel-sched-pipelining-outer-loops:     Optimize Options.   (line  870)
! * fselective-scheduling:                 Optimize Options.   (line  857)
! * fselective-scheduling2:                Optimize Options.   (line  861)
! * fsemantic-interposition:               Optimize Options.   (line  875)
  * fshort-enums:                          Code Gen Options.   (line  211)
  * fshort-enums <1>:                      Structures unions enumerations and bit-fields implementation.
                                                               (line   48)
*************** look up both forms.
*** 58321,58348 ****
                                                               (line  235)
  * fshort-enums <3>:                      Non-bugs.           (line   42)
  * fshort-wchar:                          Code Gen Options.   (line  221)
! * fshrink-wrap:                          Optimize Options.   (line  893)
! * fshrink-wrap-separate:                 Optimize Options.   (line  898)
! * fsignaling-nans:                       Optimize Options.   (line 2161)
  * fsigned-bitfields:                     C Dialect Options.  (line  422)
  * fsigned-bitfields <1>:                 Non-bugs.           (line   57)
  * fsigned-char:                          C Dialect Options.  (line  412)
  * fsigned-char <1>:                      Characters implementation.
                                                               (line   31)
! * fsimd-cost-model:                      Optimize Options.   (line 1330)
! * fsingle-precision-constant:            Optimize Options.   (line 2193)
  * fsized-deallocation:                   C++ Dialect Options.
                                                               (line  325)
! * fsplit-ivs-in-unroller:                Optimize Options.   (line 1351)
! * fsplit-loops:                          Optimize Options.   (line 2319)
! * fsplit-paths:                          Optimize Options.   (line 1346)
  * fsplit-stack:                          Instrumentation Options.
                                                               (line  703)
  * fsplit-stack <1>:                      Common Function Attributes.
                                                               (line  592)
! * fsplit-wide-types:                     Optimize Options.   (line  452)
! * fssa-backprop:                         Optimize Options.   (line 1081)
! * fssa-phiopt:                           Optimize Options.   (line 1087)
  * fsso-struct:                           C Dialect Options.  (line  428)
  * fstack-check:                          Instrumentation Options.
                                                               (line  629)
--- 58343,58370 ----
                                                               (line  235)
  * fshort-enums <3>:                      Non-bugs.           (line   42)
  * fshort-wchar:                          Code Gen Options.   (line  221)
! * fshrink-wrap:                          Optimize Options.   (line  892)
! * fshrink-wrap-separate:                 Optimize Options.   (line  897)
! * fsignaling-nans:                       Optimize Options.   (line 2160)
  * fsigned-bitfields:                     C Dialect Options.  (line  422)
  * fsigned-bitfields <1>:                 Non-bugs.           (line   57)
  * fsigned-char:                          C Dialect Options.  (line  412)
  * fsigned-char <1>:                      Characters implementation.
                                                               (line   31)
! * fsimd-cost-model:                      Optimize Options.   (line 1329)
! * fsingle-precision-constant:            Optimize Options.   (line 2192)
  * fsized-deallocation:                   C++ Dialect Options.
                                                               (line  325)
! * fsplit-ivs-in-unroller:                Optimize Options.   (line 1350)
! * fsplit-loops:                          Optimize Options.   (line 2318)
! * fsplit-paths:                          Optimize Options.   (line 1345)
  * fsplit-stack:                          Instrumentation Options.
                                                               (line  703)
  * fsplit-stack <1>:                      Common Function Attributes.
                                                               (line  592)
! * fsplit-wide-types:                     Optimize Options.   (line  451)
! * fssa-backprop:                         Optimize Options.   (line 1080)
! * fssa-phiopt:                           Optimize Options.   (line 1086)
  * fsso-struct:                           C Dialect Options.  (line  428)
  * fstack-check:                          Instrumentation Options.
                                                               (line  629)
*************** look up both forms.
*** 58363,58371 ****
  * fstack-usage:                          Developer Options.  (line  825)
  * fstack_reuse:                          Code Gen Options.   (line   15)
  * fstats:                                Developer Options.  (line  854)
! * fstdarg-opt:                           Optimize Options.   (line 2372)
! * fstore-merging:                        Optimize Options.   (line 1282)
! * fstrict-aliasing:                      Optimize Options.   (line 1490)
  * fstrict-enums:                         C++ Dialect Options.
                                                               (line  335)
  * fstrict-overflow:                      Code Gen Options.   (line  115)
--- 58385,58393 ----
  * fstack-usage:                          Developer Options.  (line  825)
  * fstack_reuse:                          Code Gen Options.   (line   15)
  * fstats:                                Developer Options.  (line  854)
! * fstdarg-opt:                           Optimize Options.   (line 2371)
! * fstore-merging:                        Optimize Options.   (line 1281)
! * fstrict-aliasing:                      Optimize Options.   (line 1489)
  * fstrict-enums:                         C++ Dialect Options.
                                                               (line  335)
  * fstrict-overflow:                      Code Gen Options.   (line  115)
*************** look up both forms.
*** 58382,58435 ****
                                                               (line  356)
  * ftest-coverage:                        Instrumentation Options.
                                                               (line   98)
! * fthread-jumps:                         Optimize Options.   (line  443)
  * ftime-report:                          Developer Options.  (line  782)
  * ftime-report-details:                  Developer Options.  (line  786)
  * ftls-model:                            Code Gen Options.   (line  495)
! * ftracer:                               Optimize Options.   (line 2284)
  * ftrack-macro-expansion:                Preprocessor Options.
                                                               (line  240)
  * ftrampolines:                          Code Gen Options.   (line  506)
  * ftrapv:                                Code Gen Options.   (line   91)
! * ftree-bit-ccp:                         Optimize Options.   (line 1070)
! * ftree-builtin-call-dce:                Optimize Options.   (line 1108)
! * ftree-ccp:                             Optimize Options.   (line 1076)
! * ftree-ch:                              Optimize Options.   (line 1128)
! * ftree-coalesce-vars:                   Optimize Options.   (line 1167)
! * ftree-copy-prop:                       Optimize Options.   (line  981)
! * ftree-dce:                             Optimize Options.   (line 1104)
! * ftree-dominator-opts:                  Optimize Options.   (line 1114)
! * ftree-dse:                             Optimize Options.   (line 1121)
! * ftree-forwprop:                        Optimize Options.   (line  960)
! * ftree-fre:                             Optimize Options.   (line  964)
! * ftree-loop-distribute-patterns:        Optimize Options.   (line 1201)
! * ftree-loop-distribution:               Optimize Options.   (line 1184)
! * ftree-loop-if-convert:                 Optimize Options.   (line 1177)
! * ftree-loop-im:                         Optimize Options.   (line 1243)
! * ftree-loop-ivcanon:                    Optimize Options.   (line 1252)
! * ftree-loop-linear:                     Optimize Options.   (line 1141)
! * ftree-loop-optimize:                   Optimize Options.   (line 1135)
! * ftree-loop-vectorize:                  Optimize Options.   (line 1308)
! * ftree-parallelize-loops:               Optimize Options.   (line 1263)
! * ftree-partial-pre:                     Optimize Options.   (line  956)
! * ftree-phiprop:                         Optimize Options.   (line  971)
! * ftree-pre:                             Optimize Options.   (line  952)
! * ftree-pta:                             Optimize Options.   (line 1272)
! * ftree-reassoc:                         Optimize Options.   (line  941)
! * ftree-sink:                            Optimize Options.   (line 1066)
! * ftree-slp-vectorize:                   Optimize Options.   (line 1312)
! * ftree-slsr:                            Optimize Options.   (line 1297)
! * ftree-sra:                             Optimize Options.   (line 1276)
! * ftree-switch-conversion:               Optimize Options.   (line 1091)
! * ftree-tail-merge:                      Optimize Options.   (line 1096)
! * ftree-ter:                             Optimize Options.   (line 1289)
! * ftree-vectorize:                       Optimize Options.   (line 1303)
! * ftree-vrp:                             Optimize Options.   (line 1337)
! * funconstrained-commons:                Optimize Options.   (line  533)
! * funit-at-a-time:                       Optimize Options.   (line 1609)
! * funroll-all-loops:                     Optimize Options.   (line 2301)
! * funroll-loops:                         Optimize Options.   (line 2291)
! * funsafe-math-optimizations:            Optimize Options.   (line 2059)
  * funsigned-bitfields:                   C Dialect Options.  (line  422)
  * funsigned-bitfields <1>:               Structures unions enumerations and bit-fields implementation.
                                                               (line   17)
--- 58404,58457 ----
                                                               (line  356)
  * ftest-coverage:                        Instrumentation Options.
                                                               (line   98)
! * fthread-jumps:                         Optimize Options.   (line  442)
  * ftime-report:                          Developer Options.  (line  782)
  * ftime-report-details:                  Developer Options.  (line  786)
  * ftls-model:                            Code Gen Options.   (line  495)
! * ftracer:                               Optimize Options.   (line 2283)
  * ftrack-macro-expansion:                Preprocessor Options.
                                                               (line  240)
  * ftrampolines:                          Code Gen Options.   (line  506)
  * ftrapv:                                Code Gen Options.   (line   91)
! * ftree-bit-ccp:                         Optimize Options.   (line 1069)
! * ftree-builtin-call-dce:                Optimize Options.   (line 1107)
! * ftree-ccp:                             Optimize Options.   (line 1075)
! * ftree-ch:                              Optimize Options.   (line 1127)
! * ftree-coalesce-vars:                   Optimize Options.   (line 1166)
! * ftree-copy-prop:                       Optimize Options.   (line  980)
! * ftree-dce:                             Optimize Options.   (line 1103)
! * ftree-dominator-opts:                  Optimize Options.   (line 1113)
! * ftree-dse:                             Optimize Options.   (line 1120)
! * ftree-forwprop:                        Optimize Options.   (line  959)
! * ftree-fre:                             Optimize Options.   (line  963)
! * ftree-loop-distribute-patterns:        Optimize Options.   (line 1200)
! * ftree-loop-distribution:               Optimize Options.   (line 1183)
! * ftree-loop-if-convert:                 Optimize Options.   (line 1176)
! * ftree-loop-im:                         Optimize Options.   (line 1242)
! * ftree-loop-ivcanon:                    Optimize Options.   (line 1251)
! * ftree-loop-linear:                     Optimize Options.   (line 1140)
! * ftree-loop-optimize:                   Optimize Options.   (line 1134)
! * ftree-loop-vectorize:                  Optimize Options.   (line 1307)
! * ftree-parallelize-loops:               Optimize Options.   (line 1262)
! * ftree-partial-pre:                     Optimize Options.   (line  955)
! * ftree-phiprop:                         Optimize Options.   (line  970)
! * ftree-pre:                             Optimize Options.   (line  951)
! * ftree-pta:                             Optimize Options.   (line 1271)
! * ftree-reassoc:                         Optimize Options.   (line  940)
! * ftree-sink:                            Optimize Options.   (line 1065)
! * ftree-slp-vectorize:                   Optimize Options.   (line 1311)
! * ftree-slsr:                            Optimize Options.   (line 1296)
! * ftree-sra:                             Optimize Options.   (line 1275)
! * ftree-switch-conversion:               Optimize Options.   (line 1090)
! * ftree-tail-merge:                      Optimize Options.   (line 1095)
! * ftree-ter:                             Optimize Options.   (line 1288)
! * ftree-vectorize:                       Optimize Options.   (line 1302)
! * ftree-vrp:                             Optimize Options.   (line 1336)
! * funconstrained-commons:                Optimize Options.   (line  532)
! * funit-at-a-time:                       Optimize Options.   (line 1608)
! * funroll-all-loops:                     Optimize Options.   (line 2300)
! * funroll-loops:                         Optimize Options.   (line 2290)
! * funsafe-math-optimizations:            Optimize Options.   (line 2058)
  * funsigned-bitfields:                   C Dialect Options.  (line  422)
  * funsigned-bitfields <1>:               Structures unions enumerations and bit-fields implementation.
                                                               (line   17)
*************** look up both forms.
*** 58437,58469 ****
  * funsigned-char:                        C Dialect Options.  (line  394)
  * funsigned-char <1>:                    Characters implementation.
                                                               (line   31)
! * funswitch-loops:                       Optimize Options.   (line 2323)
  * funwind-tables:                        Code Gen Options.   (line  149)
  * fuse-cxa-atexit:                       C++ Dialect Options.
                                                               (line  371)
  * fuse-ld=bfd:                           Link Options.       (line   25)
  * fuse-ld=gold:                          Link Options.       (line   28)
! * fuse-linker-plugin:                    Optimize Options.   (line 1868)
  * fvar-tracking:                         Debugging Options.  (line  147)
  * fvar-tracking-assignments:             Debugging Options.  (line  157)
  * fvar-tracking-assignments-toggle:      Developer Options.  (line  774)
! * fvariable-expansion-in-unroller:       Optimize Options.   (line 1365)
! * fvect-cost-model:                      Optimize Options.   (line 1316)
  * fverbose-asm:                          Code Gen Options.   (line  268)
  * fvisibility:                           Code Gen Options.   (line  530)
  * fvisibility-inlines-hidden:            C++ Dialect Options.
                                                               (line  383)
  * fvisibility-ms-compat:                 C++ Dialect Options.
                                                               (line  411)
! * fvpt:                                  Optimize Options.   (line 2256)
  * fvtable-verify:                        Instrumentation Options.
                                                               (line  721)
  * fvtv-counts:                           Instrumentation Options.
                                                               (line  757)
  * fvtv-debug:                            Instrumentation Options.
                                                               (line  744)
! * fweb:                                  Optimize Options.   (line 1628)
! * fwhole-program:                        Optimize Options.   (line 1639)
  * fwide-exec-charset:                    Preprocessor Options.
                                                               (line  271)
  * fworking-directory:                    Preprocessor Options.
--- 58459,58491 ----
  * funsigned-char:                        C Dialect Options.  (line  394)
  * funsigned-char <1>:                    Characters implementation.
                                                               (line   31)
! * funswitch-loops:                       Optimize Options.   (line 2322)
  * funwind-tables:                        Code Gen Options.   (line  149)
  * fuse-cxa-atexit:                       C++ Dialect Options.
                                                               (line  371)
  * fuse-ld=bfd:                           Link Options.       (line   25)
  * fuse-ld=gold:                          Link Options.       (line   28)
! * fuse-linker-plugin:                    Optimize Options.   (line 1867)
  * fvar-tracking:                         Debugging Options.  (line  147)
  * fvar-tracking-assignments:             Debugging Options.  (line  157)
  * fvar-tracking-assignments-toggle:      Developer Options.  (line  774)
! * fvariable-expansion-in-unroller:       Optimize Options.   (line 1364)
! * fvect-cost-model:                      Optimize Options.   (line 1315)
  * fverbose-asm:                          Code Gen Options.   (line  268)
  * fvisibility:                           Code Gen Options.   (line  530)
  * fvisibility-inlines-hidden:            C++ Dialect Options.
                                                               (line  383)
  * fvisibility-ms-compat:                 C++ Dialect Options.
                                                               (line  411)
! * fvpt:                                  Optimize Options.   (line 2255)
  * fvtable-verify:                        Instrumentation Options.
                                                               (line  721)
  * fvtv-counts:                           Instrumentation Options.
                                                               (line  757)
  * fvtv-debug:                            Instrumentation Options.
                                                               (line  744)
! * fweb:                                  Optimize Options.   (line 1627)
! * fwhole-program:                        Optimize Options.   (line 1638)
  * fwide-exec-charset:                    Preprocessor Options.
                                                               (line  271)
  * fworking-directory:                    Preprocessor Options.
*************** look up both forms.
*** 58679,58691 ****
  * mabort-on-noreturn:                    ARM Options.        (line  606)
  * mabs=2008:                             MIPS Options.       (line  299)
  * mabs=legacy:                           MIPS Options.       (line  299)
! * mabsdata:                              AVR Options.        (line  159)
  * mabsdiff:                              MeP Options.        (line    7)
  * mabshi:                                PDP-11 Options.     (line   55)
  * mac0:                                  PDP-11 Options.     (line   16)
  * macc-4:                                FRV Options.        (line  139)
  * macc-8:                                FRV Options.        (line  143)
! * maccumulate-args:                      AVR Options.        (line  166)
  * maccumulate-outgoing-args:             SH Options.         (line  314)
  * maccumulate-outgoing-args <1>:         x86 Options.        (line 1007)
  * maddress-mode=long:                    x86 Options.        (line 1380)
--- 58701,58713 ----
  * mabort-on-noreturn:                    ARM Options.        (line  606)
  * mabs=2008:                             MIPS Options.       (line  299)
  * mabs=legacy:                           MIPS Options.       (line  299)
! * mabsdata:                              AVR Options.        (line  163)
  * mabsdiff:                              MeP Options.        (line    7)
  * mabshi:                                PDP-11 Options.     (line   55)
  * 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 1007)
  * maddress-mode=long:                    x86 Options.        (line 1380)
*************** look up both forms.
*** 58850,58856 ****
  * mbranch-cheap:                         PDP-11 Options.     (line   65)
  * mbranch-cost:                          Adapteva Epiphany Options.
                                                               (line   18)
! * mbranch-cost <1>:                      AVR Options.        (line  181)
  * mbranch-cost <2>:                      MIPS Options.       (line  751)
  * mbranch-cost <3>:                      RISC-V Options.     (line    9)
  * mbranch-cost=NUM:                      SH Options.         (line  334)
--- 58872,58878 ----
  * mbranch-cheap:                         PDP-11 Options.     (line   65)
  * mbranch-cost:                          Adapteva Epiphany Options.
                                                               (line   18)
! * mbranch-cost <1>:                      AVR Options.        (line  185)
  * mbranch-cost <2>:                      MIPS Options.       (line  751)
  * mbranch-cost <3>:                      RISC-V Options.     (line    9)
  * mbranch-cost=NUM:                      SH Options.         (line  334)
*************** look up both forms.
*** 58893,58899 ****
                                                               (line  591)
  * mcall-netbsd <3>:                      RS/6000 and PowerPC Options.
                                                               (line  595)
! * mcall-prologues:                       AVR Options.        (line  186)
  * mcall-sysv:                            PowerPC SPE Options.
                                                               (line  338)
  * mcall-sysv <1>:                        RS/6000 and PowerPC Options.
--- 58915,58921 ----
                                                               (line  591)
  * mcall-netbsd <3>:                      RS/6000 and PowerPC Options.
                                                               (line  595)
! * mcall-prologues:                       AVR Options.        (line  190)
  * mcall-sysv:                            PowerPC SPE Options.
                                                               (line  338)
  * mcall-sysv <1>:                        RS/6000 and PowerPC Options.
*************** look up both forms.
*** 58973,58979 ****
  * mcop64:                                MeP Options.        (line   56)
  * mcorea:                                Blackfin Options.   (line  154)
  * mcoreb:                                Blackfin Options.   (line  161)
! * mcpu:                                  AArch64 Options.    (line  173)
  * mcpu <1>:                              ARC Options.        (line   18)
  * mcpu <2>:                              ARM Options.        (line  477)
  * mcpu <3>:                              CRIS Options.       (line   10)
--- 58995,59001 ----
  * mcop64:                                MeP Options.        (line   56)
  * mcorea:                                Blackfin Options.   (line  154)
  * mcoreb:                                Blackfin Options.   (line  161)
! * mcpu:                                  AArch64 Options.    (line  174)
  * mcpu <1>:                              ARC Options.        (line   18)
  * mcpu <2>:                              ARM Options.        (line  477)
  * mcpu <3>:                              CRIS Options.       (line   10)
*************** look up both forms.
*** 59167,59173 ****
  * mfp16-format:                          ARM Options.        (line  584)
  * mfp32:                                 MIPS Options.       (line  257)
  * mfp64:                                 MIPS Options.       (line  260)
! * mfpmath:                               Optimize Options.   (line 2020)
  * mfpmath <1>:                           x86 Options.        (line  400)
  * mfpr-32:                               FRV Options.        (line   15)
  * mfpr-64:                               FRV Options.        (line   19)
--- 59189,59195 ----
  * mfp16-format:                          ARM Options.        (line  584)
  * mfp32:                                 MIPS Options.       (line  257)
  * mfp64:                                 MIPS Options.       (line  260)
! * mfpmath:                               Optimize Options.   (line 2019)
  * mfpmath <1>:                           x86 Options.        (line  400)
  * mfpr-32:                               FRV Options.        (line   15)
  * mfpr-64:                               FRV Options.        (line   19)
*************** look up both forms.
*** 59181,59187 ****
  * mfpu <4>:                              SPARC Options.      (line   34)
  * mfpu <5>:                              Visium Options.     (line   19)
  * mfpxx:                                 MIPS Options.       (line  263)
! * mfract-convert-truncate:               AVR Options.        (line  273)
  * mframe-header-opt:                     MIPS Options.       (line  851)
  * mfriz:                                 RS/6000 and PowerPC Options.
                                                               (line  913)
--- 59203,59209 ----
  * mfpu <4>:                              SPARC Options.      (line   34)
  * mfpu <5>:                              Visium Options.     (line   19)
  * mfpxx:                                 MIPS Options.       (line  263)
! * mfract-convert-truncate:               AVR Options.        (line  277)
  * mframe-header-opt:                     MIPS Options.       (line  851)
  * mfriz:                                 RS/6000 and PowerPC Options.
                                                               (line  913)
*************** look up both forms.
*** 59213,59219 ****
  * mg13:                                  RL78 Options.       (line   62)
  * mg14:                                  RL78 Options.       (line   62)
  * mgas:                                  HPPA Options.       (line   75)
! * mgas-isr-prologues:                    AVR Options.        (line  190)
  * mgcc-abi:                              V850 Options.       (line  148)
  * mgeneral-regs-only:                    AArch64 Options.    (line   24)
  * mgeneral-regs-only <1>:                x86 Options.        (line 1281)
--- 59235,59241 ----
  * mg13:                                  RL78 Options.       (line   62)
  * mg14:                                  RL78 Options.       (line   62)
  * mgas:                                  HPPA Options.       (line   75)
! * mgas-isr-prologues:                    AVR Options.        (line  194)
  * mgcc-abi:                              V850 Options.       (line  148)
  * mgeneral-regs-only:                    AArch64 Options.    (line   24)
  * mgeneral-regs-only <1>:                x86 Options.        (line 1281)
*************** look up both forms.
*** 59310,59316 ****
  * mint32:                                CR16 Options.       (line   22)
  * mint32 <1>:                            H8/300 Options.     (line   38)
  * mint32 <2>:                            PDP-11 Options.     (line   44)
! * mint8:                                 AVR Options.        (line  200)
  * minterlink-compressed:                 MIPS Options.       (line  134)
  * minterlink-mips16:                     MIPS Options.       (line  146)
  * mio-volatile:                          MeP Options.        (line   74)
--- 59332,59338 ----
  * mint32:                                CR16 Options.       (line   22)
  * mint32 <1>:                            H8/300 Options.     (line   38)
  * mint32 <2>:                            PDP-11 Options.     (line   44)
! * mint8:                                 AVR Options.        (line  204)
  * minterlink-compressed:                 MIPS Options.       (line  134)
  * minterlink-mips16:                     MIPS Options.       (line  146)
  * mio-volatile:                          MeP Options.        (line   74)
*************** look up both forms.
*** 59432,59438 ****
  * mmac_d16:                              ARC Options.        (line  623)
  * mmad:                                  MIPS Options.       (line  588)
  * mmadd4:                                MIPS Options.       (line  866)
! * mmain-is-OS_task:                      AVR Options.        (line  206)
  * mmainkernel:                           Nvidia PTX Options. (line   13)
  * mmalloc64:                             VMS Options.        (line   17)
  * mmax:                                  DEC Alpha Options.  (line  163)
--- 59454,59460 ----
  * mmac_d16:                              ARC Options.        (line  623)
  * mmad:                                  MIPS Options.       (line  588)
  * mmadd4:                                MIPS Options.       (line  866)
! * mmain-is-OS_task:                      AVR Options.        (line  210)
  * mmainkernel:                           Nvidia PTX Options. (line   13)
  * mmalloc64:                             VMS Options.        (line   17)
  * mmax:                                  DEC Alpha Options.  (line  163)
*************** look up both forms.
*** 59503,59509 ****
                                                               (line  666)
  * mmwaitx:                               x86 Options.        (line  759)
  * mn:                                    H8/300 Options.     (line   20)
! * mn-flash:                              AVR Options.        (line  211)
  * mnan=2008:                             MIPS Options.       (line  319)
  * mnan=legacy:                           MIPS Options.       (line  319)
  * mneon-for-64bits:                      ARM Options.        (line  767)
--- 59525,59531 ----
                                                               (line  666)
  * mmwaitx:                               x86 Options.        (line  759)
  * mn:                                    H8/300 Options.     (line   20)
! * mn-flash:                              AVR Options.        (line  215)
  * mnan=2008:                             MIPS Options.       (line  319)
  * mnan=legacy:                           MIPS Options.       (line  319)
  * mneon-for-64bits:                      ARM Options.        (line  767)
*************** look up both forms.
*** 59672,59678 ****
  * mno-int32:                             PDP-11 Options.     (line   40)
  * mno-interlink-compressed:              MIPS Options.       (line  134)
  * mno-interlink-mips16:                  MIPS Options.       (line  146)
! * mno-interrupts:                        AVR Options.        (line  214)
  * mno-isel:                              PowerPC SPE Options.
                                                               (line   79)
  * mno-isel <1>:                          RS/6000 and PowerPC Options.
--- 59694,59700 ----
  * mno-int32:                             PDP-11 Options.     (line   40)
  * mno-interlink-compressed:              MIPS Options.       (line  134)
  * mno-interlink-mips16:                  MIPS Options.       (line  146)
! * mno-interrupts:                        AVR Options.        (line  218)
  * mno-isel:                              PowerPC SPE Options.
                                                               (line   79)
  * mno-isel <1>:                          RS/6000 and PowerPC Options.
*************** look up both forms.
*** 59743,59749 ****
  * mno-paired:                            RS/6000 and PowerPC Options.
                                                               (line  204)
  * mno-paired-single:                     MIPS Options.       (line  369)
! * mno-pc-relative-literal-loads:         AArch64 Options.    (line  203)
  * mno-perf-ext:                          NDS32 Options.      (line   30)
  * mno-perf-ext <1>:                      NDS32 Options.      (line   36)
  * mno-perf-ext <2>:                      NDS32 Options.      (line   42)
--- 59765,59771 ----
  * mno-paired:                            RS/6000 and PowerPC Options.
                                                               (line  204)
  * mno-paired-single:                     MIPS Options.       (line  369)
! * mno-pc-relative-literal-loads:         AArch64 Options.    (line  204)
  * mno-perf-ext:                          NDS32 Options.      (line   30)
  * mno-perf-ext <1>:                      NDS32 Options.      (line   36)
  * mno-perf-ext <2>:                      NDS32 Options.      (line   42)
*************** look up both forms.
*** 59930,59936 ****
  * mone-byte-bool:                        Darwin Options.     (line   90)
  * moptimize:                             Nvidia PTX Options. (line   17)
  * moptimize-membar:                      FRV Options.        (line  244)
! * moverride:                             AArch64 Options.    (line  190)
  * MP:                                    Preprocessor Options.
                                                               (line  132)
  * mpa-risc-1-0:                          HPPA Options.       (line   19)
--- 59952,59958 ----
  * mone-byte-bool:                        Darwin Options.     (line   90)
  * moptimize:                             Nvidia PTX Options. (line   17)
  * moptimize-membar:                      FRV Options.        (line  244)
! * moverride:                             AArch64 Options.    (line  191)
  * MP:                                    Preprocessor Options.
                                                               (line  132)
  * mpa-risc-1-0:                          HPPA Options.       (line   19)
*************** look up both forms.
*** 59943,59949 ****
  * mpaired:                               RS/6000 and PowerPC Options.
                                                               (line  204)
  * mpaired-single:                        MIPS Options.       (line  369)
! * mpc-relative-literal-loads:            AArch64 Options.    (line  203)
  * mpc32:                                 x86 Options.        (line  627)
  * mpc64:                                 x86 Options.        (line  627)
  * mpc80:                                 x86 Options.        (line  627)
--- 59965,59971 ----
  * mpaired:                               RS/6000 and PowerPC Options.
                                                               (line  204)
  * mpaired-single:                        MIPS Options.       (line  369)
! * mpc-relative-literal-loads:            AArch64 Options.    (line  204)
  * mpc32:                                 x86 Options.        (line  627)
  * mpc64:                                 x86 Options.        (line  627)
  * mpc80:                                 x86 Options.        (line  627)
*************** look up both forms.
*** 60049,60055 ****
  * mregnames <1>:                         RS/6000 and PowerPC Options.
                                                               (line  782)
  * mregparm:                              x86 Options.        (line  594)
! * mrelax:                                AVR Options.        (line  218)
  * mrelax <1>:                            H8/300 Options.     (line    9)
  * mrelax <2>:                            MN10300 Options.    (line   46)
  * mrelax <3>:                            MSP430 Options.     (line   58)
--- 60071,60077 ----
  * mregnames <1>:                         RS/6000 and PowerPC Options.
                                                               (line  782)
  * mregparm:                              x86 Options.        (line  594)
! * mrelax:                                AVR Options.        (line  222)
  * mrelax <1>:                            H8/300 Options.     (line    9)
  * mrelax <2>:                            MN10300 Options.    (line   46)
  * mrelax <3>:                            MSP430 Options.     (line   58)
*************** look up both forms.
*** 60075,60081 ****
  * mrgf-banked-regs:                      ARC Options.        (line  304)
  * mrh850-abi:                            V850 Options.       (line  127)
  * mrl78:                                 RL78 Options.       (line   62)
! * mrmw:                                  AVR Options.        (line  232)
  * mrtd:                                  M680x0 Options.     (line  236)
  * mrtd <1>:                              x86 Options.        (line  570)
  * mrtd <2>:                              x86 Function Attributes.
--- 60097,60103 ----
  * mrgf-banked-regs:                      ARC Options.        (line  304)
  * mrh850-abi:                            V850 Options.       (line  127)
  * mrl78:                                 RL78 Options.       (line   62)
! * mrmw:                                  AVR Options.        (line  236)
  * mrtd:                                  M680x0 Options.     (line  236)
  * mrtd <1>:                              x86 Options.        (line  570)
  * mrtd <2>:                              x86 Function Attributes.
*************** look up both forms.
*** 60168,60177 ****
  * msha:                                  x86 Options.        (line  723)
  * mshared-library-id:                    Blackfin Options.   (line  100)
  * mshort:                                M680x0 Options.     (line  216)
! * mshort-calls:                          AVR Options.        (line  236)
  * mshstk:                                x86 Options.        (line  886)
  * msign-extend-enabled:                  LM32 Options.       (line   18)
! * msign-return-address:                  AArch64 Options.    (line  209)
  * msilicon-errata:                       MSP430 Options.     (line  102)
  * msilicon-errata-warn:                  MSP430 Options.     (line  106)
  * msim:                                  Blackfin Options.   (line   36)
--- 60190,60199 ----
  * msha:                                  x86 Options.        (line  723)
  * mshared-library-id:                    Blackfin Options.   (line  100)
  * mshort:                                M680x0 Options.     (line  216)
! * mshort-calls:                          AVR Options.        (line  240)
  * mshstk:                                x86 Options.        (line  886)
  * msign-extend-enabled:                  LM32 Options.       (line   18)
! * msign-return-address:                  AArch64 Options.    (line  210)
  * msilicon-errata:                       MSP430 Options.     (line  102)
  * msilicon-errata-warn:                  MSP430 Options.     (line  106)
  * msim:                                  Blackfin Options.   (line   36)
*************** look up both forms.
*** 60243,60249 ****
  * msoft-float <14>:                      x86 Options.        (line  469)
  * msoft-quad-float:                      SPARC Options.      (line   59)
  * msoft-stack:                           Nvidia PTX Options. (line   21)
! * msp8:                                  AVR Options.        (line  243)
  * mspace:                                V850 Options.       (line   30)
  * mspe:                                  PowerPC SPE Options.
                                                               (line   88)
--- 60265,60271 ----
  * msoft-float <14>:                      x86 Options.        (line  469)
  * msoft-quad-float:                      SPARC Options.      (line   59)
  * msoft-stack:                           Nvidia PTX Options. (line   21)
! * msp8:                                  AVR Options.        (line  247)
  * mspace:                                V850 Options.       (line   30)
  * mspe:                                  PowerPC SPE Options.
                                                               (line   88)
*************** look up both forms.
*** 60305,60318 ****
  * mstrict-align <3>:                     RISC-V Options.     (line   80)
  * mstrict-align <4>:                     RS/6000 and PowerPC Options.
                                                               (line  461)
! * mstrict-X:                             AVR Options.        (line  256)
  * mstring-compare-inline-limit:          RS/6000 and PowerPC Options.
                                                               (line  766)
  * mstringop-strategy=ALG:                x86 Options.        (line 1159)
  * mstructure-size-boundary:              ARM Options.        (line  590)
  * msubxc:                                SPARC Options.      (line  288)
  * msv-mode:                              Visium Options.     (line   52)
! * msve-vector-bits:                      AArch64 Options.    (line  216)
  * msvr4-struct-return:                   PowerPC SPE Options.
                                                               (line  375)
  * msvr4-struct-return <1>:               RS/6000 and PowerPC Options.
--- 60327,60340 ----
  * mstrict-align <3>:                     RISC-V Options.     (line   80)
  * mstrict-align <4>:                     RS/6000 and PowerPC Options.
                                                               (line  461)
! * mstrict-X:                             AVR Options.        (line  260)
  * mstring-compare-inline-limit:          RS/6000 and PowerPC Options.
                                                               (line  766)
  * mstringop-strategy=ALG:                x86 Options.        (line 1159)
  * mstructure-size-boundary:              ARM Options.        (line  590)
  * msubxc:                                SPARC Options.      (line  288)
  * msv-mode:                              Visium Options.     (line   52)
! * msve-vector-bits:                      AArch64 Options.    (line  217)
  * msvr4-struct-return:                   PowerPC SPE Options.
                                                               (line  375)
  * msvr4-struct-return <1>:               RS/6000 and PowerPC Options.
*************** look up both forms.
*** 60337,60343 ****
  * mthreads:                              x86 Options.        (line 1015)
  * mthumb:                                ARM Options.        (line  678)
  * mthumb-interwork:                      ARM Options.        (line   24)
! * mtiny-stack:                           AVR Options.        (line  270)
  * mtiny=:                                MeP Options.        (line  125)
  * mTLS:                                  FRV Options.        (line   90)
  * mtls:                                  FRV Options.        (line   94)
--- 60359,60365 ----
  * mthreads:                              x86 Options.        (line 1015)
  * mthumb:                                ARM Options.        (line  678)
  * mthumb-interwork:                      ARM Options.        (line   24)
! * mtiny-stack:                           AVR Options.        (line  274)
  * mtiny=:                                MeP Options.        (line  125)
  * mTLS:                                  FRV Options.        (line   90)
  * mtls:                                  FRV Options.        (line   94)
*************** look up both forms.
*** 60430,60436 ****
                                                               (line  894)
  * mveclibabi <1>:                        x86 Options.        (line  947)
  * mvect8-ret-in-mem:                     x86 Options.        (line  615)
! * mverbose-cost-dump:                    AArch64 Options.    (line  198)
  * mverbose-cost-dump <1>:                ARM Options.        (line  796)
  * mvirt:                                 MIPS Options.       (line  406)
  * mvis:                                  SPARC Options.      (line  221)
--- 60452,60458 ----
                                                               (line  894)
  * mveclibabi <1>:                        x86 Options.        (line  947)
  * mvect8-ret-in-mem:                     x86 Options.        (line  615)
! * mverbose-cost-dump:                    AArch64 Options.    (line  199)
  * mverbose-cost-dump <1>:                ARM Options.        (line  796)
  * mvirt:                                 MIPS Options.       (line  406)
  * mvis:                                  SPARC Options.      (line  221)
*************** look up both forms.
*** 60515,60521 ****
  * noall_load:                            Darwin Options.     (line  196)
  * nocpp:                                 MIPS Options.       (line  612)
  * nodefaultlibs:                         Link Options.       (line   68)
! * nodevicelib:                           AVR Options.        (line  277)
  * nofixprebinding:                       Darwin Options.     (line  196)
  * nofpu:                                 RX Options.         (line   17)
  * nolibdld:                              HPPA Options.       (line  188)
--- 60537,60544 ----
  * noall_load:                            Darwin Options.     (line  196)
  * nocpp:                                 MIPS Options.       (line  612)
  * nodefaultlibs:                         Link Options.       (line   68)
! * nodevicelib:                           AVR Options.        (line  281)
! * nodevicespecs:                         AVR Options.        (line  284)
  * nofixprebinding:                       Darwin Options.     (line  196)
  * nofpu:                                 RX Options.         (line   17)
  * nolibdld:                              HPPA Options.       (line  188)
*************** look up both forms.
*** 60536,60550 ****
  * O1:                                    Optimize Options.   (line   39)
  * O2:                                    Optimize Options.   (line   92)
  * O3:                                    Optimize Options.   (line  141)
! * Ofast:                                 Optimize Options.   (line  177)
! * Og:                                    Optimize Options.   (line  184)
  * Os:                                    Optimize Options.   (line  164)
  * p:                                     Instrumentation Options.
                                                               (line   19)
  * P:                                     Preprocessor Options.
                                                               (line  361)
  * pagezero_size:                         Darwin Options.     (line  196)
! * param:                                 Optimize Options.   (line 2400)
  * pass-exit-codes:                       Overall Options.    (line  326)
  * pedantic:                              Standards.          (line   13)
  * pedantic <1>:                          Warning Options.    (line   80)
--- 60559,60573 ----
  * O1:                                    Optimize Options.   (line   39)
  * O2:                                    Optimize Options.   (line   92)
  * O3:                                    Optimize Options.   (line  141)
! * Ofast:                                 Optimize Options.   (line  176)
! * Og:                                    Optimize Options.   (line  183)
  * Os:                                    Optimize Options.   (line  164)
  * p:                                     Instrumentation Options.
                                                               (line   19)
  * P:                                     Preprocessor Options.
                                                               (line  361)
  * pagezero_size:                         Darwin Options.     (line  196)
! * param:                                 Optimize Options.   (line 2399)
  * pass-exit-codes:                       Overall Options.    (line  326)
  * pedantic:                              Standards.          (line   13)
  * pedantic <1>:                          Warning Options.    (line   80)
*************** look up both forms.
*** 60670,60676 ****
                                                               (line  455)
  * Wabi-tag:                              C++ Dialect Options.
                                                               (line  559)
! * Waddr-space-convert:                   AVR Options.        (line  280)
  * Waddress:                              Warning Options.    (line 2299)
  * Waggregate-return:                     Warning Options.    (line 2335)
  * Waggressive-loop-optimizations:        Warning Options.    (line 2340)
--- 60693,60699 ----
                                                               (line  455)
  * Wabi-tag:                              C++ Dialect Options.
                                                               (line  559)
! * Waddr-space-convert:                   AVR Options.        (line  290)
  * Waddress:                              Warning Options.    (line 2299)
  * Waggregate-return:                     Warning Options.    (line 2335)
  * Waggressive-loop-optimizations:        Warning Options.    (line 2340)
*************** look up both forms.
*** 60812,60818 ****
  * Wmissing-include-dirs:                 Warning Options.    (line  756)
  * Wmissing-parameter-type:               Warning Options.    (line 2376)
  * Wmissing-prototypes:                   Warning Options.    (line 2384)
! * Wmisspelled-isr:                       AVR Options.        (line  285)
  * Wmultichar:                            Warning Options.    (line 2434)
  * Wmultiple-inheritance:                 C++ Dialect Options.
                                                               (line  792)
--- 60835,60841 ----
  * Wmissing-include-dirs:                 Warning Options.    (line  756)
  * Wmissing-parameter-type:               Warning Options.    (line 2376)
  * Wmissing-prototypes:                   Warning Options.    (line 2384)
! * Wmisspelled-isr:                       AVR Options.        (line  295)
  * Wmultichar:                            Warning Options.    (line 2434)
  * Wmultiple-inheritance:                 C++ Dialect Options.
                                                               (line  792)
*************** Keyword Index
*** 61247,61254 ****
  * + in constraint:                       Modifiers.          (line   12)
  * -lgcc, use with -nodefaultlibs:        Link Options.       (line   91)
  * -lgcc, use with -nostdlib:             Link Options.       (line   91)
! * -march feature modifiers:              AArch64 Options.    (line  238)
! * -mcpu feature modifiers:               AArch64 Options.    (line  238)
  * -nodefaultlibs and unresolved references: Link Options.    (line   91)
  * -nostdlib and unresolved references:   Link Options.       (line   91)
  * .sdata/.sdata2 references (PowerPC):   PowerPC SPE Options.
--- 61270,61277 ----
  * + in constraint:                       Modifiers.          (line   12)
  * -lgcc, use with -nodefaultlibs:        Link Options.       (line   91)
  * -lgcc, use with -nostdlib:             Link Options.       (line   91)
! * -march feature modifiers:              AArch64 Options.    (line  239)
! * -mcpu feature modifiers:               AArch64 Options.    (line  239)
  * -nodefaultlibs and unresolved references: Link Options.    (line   91)
  * -nostdlib and unresolved references:   Link Options.       (line   91)
  * .sdata/.sdata2 references (PowerPC):   PowerPC SPE Options.
*************** Keyword Index
*** 62196,62202 ****
                                                               (line    9)
  * eightbit_data variable attribute, H8/300: H8/300 Variable Attributes.
                                                               (line    9)
! * EIND:                                  AVR Options.        (line  291)
  * either function attribute, MSP430:     MSP430 Function Attributes.
                                                               (line   53)
  * either variable attribute, MSP430:     MSP430 Variable Attributes.
--- 62219,62225 ----
                                                               (line    9)
  * eightbit_data variable attribute, H8/300: H8/300 Variable Attributes.
                                                               (line    9)
! * EIND:                                  AVR Options.        (line  301)
  * either function attribute, MSP430:     MSP430 Function Attributes.
                                                               (line   53)
  * either variable attribute, MSP430:     MSP430 Variable Attributes.
*************** Keyword Index
*** 62297,62303 ****
  * flexible array members:                Zero Length.        (line    6)
  * float as function value type:          Incompatibilities.  (line  141)
  * floating point precision:              Disappointments.    (line   68)
! * floating-point precision:              Optimize Options.   (line 1993)
  * floor:                                 Other Builtins.     (line    6)
  * floorf:                                Other Builtins.     (line    6)
  * floorl:                                Other Builtins.     (line    6)
--- 62320,62326 ----
  * flexible array members:                Zero Length.        (line    6)
  * float as function value type:          Incompatibilities.  (line  141)
  * floating point precision:              Disappointments.    (line   68)
! * floating-point precision:              Optimize Options.   (line 1992)
  * floor:                                 Other Builtins.     (line    6)
  * floorf:                                Other Builtins.     (line    6)
  * floorl:                                Other Builtins.     (line    6)
*************** Keyword Index
*** 63129,63138 ****
  * 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  402)
! * RAMPX:                                 AVR Options.        (line  402)
! * RAMPY:                                 AVR Options.        (line  402)
! * RAMPZ:                                 AVR Options.        (line  402)
  * range1 GCC_COLORS capability:          Diagnostic Message Formatting Options.
                                                               (line   81)
  * range2 GCC_COLORS capability:          Diagnostic Message Formatting Options.
--- 63152,63161 ----
  * 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  412)
! * RAMPX:                                 AVR Options.        (line  412)
! * RAMPY:                                 AVR Options.        (line  412)
! * RAMPZ:                                 AVR Options.        (line  412)
  * range1 GCC_COLORS capability:          Diagnostic Message Formatting Options.
                                                               (line   81)
  * range2 GCC_COLORS capability:          Diagnostic Message Formatting Options.
*************** Node: G++ and GCC3947
*** 63874,64275 ****
  Node: Standards6012
  Node: Invoking GCC19170
  Node: Option Summary23371
! Node: Overall Options75951
! Node: Invoking G++90943
! Node: C Dialect Options92466
! Node: C++ Dialect Options111330
! Node: Objective-C and Objective-C++ Dialect Options148314
! Node: Diagnostic Message Formatting Options159544
! Node: Warning Options168356
! Ref: Wtrigraphs254515
! Node: Debugging Options291102
! Node: Optimize Options309977
! Ref: Type-punning373770
! Node: Instrumentation Options465508
! Node: Preprocessor Options507673
! Ref: dashMF512520
! Ref: fdollars-in-identifiers517099
! Node: Assembler Options529349
! Node: Link Options530040
! Ref: Link Options-Footnote-1544355
! Node: Directory Options544691
! Node: Code Gen Options553094
! Node: Developer Options581759
! Node: Submodel Options620671
! Node: AArch64 Options622429
! Ref: aarch64-feature-modifiers632893
! Node: Adapteva Epiphany Options635284
! Node: ARC Options641231
! Node: ARM Options662148
! Node: AVR Options697104
! Node: Blackfin Options721134
! Node: C6X Options729028
! Node: CRIS Options730571
! Node: CR16 Options734310
! Node: Darwin Options735221
! Node: DEC Alpha Options742661
! Node: FR30 Options754277
! Node: FT32 Options754842
! Node: FRV Options755788
! Node: GNU/Linux Options762552
! Node: H8/300 Options763933
! Node: HPPA Options765385
! Node: IA-64 Options774917
! Node: LM32 Options783045
! Node: M32C Options783568
! Node: M32R/D Options784841
! Node: M680x0 Options788386
! Node: MCore Options802538
! Node: MeP Options804040
! Node: MicroBlaze Options808000
! Node: MIPS Options810786
! Node: MMIX Options846238
! Node: MN10300 Options848715
! Node: Moxie Options851256
! Node: MSP430 Options851743
! Node: NDS32 Options856447
! Node: Nios II Options858617
! Node: Nvidia PTX Options870780
! Node: PDP-11 Options873042
! Node: picoChip Options874739
! Node: PowerPC Options876877
! Node: PowerPC SPE Options877105
! Node: RISC-V Options905611
! Node: RL78 Options909995
! Node: RS/6000 and PowerPC Options913770
! Node: RX Options955751
! Node: S/390 and zSeries Options964353
! Node: Score Options974818
! Node: SH Options975667
! Node: Solaris 2 Options990809
! Node: SPARC Options992047
! Node: SPU Options1007668
! Node: System V Options1012607
! Node: TILE-Gx Options1013433
! Node: TILEPro Options1014451
! Node: V850 Options1014955
! Node: VAX Options1021642
! Node: Visium Options1022180
! Node: VMS Options1024488
! Node: VxWorks Options1025304
! Node: x86 Options1026456
! Node: x86 Windows Options1085196
! Node: Xstormy16 Options1088001
! Node: Xtensa Options1088295
! Node: zSeries Options1093444
! Node: Spec Files1093640
! Node: Environment Variables1115798
! Node: Precompiled Headers1124524
! Node: C Implementation1130530
! Node: Translation implementation1132220
! Node: Environment implementation1132811
! Node: Identifiers implementation1133365
! Node: Characters implementation1134451
! Node: Integers implementation1138101
! Node: Floating point implementation1140150
! Node: Arrays and pointers implementation1143213
! Ref: Arrays and pointers implementation-Footnote-11144673
! Node: Hints implementation1144799
! Node: Structures unions enumerations and bit-fields implementation1146294
! Node: Qualifiers implementation1148518
! Node: Declarators implementation1150298
! Node: Statements implementation1150639
! Node: Preprocessing directives implementation1150965
! Node: Library functions implementation1153286
! Node: Architecture implementation1153935
! Node: Locale-specific behavior implementation1155580
! Node: C++ Implementation1155885
! Node: Conditionally-supported behavior1157168
! Node: Exception handling1157785
! Node: C Extensions1158252
! Node: Statement Exprs1163453
! Node: Local Labels1167930
! Node: Labels as Values1170903
! Ref: Labels as Values-Footnote-11173430
! Node: Nested Functions1173615
! Node: Constructing Calls1177573
! Node: Typeof1182290
! Node: Conditionals1186219
! Node: __int1281187108
! Node: Long Long1187633
! Node: Complex1189109
! Node: Floating Types1191877
! Node: Half-Precision1195344
! Node: Decimal Float1197755
! Node: Hex Floats1199609
! Node: Fixed-Point1200646
! Node: Named Address Spaces1203904
! Ref: AVR Named Address Spaces1204590
! Node: Zero Length1211613
! Node: Empty Structures1214653
! Node: Variable Length1215059
! Node: Variadic Macros1217777
! Node: Escaped Newlines1220155
! Node: Subscripting1221016
! Node: Pointer Arith1221741
! Node: Pointers to Arrays1222315
! Node: Initializers1223060
! Node: Compound Literals1223561
! Node: Designated Inits1227128
! Node: Case Ranges1230864
! Node: Cast to Union1231545
! Node: Mixed Declarations1232671
! Node: Function Attributes1233181
! Node: Common Function Attributes1236569
! Node: AArch64 Function Attributes1288078
! Node: ARC Function Attributes1293484
! Node: ARM Function Attributes1295806
! Node: AVR Function Attributes1300611
! Node: Blackfin Function Attributes1305146
! Node: CR16 Function Attributes1307644
! Node: Epiphany Function Attributes1308171
! Node: H8/300 Function Attributes1310923
! Node: IA-64 Function Attributes1312119
! Node: M32C Function Attributes1313161
! Node: M32R/D Function Attributes1315499
! Node: m68k Function Attributes1316973
! Node: MCORE Function Attributes1317917
! Node: MeP Function Attributes1318728
! Node: MicroBlaze Function Attributes1320029
! Node: Microsoft Windows Function Attributes1321536
! Node: MIPS Function Attributes1326105
! Node: MSP430 Function Attributes1331723
! Node: NDS32 Function Attributes1335571
! Node: Nios II Function Attributes1337995
! Node: Nvidia PTX Function Attributes1339292
! Node: PowerPC Function Attributes1339907
! Node: RISC-V Function Attributes1346962
! Node: RL78 Function Attributes1347781
! Node: RX Function Attributes1349020
! Node: S/390 Function Attributes1351568
! Node: SH Function Attributes1353396
! Node: SPU Function Attributes1356817
! Node: Symbian OS Function Attributes1357625
! Node: V850 Function Attributes1357962
! Node: Visium Function Attributes1358507
! Node: x86 Function Attributes1359035
! Node: Xstormy16 Function Attributes1380258
! Node: Variable Attributes1380765
! Node: Common Variable Attributes1382254
! Node: ARC Variable Attributes1396022
! Node: AVR Variable Attributes1396404
! Node: Blackfin Variable Attributes1401566
! Node: H8/300 Variable Attributes1402424
! Node: IA-64 Variable Attributes1403497
! Node: M32R/D Variable Attributes1404248
! Node: MeP Variable Attributes1405031
! Node: Microsoft Windows Variable Attributes1407124
! Node: MSP430 Variable Attributes1409577
! Node: Nvidia PTX Variable Attributes1410778
! Node: PowerPC Variable Attributes1411395
! Node: RL78 Variable Attributes1411952
! Node: SPU Variable Attributes1412370
! Node: V850 Variable Attributes1412735
! Node: x86 Variable Attributes1413367
! Node: Xstormy16 Variable Attributes1414423
! Node: Type Attributes1414993
! Node: Common Type Attributes1416337
! Node: ARC Type Attributes1433186
! Node: ARM Type Attributes1433658
! Node: MeP Type Attributes1434440
! Node: PowerPC Type Attributes1434842
! Node: SPU Type Attributes1435831
! Node: x86 Type Attributes1436250
! Node: Label Attributes1437238
! Node: Enumerator Attributes1439171
! Node: Statement Attributes1440490
! Node: Attribute Syntax1441973
! Node: Function Prototypes1453231
! Node: C++ Comments1455011
! Node: Dollar Signs1455530
! Node: Character Escapes1455995
! Node: Alignment1456279
! Node: Inline1457651
! Node: Volatiles1462468
! Node: Using Assembly Language with C1465367
! Node: Basic Asm1466604
! Node: Extended Asm1471964
! Ref: Volatile1476051
! Ref: AssemblerTemplate1480136
! Ref: OutputOperands1484374
! Ref: FlagOutputOperands1491325
! Ref: InputOperands1493354
! Ref: Clobbers and Scratch Registers1497622
! Ref: GotoLabels1505778
! Ref: x86Operandmodifiers1507913
! Ref: x86floatingpointasmoperands1510114
! Node: Constraints1513443
! Node: Simple Constraints1514549
! Node: Multi-Alternative1521863
! Node: Modifiers1523538
! Node: Machine Constraints1526336
! Node: Asm Labels1586137
! Node: Explicit Register Variables1587757
! Ref: Explicit Reg Vars1587971
! Node: Global Register Variables1588580
! Ref: Global Reg Vars1588788
! Node: Local Register Variables1592640
! Ref: Local Reg Vars1592860
! Node: Size of an asm1596167
! Node: Alternate Keywords1597645
! Node: Incomplete Enums1599144
! Node: Function Names1599901
! Node: Return Address1601799
! Node: Vector Extensions1605740
! Node: Offsetof1613035
! Node: __sync Builtins1613868
! Node: __atomic Builtins1620309
! Node: Integer Overflow Builtins1633790
! Node: x86 specific memory model extensions for transactional memory1640266
! Node: Object Size Checking1641532
! Node: Pointer Bounds Checker builtins1647571
! Node: Other Builtins1653573
! Node: Target Builtins1694714
! Node: AArch64 Built-in Functions1696372
! Node: Alpha Built-in Functions1696827
! Node: Altera Nios II Built-in Functions1699875
! Node: ARC Built-in Functions1704244
! Node: ARC SIMD Built-in Functions1709456
! Node: ARM iWMMXt Built-in Functions1718352
! Node: ARM C Language Extensions (ACLE)1725348
! Node: ARM Floating Point Status and Control Intrinsics1726687
! Node: ARM ARMv8-M Security Extensions1727172
! Node: AVR Built-in Functions1728517
! Node: Blackfin Built-in Functions1732278
! Node: FR-V Built-in Functions1732897
! Node: Argument Types1733765
! Node: Directly-mapped Integer Functions1735519
! Node: Directly-mapped Media Functions1736603
! Node: Raw read/write Functions1744809
! Node: Other Built-in Functions1745717
! Node: MIPS DSP Built-in Functions1746903
! Node: MIPS Paired-Single Support1759400
! Node: MIPS Loongson Built-in Functions1760899
! Node: Paired-Single Arithmetic1767421
! Node: Paired-Single Built-in Functions1768369
! Node: MIPS-3D Built-in Functions1771036
! Node: MIPS SIMD Architecture (MSA) Support1776414
! Node: MIPS SIMD Architecture Built-in Functions1779254
! Node: Other MIPS Built-in Functions1806084
! Node: MSP430 Built-in Functions1807093
! Node: NDS32 Built-in Functions1808494
! Node: picoChip Built-in Functions1809787
! Node: PowerPC Built-in Functions1811130
! Node: PowerPC AltiVec/VSX Built-in Functions1845611
! Node: PowerPC Hardware Transactional Memory Built-in Functions2014639
! Node: PowerPC Atomic Memory Operation Functions2023150
! Node: RX Built-in Functions2025685
! Node: S/390 System z Built-in Functions2029703
! Node: SH Built-in Functions2034933
! Node: SPARC VIS Built-in Functions2036661
! Node: SPU Built-in Functions2045190
! Node: TI C6X Built-in Functions2046907
! Node: TILE-Gx Built-in Functions2047932
! Node: TILEPro Built-in Functions2049051
! Node: x86 Built-in Functions2050151
! Node: x86 transactional memory intrinsics2111423
! Node: x86 control-flow protection intrinsics2114690
! Node: Target Format Checks2116461
! Node: Solaris Format Checks2116893
! Node: Darwin Format Checks2117319
! Node: Pragmas2118137
! Node: AArch64 Pragmas2118910
! Node: ARM Pragmas2119367
! Node: M32C Pragmas2119994
! Node: MeP Pragmas2121066
! Node: RS/6000 and PowerPC Pragmas2123134
! Node: S/390 Pragmas2123874
! Node: Darwin Pragmas2124440
! Node: Solaris Pragmas2125493
! Node: Symbol-Renaming Pragmas2126657
! Node: Structure-Layout Pragmas2128273
! Node: Weak Pragmas2130553
! Node: Diagnostic Pragmas2131288
! Node: Visibility Pragmas2134397
! Node: Push/Pop Macro Pragmas2135082
! Node: Function Specific Option Pragmas2136055
! Node: Loop-Specific Pragmas2137924
! Node: Unnamed Fields2139524
! Node: Thread-Local2141721
! Node: C99 Thread-Local Edits2143827
! Node: C++98 Thread-Local Edits2145825
! Node: Binary constants2149270
! Node: C++ Extensions2149941
! Node: C++ Volatiles2151571
! Node: Restricted Pointers2153919
! Node: Vague Linkage2155510
! Node: C++ Interface2159133
! Ref: C++ Interface-Footnote-12162930
! Node: Template Instantiation2163068
! Node: Bound member functions2170551
! Node: C++ Attributes2172083
! Node: Function Multiversioning2176155
! Node: Type Traits2177962
! Node: C++ Concepts2184727
! Node: Deprecated Features2186226
! Node: Backwards Compatibility2188317
! Node: Objective-C2190151
! Node: GNU Objective-C runtime API2190758
! Node: Modern GNU Objective-C runtime API2191765
! Node: Traditional GNU Objective-C runtime API2194201
! Node: Executing code before main2194928
! Node: What you can and what you cannot do in +load2197672
! Node: Type encoding2200042
! Node: Legacy type encoding2205183
! Node: @encode2206273
! Node: Method signatures2206818
! Node: Garbage Collection2208810
! Node: Constant string objects2211500
! Node: compatibility_alias2214009
! Node: Exceptions2214734
! Node: Synchronization2217444
! Node: Fast enumeration2218628
! Node: Using fast enumeration2218940
! Node: c99-like fast enumeration syntax2220151
! Node: Fast enumeration details2220854
! Node: Fast enumeration protocol2223194
! Node: Messaging with the GNU Objective-C runtime2226346
! Node: Dynamically registering methods2227718
! Node: Forwarding hook2229409
! Node: Compatibility2232450
! Node: Gcov2239006
! Node: Gcov Intro2239541
! Node: Invoking Gcov2242259
! Node: Gcov and Optimization2263204
! Node: Gcov Data Files2266573
! Node: Cross-profiling2267990
! Node: Gcov-tool2269844
! Node: Gcov-tool Intro2270269
! Node: Invoking Gcov-tool2272239
! Node: Gcov-dump2274817
! Node: Gcov-dump Intro2275139
! Node: Invoking Gcov-dump2275406
! Node: Trouble2276075
! Node: Actual Bugs2277493
! Node: Interoperation2277940
! Node: Incompatibilities2284831
! Node: Fixed Headers2292983
! Node: Standard Libraries2294641
! Node: Disappointments2296013
! Node: C++ Misunderstandings2300372
! Node: Static Definitions2301183
! Node: Name lookup2302236
! Ref: Name lookup-Footnote-12307017
! Node: Temporaries2307206
! Node: Copy Assignment2309182
! Node: Non-bugs2310989
! Node: Warnings and Errors2321495
! Node: Bugs2323257
! Node: Bug Criteria2323724
! Node: Bug Reporting2325934
! Node: Service2326152
! Node: Contributing2326971
! Node: Funding2327711
! Node: GNU Project2330201
! Node: Copying2330847
! Node: GNU Free Documentation License2368356
! Node: Contributors2393474
! Node: Option Index2434409
! Node: Keyword Index2699110
  
  End Tag Table
--- 63897,64298 ----
  Node: Standards6012
  Node: Invoking GCC19170
  Node: Option Summary23371
! Node: Overall Options75929
! Node: Invoking G++90921
! Node: C Dialect Options92444
! Node: C++ Dialect Options111308
! Node: Objective-C and Objective-C++ Dialect Options148292
! Node: Diagnostic Message Formatting Options159522
! Node: Warning Options168334
! Ref: Wtrigraphs254493
! Node: Debugging Options291080
! Node: Optimize Options309956
! Ref: Type-punning373658
! Node: Instrumentation Options465396
! Node: Preprocessor Options507561
! Ref: dashMF512408
! Ref: fdollars-in-identifiers516987
! Node: Assembler Options529237
! Node: Link Options529928
! Ref: Link Options-Footnote-1544243
! Node: Directory Options544579
! Node: Code Gen Options552982
! Node: Developer Options581647
! Node: Submodel Options620559
! Node: AArch64 Options622317
! Ref: aarch64-feature-modifiers632822
! Node: Adapteva Epiphany Options635213
! Node: ARC Options641160
! Node: ARM Options662077
! Node: AVR Options697033
! Node: Blackfin Options721625
! Node: C6X Options729519
! Node: CRIS Options731062
! Node: CR16 Options734801
! Node: Darwin Options735712
! Node: DEC Alpha Options743152
! Node: FR30 Options754768
! Node: FT32 Options755333
! Node: FRV Options756279
! Node: GNU/Linux Options763043
! Node: H8/300 Options764424
! Node: HPPA Options765876
! Node: IA-64 Options775408
! Node: LM32 Options783536
! Node: M32C Options784059
! Node: M32R/D Options785332
! Node: M680x0 Options788877
! Node: MCore Options803029
! Node: MeP Options804531
! Node: MicroBlaze Options808491
! Node: MIPS Options811277
! Node: MMIX Options846729
! Node: MN10300 Options849206
! Node: Moxie Options851747
! Node: MSP430 Options852234
! Node: NDS32 Options856938
! Node: Nios II Options859108
! Node: Nvidia PTX Options871271
! Node: PDP-11 Options873533
! Node: picoChip Options875230
! Node: PowerPC Options877368
! Node: PowerPC SPE Options877596
! Node: RISC-V Options906102
! Node: RL78 Options910486
! Node: RS/6000 and PowerPC Options914261
! Node: RX Options956242
! Node: S/390 and zSeries Options964844
! Node: Score Options975309
! Node: SH Options976158
! Node: Solaris 2 Options991300
! Node: SPARC Options992538
! Node: SPU Options1008159
! Node: System V Options1013098
! Node: TILE-Gx Options1013924
! Node: TILEPro Options1014942
! Node: V850 Options1015446
! Node: VAX Options1022133
! Node: Visium Options1022671
! Node: VMS Options1024979
! Node: VxWorks Options1025795
! Node: x86 Options1026947
! Node: x86 Windows Options1085687
! Node: Xstormy16 Options1088492
! Node: Xtensa Options1088786
! Node: zSeries Options1093935
! Node: Spec Files1094131
! Node: Environment Variables1116289
! Node: Precompiled Headers1125015
! Node: C Implementation1131021
! Node: Translation implementation1132711
! Node: Environment implementation1133302
! Node: Identifiers implementation1133856
! Node: Characters implementation1134942
! Node: Integers implementation1138592
! Node: Floating point implementation1140641
! Node: Arrays and pointers implementation1143704
! Ref: Arrays and pointers implementation-Footnote-11145164
! Node: Hints implementation1145290
! Node: Structures unions enumerations and bit-fields implementation1146785
! Node: Qualifiers implementation1149009
! Node: Declarators implementation1150789
! Node: Statements implementation1151130
! Node: Preprocessing directives implementation1151456
! Node: Library functions implementation1153777
! Node: Architecture implementation1154426
! Node: Locale-specific behavior implementation1156071
! Node: C++ Implementation1156376
! Node: Conditionally-supported behavior1157659
! Node: Exception handling1158276
! Node: C Extensions1158743
! Node: Statement Exprs1163944
! Node: Local Labels1168421
! Node: Labels as Values1171394
! Ref: Labels as Values-Footnote-11173921
! Node: Nested Functions1174106
! Node: Constructing Calls1178064
! Node: Typeof1182781
! Node: Conditionals1186710
! Node: __int1281187599
! Node: Long Long1188124
! Node: Complex1189600
! Node: Floating Types1192368
! Node: Half-Precision1195835
! Node: Decimal Float1198246
! Node: Hex Floats1200100
! Node: Fixed-Point1201137
! Node: Named Address Spaces1204395
! Ref: AVR Named Address Spaces1205081
! Node: Zero Length1212104
! Node: Empty Structures1215144
! Node: Variable Length1215550
! Node: Variadic Macros1218268
! Node: Escaped Newlines1220646
! Node: Subscripting1221507
! Node: Pointer Arith1222232
! Node: Pointers to Arrays1222806
! Node: Initializers1223551
! Node: Compound Literals1224052
! Node: Designated Inits1227619
! Node: Case Ranges1231355
! Node: Cast to Union1232036
! Node: Mixed Declarations1233162
! Node: Function Attributes1233672
! Node: Common Function Attributes1237060
! Node: AArch64 Function Attributes1288569
! Node: ARC Function Attributes1293975
! Node: ARM Function Attributes1296297
! Node: AVR Function Attributes1301102
! Node: Blackfin Function Attributes1305637
! Node: CR16 Function Attributes1308135
! Node: Epiphany Function Attributes1308662
! Node: H8/300 Function Attributes1311414
! Node: IA-64 Function Attributes1312610
! Node: M32C Function Attributes1313652
! Node: M32R/D Function Attributes1315990
! Node: m68k Function Attributes1317464
! Node: MCORE Function Attributes1318408
! Node: MeP Function Attributes1319219
! Node: MicroBlaze Function Attributes1320520
! Node: Microsoft Windows Function Attributes1322027
! Node: MIPS Function Attributes1326596
! Node: MSP430 Function Attributes1332214
! Node: NDS32 Function Attributes1336062
! Node: Nios II Function Attributes1338486
! Node: Nvidia PTX Function Attributes1339783
! Node: PowerPC Function Attributes1340398
! Node: RISC-V Function Attributes1347453
! Node: RL78 Function Attributes1348272
! Node: RX Function Attributes1349511
! Node: S/390 Function Attributes1352059
! Node: SH Function Attributes1353887
! Node: SPU Function Attributes1357308
! Node: Symbian OS Function Attributes1358116
! Node: V850 Function Attributes1358453
! Node: Visium Function Attributes1358998
! Node: x86 Function Attributes1359526
! Node: Xstormy16 Function Attributes1380749
! Node: Variable Attributes1381256
! Node: Common Variable Attributes1382745
! Node: ARC Variable Attributes1396513
! Node: AVR Variable Attributes1396895
! Node: Blackfin Variable Attributes1402057
! Node: H8/300 Variable Attributes1402915
! Node: IA-64 Variable Attributes1403988
! Node: M32R/D Variable Attributes1404739
! Node: MeP Variable Attributes1405522
! Node: Microsoft Windows Variable Attributes1407615
! Node: MSP430 Variable Attributes1410068
! Node: Nvidia PTX Variable Attributes1411269
! Node: PowerPC Variable Attributes1411886
! Node: RL78 Variable Attributes1412443
! Node: SPU Variable Attributes1412861
! Node: V850 Variable Attributes1413226
! Node: x86 Variable Attributes1413858
! Node: Xstormy16 Variable Attributes1414914
! Node: Type Attributes1415484
! Node: Common Type Attributes1416828
! Node: ARC Type Attributes1433677
! Node: ARM Type Attributes1434149
! Node: MeP Type Attributes1434931
! Node: PowerPC Type Attributes1435333
! Node: SPU Type Attributes1436322
! Node: x86 Type Attributes1436741
! Node: Label Attributes1437729
! Node: Enumerator Attributes1439662
! Node: Statement Attributes1440981
! Node: Attribute Syntax1442464
! Node: Function Prototypes1453722
! Node: C++ Comments1455502
! Node: Dollar Signs1456021
! Node: Character Escapes1456486
! Node: Alignment1456770
! Node: Inline1458142
! Node: Volatiles1462959
! Node: Using Assembly Language with C1465858
! Node: Basic Asm1467095
! Node: Extended Asm1472455
! Ref: Volatile1476542
! Ref: AssemblerTemplate1480627
! Ref: OutputOperands1484865
! Ref: FlagOutputOperands1491816
! Ref: InputOperands1493845
! Ref: Clobbers and Scratch Registers1498113
! Ref: GotoLabels1506269
! Ref: x86Operandmodifiers1508404
! Ref: x86floatingpointasmoperands1510605
! Node: Constraints1513934
! Node: Simple Constraints1515040
! Node: Multi-Alternative1522354
! Node: Modifiers1524029
! Node: Machine Constraints1526827
! Node: Asm Labels1586627
! Node: Explicit Register Variables1588247
! Ref: Explicit Reg Vars1588461
! Node: Global Register Variables1589070
! Ref: Global Reg Vars1589278
! Node: Local Register Variables1593130
! Ref: Local Reg Vars1593350
! Node: Size of an asm1596657
! Node: Alternate Keywords1598135
! Node: Incomplete Enums1599634
! Node: Function Names1600391
! Node: Return Address1602289
! Node: Vector Extensions1606230
! Node: Offsetof1613525
! Node: __sync Builtins1614358
! Node: __atomic Builtins1620799
! Node: Integer Overflow Builtins1634280
! Node: x86 specific memory model extensions for transactional memory1640756
! Node: Object Size Checking1642022
! Node: Pointer Bounds Checker builtins1648061
! Node: Other Builtins1654063
! Node: Target Builtins1695204
! Node: AArch64 Built-in Functions1696862
! Node: Alpha Built-in Functions1697317
! Node: Altera Nios II Built-in Functions1700365
! Node: ARC Built-in Functions1704734
! Node: ARC SIMD Built-in Functions1709946
! Node: ARM iWMMXt Built-in Functions1718842
! Node: ARM C Language Extensions (ACLE)1725838
! Node: ARM Floating Point Status and Control Intrinsics1727177
! Node: ARM ARMv8-M Security Extensions1727662
! Node: AVR Built-in Functions1729007
! Node: Blackfin Built-in Functions1732768
! Node: FR-V Built-in Functions1733387
! Node: Argument Types1734255
! Node: Directly-mapped Integer Functions1736009
! Node: Directly-mapped Media Functions1737093
! Node: Raw read/write Functions1745299
! Node: Other Built-in Functions1746207
! Node: MIPS DSP Built-in Functions1747393
! Node: MIPS Paired-Single Support1759890
! Node: MIPS Loongson Built-in Functions1761389
! Node: Paired-Single Arithmetic1767911
! Node: Paired-Single Built-in Functions1768859
! Node: MIPS-3D Built-in Functions1771526
! Node: MIPS SIMD Architecture (MSA) Support1776904
! Node: MIPS SIMD Architecture Built-in Functions1779744
! Node: Other MIPS Built-in Functions1806574
! Node: MSP430 Built-in Functions1807583
! Node: NDS32 Built-in Functions1808984
! Node: picoChip Built-in Functions1810277
! Node: PowerPC Built-in Functions1811620
! Node: PowerPC AltiVec/VSX Built-in Functions1846101
! Node: PowerPC Hardware Transactional Memory Built-in Functions2015683
! Node: PowerPC Atomic Memory Operation Functions2024194
! Node: RX Built-in Functions2026729
! Node: S/390 System z Built-in Functions2030747
! Node: SH Built-in Functions2035977
! Node: SPARC VIS Built-in Functions2037705
! Node: SPU Built-in Functions2046234
! Node: TI C6X Built-in Functions2047951
! Node: TILE-Gx Built-in Functions2048976
! Node: TILEPro Built-in Functions2050095
! Node: x86 Built-in Functions2051195
! Node: x86 transactional memory intrinsics2112467
! Node: x86 control-flow protection intrinsics2115734
! Node: Target Format Checks2117505
! Node: Solaris Format Checks2117937
! Node: Darwin Format Checks2118363
! Node: Pragmas2119181
! Node: AArch64 Pragmas2119954
! Node: ARM Pragmas2120411
! Node: M32C Pragmas2121038
! Node: MeP Pragmas2122110
! Node: RS/6000 and PowerPC Pragmas2124178
! Node: S/390 Pragmas2124918
! Node: Darwin Pragmas2125484
! Node: Solaris Pragmas2126537
! Node: Symbol-Renaming Pragmas2127701
! Node: Structure-Layout Pragmas2129317
! Node: Weak Pragmas2131597
! Node: Diagnostic Pragmas2132332
! Node: Visibility Pragmas2135441
! Node: Push/Pop Macro Pragmas2136126
! Node: Function Specific Option Pragmas2137099
! Node: Loop-Specific Pragmas2138968
! Node: Unnamed Fields2140568
! Node: Thread-Local2142765
! Node: C99 Thread-Local Edits2144871
! Node: C++98 Thread-Local Edits2146869
! Node: Binary constants2150314
! Node: C++ Extensions2150985
! Node: C++ Volatiles2152615
! Node: Restricted Pointers2154963
! Node: Vague Linkage2156554
! Node: C++ Interface2160177
! Ref: C++ Interface-Footnote-12163974
! Node: Template Instantiation2164112
! Node: Bound member functions2171595
! Node: C++ Attributes2173127
! Node: Function Multiversioning2177199
! Node: Type Traits2179006
! Node: C++ Concepts2185771
! Node: Deprecated Features2187270
! Node: Backwards Compatibility2189361
! Node: Objective-C2191195
! Node: GNU Objective-C runtime API2191802
! Node: Modern GNU Objective-C runtime API2192809
! Node: Traditional GNU Objective-C runtime API2195245
! Node: Executing code before main2195972
! Node: What you can and what you cannot do in +load2198716
! Node: Type encoding2201086
! Node: Legacy type encoding2206227
! Node: @encode2207317
! Node: Method signatures2207862
! Node: Garbage Collection2209854
! Node: Constant string objects2212544
! Node: compatibility_alias2215053
! Node: Exceptions2215778
! Node: Synchronization2218488
! Node: Fast enumeration2219672
! Node: Using fast enumeration2219984
! Node: c99-like fast enumeration syntax2221195
! Node: Fast enumeration details2221898
! Node: Fast enumeration protocol2224238
! Node: Messaging with the GNU Objective-C runtime2227390
! Node: Dynamically registering methods2228762
! Node: Forwarding hook2230453
! Node: Compatibility2233494
! Node: Gcov2240050
! Node: Gcov Intro2240585
! Node: Invoking Gcov2243303
! Node: Gcov and Optimization2264248
! Node: Gcov Data Files2267617
! Node: Cross-profiling2269034
! Node: Gcov-tool2270888
! Node: Gcov-tool Intro2271313
! Node: Invoking Gcov-tool2273283
! Node: Gcov-dump2275861
! Node: Gcov-dump Intro2276183
! Node: Invoking Gcov-dump2276450
! Node: Trouble2277119
! Node: Actual Bugs2278537
! Node: Interoperation2278984
! Node: Incompatibilities2285875
! Node: Fixed Headers2294027
! Node: Standard Libraries2295685
! Node: Disappointments2297057
! Node: C++ Misunderstandings2301416
! Node: Static Definitions2302227
! Node: Name lookup2303280
! Ref: Name lookup-Footnote-12308061
! Node: Temporaries2308250
! Node: Copy Assignment2310226
! Node: Non-bugs2312033
! Node: Warnings and Errors2322539
! Node: Bugs2324301
! Node: Bug Criteria2324768
! Node: Bug Reporting2326978
! Node: Service2327196
! Node: Contributing2328015
! Node: Funding2328756
! Node: GNU Project2331246
! Node: Copying2331892
! Node: GNU Free Documentation License2369401
! Node: Contributors2394519
! Node: Option Index2435454
! Node: Keyword Index2700228
  
  End Tag Table
diff -Nrcpad gcc-8.3.0/gcc/doc/gccinstall.info gcc-8.4.0/gcc/doc/gccinstall.info
*** gcc-8.3.0/gcc/doc/gccinstall.info	Fri Feb 22 14:35:27 2019
--- gcc-8.4.0/gcc/doc/gccinstall.info	Wed Mar  4 08:45:24 2020
*************** Perl version between 5.6.1 and 5.6.24
*** 210,217 ****
       Necessary when regenerating 'Makefile' dependencies in libiberty.
       Necessary when regenerating 'libiberty/functions.texi'.  Necessary
       when generating manpages from Texinfo manuals.  Used by various
!      scripts to generate some files included in SVN (mainly
!      Unicode-related and rarely changing) from source tables.
  
       Used by 'automake'.
  
--- 210,217 ----
       Necessary when regenerating 'Makefile' dependencies in libiberty.
       Necessary when regenerating 'libiberty/functions.texi'.  Necessary
       when generating manpages from Texinfo manuals.  Used by various
!      scripts to generate some files included in the source repository
!      (mainly Unicode-related and rarely changing) from source tables.
  
       Used by 'automake'.
  
*************** Flex version 2.5.4 (or later)
*** 328,335 ****
       Necessary when modifying '*.l' files.
  
       Necessary to build GCC during development because the generated
!      output files are not included in the SVN repository.  They are
!      included in releases.
  
  Texinfo version 4.7 (or later)
  
--- 328,335 ----
       Necessary when modifying '*.l' files.
  
       Necessary to build GCC during development because the generated
!      output files are not included in the version-controlled source
!      repository.  They are included in releases.
  
  Texinfo version 4.7 (or later)
  
*************** Texinfo version 4.7 (or later)
*** 341,348 ****
       is required for 'make pdf'.
  
       Necessary to build GCC documentation during development because the
!      generated output files are not included in the SVN repository.
!      They are included in releases.
  
  TeX (any working version)
  
--- 341,348 ----
       is required for 'make pdf'.
  
       Necessary to build GCC documentation during development because the
!      generated output files are not included in the repository.  They
!      are included in releases.
  
  TeX (any working version)
  
*************** Sphinx version 1.0 (or later)
*** 355,365 ****
       Necessary to regenerate 'jit/docs/_build/texinfo' from the '.rst'
       files in the directories below 'jit/docs'.
  
! SVN (any version)
  SSH (any version)
  
!      Necessary to access the SVN repository.  Public releases and weekly
!      snapshots of the development sources are also available via FTP.
  
  GNU diffutils version 2.7 (or later)
  
--- 355,366 ----
       Necessary to regenerate 'jit/docs/_build/texinfo' from the '.rst'
       files in the directories below 'jit/docs'.
  
! git (any version)
  SSH (any version)
  
!      Necessary to access the source repository.  Public releases and
!      weekly snapshots of the development sources are also available via
!      HTTPS.
  
  GNU diffutils version 2.7 (or later)
  
*************** File: gccinstall.info,  Node: Downloadin
*** 376,383 ****
  3 Downloading GCC
  *****************
  
! GCC is distributed via SVN and FTP tarballs compressed with 'gzip' or
! 'bzip2'.
  
     Please refer to the releases web page for information on how to
  obtain GCC.
--- 377,384 ----
  3 Downloading GCC
  *****************
  
! GCC is distributed via git and via HTTPS as tarballs compressed with
! 'gzip' or 'bzip2'.
  
     Please refer to the releases web page for information on how to
  obtain GCC.
*************** native and cross targets.
*** 419,427 ****
     We use SRCDIR to refer to the toplevel source directory for GCC; we
  use OBJDIR to refer to the toplevel build/object directory.
  
!    If you obtained the sources via SVN, SRCDIR must refer to the top
! 'gcc' directory, the one where the 'MAINTAINERS' file can be found, and
! not its 'gcc' subdirectory, otherwise the build will fail.
  
     If either SRCDIR or OBJDIR is located on an automounted NFS file
  system, the shell's built-in 'pwd' command will return temporary
--- 420,429 ----
     We use SRCDIR to refer to the toplevel source directory for GCC; we
  use OBJDIR to refer to the toplevel build/object directory.
  
!    If you obtained the sources by cloning the repository, SRCDIR must
! refer to the top 'gcc' directory, the one where the 'MAINTAINERS' file
! can be found, and not its 'gcc' subdirectory, otherwise the build will
! fail.
  
     If either SRCDIR or OBJDIR is located on an automounted NFS file
  system, the shell's built-in 'pwd' command will return temporary
*************** option.
*** 1234,1243 ****
  '--enable-generated-files-in-srcdir'
       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 SVN development tree.  When building GCC
!      from that development tree, or from one of our snapshots, those
!      generated files are placed in your build directory, which allows
!      for the source to be in a readonly directory.
  
       If you configure with '--enable-generated-files-in-srcdir' then
       those generated files will go into the source directory.  This is
--- 1236,1246 ----
  '--enable-generated-files-in-srcdir'
       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, or from one of our
!      snapshots, those generated files are placed in your build
!      directory, which allows for the source to be in a readonly
!      directory.
  
       If you configure with '--enable-generated-files-in-srcdir' then
       those generated files will go into the source directory.  This is
*************** option.
*** 1490,1529 ****
       '-Werror' are controlled by the Makefiles.
  
  '--enable-checking'
  '--enable-checking=LIST'
!      When you specify this option, the compiler is built to perform
!      internal consistency checks of the requested complexity.  This does
!      not change the generated code, but adds error checking within the
!      compiler.  This will slow down the compiler and may only work
!      properly if you are building the compiler with GCC.  This is
!      'yes,extra' by default when building from SVN or snapshots, but
!      'release' for releases.  The default for building the stage1
!      compiler is 'yes'.  More control over the checks may be had by
!      specifying LIST.  The categories of checks available are 'yes'
!      (most common checks 'assert,misc,tree,gc,rtlflag,runtime'), 'no'
       (no checks at all), 'all' (all but 'valgrind'), 'release' (cheapest
!      checks 'assert,runtime') or 'none' (same as 'no').  Individual
!      checks can be enabled with these flags 'assert', 'df', 'fold',
!      'gc', 'gcac', 'misc', 'rtl', 'rtlflag', 'runtime', 'tree', 'extra'
!      and 'valgrind'.  'extra' adds for 'misc' checking extra checks that
!      might affect code generation and should therefore not differ
!      between stage1 and later stages.
  
       The 'valgrind' check requires the external 'valgrind' simulator,
!      available from <http://valgrind.org/>.  The 'df', 'rtl', 'gcac' and
!      'valgrind' checks are very expensive.  To disable all checking,
!      '--disable-checking' or '--enable-checking=none' must be explicitly
!      requested.  Disabling assertions will make the compiler and runtime
!      slightly faster but increase the risk of undetected internal errors
!      causing wrong code to be generated.
  
  '--disable-stage1-checking'
  '--enable-stage1-checking'
  '--enable-stage1-checking=LIST'
!      If no '--enable-checking' option is specified the stage1 compiler
!      will be built with 'yes' checking enabled, otherwise the stage1
!      checking flags are the same as specified by '--enable-checking'.
!      To build the stage1 compiler with different checking options use
       '--enable-stage1-checking'.  The list of checking options is the
       same as for '--enable-checking'.  If your system is too slow or too
       small to bootstrap a released compiler with checking for stage1
--- 1493,1545 ----
       '-Werror' are controlled by the Makefiles.
  
  '--enable-checking'
+ '--disable-checking'
  '--enable-checking=LIST'
!      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 properly if you are building the compiler with
!      GCC.
! 
!      When the option is not specified, the active set of checks depends
!      on context.  Namely, bootstrap stage 1 defaults to
!      '--enable-checking=yes', builds from release branches or release
!      archives default to '--enable-checking=release', and otherwise
!      '--enable-checking=yes,extra' is used.  When the option is
!      specified without a LIST, the result is the same as
!      '--enable-checking=yes'.  Likewise, '--disable-checking' is
!      equivalent to '--enable-checking=no'.
! 
!      The categories of checks available in LIST are 'yes' (most common
!      checks 'assert,misc,gc,gimple,rtlflag,runtime,tree,types'), 'no'
       (no checks at all), 'all' (all but 'valgrind'), 'release' (cheapest
!      checks 'assert,runtime') or 'none' (same as 'no').  'release'
!      checks are always on and to disable them '--disable-checking' or
!      '--enable-checking=no[,<other checks>]' must be explicitly
!      requested.  Disabling assertions makes the compiler and runtime
!      slightly faster but increases the risk of undetected internal
!      errors causing wrong code to be generated.
! 
!      Individual checks can be enabled with these flags: 'assert', 'df',
!      'extra', 'fold', 'gc', 'gcac', 'gimple', 'misc', 'rtl', 'rtlflag',
!      'runtime', 'tree', 'types' and 'valgrind'.  'extra' extends 'misc'
!      checking with extra checks that might affect code generation and
!      should therefore not differ between stage1 and later stages in
!      bootstrap.
  
       The 'valgrind' check requires the external 'valgrind' simulator,
!      available from <http://valgrind.org/>.  The 'rtl' checks are
!      expensive and the 'df', 'gcac' and 'valgrind' checks are very
!      expensive.
  
  '--disable-stage1-checking'
  '--enable-stage1-checking'
  '--enable-stage1-checking=LIST'
!      This option affects only bootstrap build.  If no
!      '--enable-checking' option is specified the stage1 compiler is
!      built with 'yes' checking enabled, otherwise the stage1 checking
!      flags are the same as specified by '--enable-checking'.  To build
!      the stage1 compiler with different checking options use
       '--enable-stage1-checking'.  The list of checking options is the
       same as for '--enable-checking'.  If your system is too slow or too
       small to bootstrap a released compiler with checking for stage1
*************** occur, this could be the cause.
*** 2047,2063 ****
  
     The solution is not to use such a directory for building GCC.
  
!    Similarly, when building from SVN or snapshots, or if you modify
! '*.l' files, you need the Flex lexical analyzer generator installed.  If
! you do not modify '*.l' files, releases contain the Flex-generated files
! and you do not need Flex installed to build them.  There is still one
! Flex-based lexical analyzer (part of the build machinery, not of GCC
! itself) that is used even if you only build the C front end.
  
!    When building from SVN or snapshots, or if you modify Texinfo
! documentation, you need version 4.7 or later of Texinfo installed if you
! want Info documentation to be regenerated.  Releases contain Info
! documentation pre-built for the unmodified documentation in the release.
  
  5.1 Building a native compiler
  ==============================
--- 2063,2081 ----
  
     The solution is not to use such a directory for building GCC.
  
!    Similarly, when building from the source repository or snapshots, or
! if you modify '*.l' files, you need the Flex lexical analyzer generator
! installed.  If you do not modify '*.l' files, releases contain the
! Flex-generated files and you do not need Flex installed to build them.
! There is still one Flex-based lexical analyzer (part of the build
! machinery, not of GCC itself) that is used even if you only build the C
! front end.
  
!    When building from the source repository or snapshots, or if you
! modify Texinfo documentation, you need version 4.7 or later of Texinfo
! installed if you want Info documentation to be regenerated.  Releases
! contain Info documentation pre-built for the unmodified documentation in
! the release.
  
  5.1 Building a native compiler
  ==============================
*************** Concept Index
*** 4583,4589 ****
  * Menu:
  
  * Binaries:                              Binaries.           (line    6)
! * build_configargs:                      Configuration.      (line 1553)
  * Configuration:                         Configuration.      (line    6)
  * configurations supported by GCC:       Configurations.     (line    6)
  * Downloading GCC:                       Downloading the source.
--- 4601,4607 ----
  * Menu:
  
  * Binaries:                              Binaries.           (line    6)
! * build_configargs:                      Configuration.      (line 1568)
  * Configuration:                         Configuration.      (line    6)
  * configurations supported by GCC:       Configurations.     (line    6)
  * Downloading GCC:                       Downloading the source.
*************** Concept Index
*** 4593,4599 ****
  * FDL, GNU Free Documentation License:   GNU Free Documentation License.
                                                               (line    6)
  * Host specific installation:            Specific.           (line    6)
! * host_configargs:                       Configuration.      (line 1557)
  * Installing GCC: Binaries:              Binaries.           (line    6)
  * Installing GCC: Building:              Building.           (line    6)
  * Installing GCC: Configuration:         Configuration.      (line    6)
--- 4611,4617 ----
  * FDL, GNU Free Documentation License:   GNU Free Documentation License.
                                                               (line    6)
  * Host specific installation:            Specific.           (line    6)
! * host_configargs:                       Configuration.      (line 1572)
  * Installing GCC: Binaries:              Binaries.           (line    6)
  * Installing GCC: Building:              Building.           (line    6)
  * Installing GCC: Configuration:         Configuration.      (line    6)
*************** Concept Index
*** 4603,4609 ****
  * Specific installation notes:           Specific.           (line    6)
  * Target specific installation:          Specific.           (line    6)
  * Target specific installation notes:    Specific.           (line    6)
! * target_configargs:                     Configuration.      (line 1561)
  * Testing:                               Testing.            (line    6)
  * Testsuite:                             Testing.            (line    6)
  
--- 4621,4627 ----
  * Specific installation notes:           Specific.           (line    6)
  * Target specific installation:          Specific.           (line    6)
  * Target specific installation notes:    Specific.           (line    6)
! * target_configargs:                     Configuration.      (line 1576)
  * Testing:                               Testing.            (line    6)
  * Testsuite:                             Testing.            (line    6)
  
*************** Tag Table:
*** 4613,4713 ****
  Node: Top1696
  Node: Installing GCC2254
  Node: Prerequisites3888
! Node: Downloading the source14444
! Node: Configuration16106
! Ref: with-gnu-as31706
! Ref: with-as32601
! Ref: with-gnu-ld34014
! Ref: WithAixSoname54473
! Ref: AixLdCommand55134
! Node: Building90171
! Node: Testing106502
! Node: Final install114374
! Node: Binaries119674
! Node: Specific120801
! Ref: aarch64-x-x121308
! Ref: alpha-x-x122740
! Ref: amd64-x-solaris210123149
! Ref: arc-x-elf32123252
! Ref: arc-linux-uclibc123428
! Ref: arm-x-eabi123569
! Ref: avr123822
! Ref: bfin124403
! Ref: cr16124645
! Ref: cris125061
! Ref: dos125759
! Ref: epiphany-x-elf126082
! Ref: x-x-freebsd126187
! Ref: ft32-x-elf127987
! Ref: h8300-hms128085
! Ref: hppa-hp-hpux128437
! Ref: hppa-hp-hpux10130809
! Ref: hppa-hp-hpux11131222
! Ref: x-x-linux-gnu136624
! Ref: ix86-x-linux136817
! Ref: ix86-x-solaris210137130
! Ref: ia64-x-linux138475
! Ref: ia64-x-hpux139245
! Ref: x-ibm-aix139800
! Ref: TransferAixShobj143462
! Ref: iq2000-x-elf147272
! Ref: lm32-x-elf147412
! Ref: lm32-x-uclinux147516
! Ref: m32c-x-elf147644
! Ref: m32r-x-elf147746
! Ref: m68k-x-x147848
! Ref: m68k-x-uclinux148886
! Ref: microblaze-x-elf149131
! Ref: mips-x-x149250
! Ref: moxie-x-elf151160
! Ref: msp430-x-elf151207
! Ref: nds32le-x-elf151310
! Ref: nds32be-x-elf151382
! Ref: nvptx-x-none151451
! Ref: powerpc-x-x152014
! Ref: powerpc-x-darwin152205
! Ref: powerpc-x-elf152699
! Ref: powerpc-x-linux-gnu152784
! Ref: powerpc-x-netbsd152879
! Ref: powerpc-x-eabisim152967
! Ref: powerpc-x-eabi153093
! Ref: powerpcle-x-elf153169
! Ref: powerpcle-x-eabisim153261
! Ref: powerpcle-x-eabi153394
! Ref: rl78-x-elf153477
! Ref: riscv32-x-elf153583
! Ref: riscv32-x-linux153793
! Ref: riscv64-x-elf153971
! Ref: riscv64-x-linux154181
! Ref: rx-x-elf154359
! Ref: s390-x-linux154405
! Ref: s390x-x-linux154477
! Ref: s390x-ibm-tpf154564
! Ref: x-x-solaris2154695
! Ref: sparc-x-x158562
! Ref: sparc-sun-solaris2159064
! Ref: sparc-sun-solaris210160203
! Ref: sparc-x-linux160578
! Ref: sparc64-x-solaris2160609
! Ref: sparcv9-x-solaris2160942
! Ref: c6x-x-x161029
! Ref: tilegx-*-linux161121
! Ref: tilegxbe-*-linux161263
! Ref: tilepro-*-linux161406
! Ref: visium-x-elf161527
! Ref: x-x-vxworks161635
! Ref: x86-64-x-x163158
! Ref: x86-64-x-solaris210163486
! Ref: xtensa-x-elf164150
! Ref: xtensa-x-linux164821
! Ref: windows165162
! Ref: x-x-cygwin167003
! Ref: x-x-mingw32167556
! Ref: older167782
! Ref: elf169899
! Node: Old170157
! Node: Configurations173290
! Node: GNU Free Documentation License176828
! Node: Concept Index201956
  
  End Tag Table
--- 4631,4731 ----
  Node: Top1696
  Node: Installing GCC2254
  Node: Prerequisites3888
! Node: Downloading the source14491
! Node: Configuration16162
! Ref: with-gnu-as31780
! Ref: with-as32675
! Ref: with-gnu-ld34088
! Ref: WithAixSoname54559
! Ref: AixLdCommand55220
! Node: Building90687
! Node: Testing107053
! Node: Final install114925
! Node: Binaries120225
! Node: Specific121352
! Ref: aarch64-x-x121859
! Ref: alpha-x-x123291
! Ref: amd64-x-solaris210123700
! Ref: arc-x-elf32123803
! Ref: arc-linux-uclibc123979
! Ref: arm-x-eabi124120
! Ref: avr124373
! Ref: bfin124954
! Ref: cr16125196
! Ref: cris125612
! Ref: dos126310
! Ref: epiphany-x-elf126633
! Ref: x-x-freebsd126738
! Ref: ft32-x-elf128538
! Ref: h8300-hms128636
! Ref: hppa-hp-hpux128988
! Ref: hppa-hp-hpux10131360
! Ref: hppa-hp-hpux11131773
! Ref: x-x-linux-gnu137175
! Ref: ix86-x-linux137368
! Ref: ix86-x-solaris210137681
! Ref: ia64-x-linux139026
! Ref: ia64-x-hpux139796
! Ref: x-ibm-aix140351
! Ref: TransferAixShobj144013
! Ref: iq2000-x-elf147823
! Ref: lm32-x-elf147963
! Ref: lm32-x-uclinux148067
! Ref: m32c-x-elf148195
! Ref: m32r-x-elf148297
! Ref: m68k-x-x148399
! Ref: m68k-x-uclinux149437
! Ref: microblaze-x-elf149682
! Ref: mips-x-x149801
! Ref: moxie-x-elf151711
! Ref: msp430-x-elf151758
! Ref: nds32le-x-elf151861
! Ref: nds32be-x-elf151933
! Ref: nvptx-x-none152002
! Ref: powerpc-x-x152565
! Ref: powerpc-x-darwin152756
! Ref: powerpc-x-elf153250
! Ref: powerpc-x-linux-gnu153335
! Ref: powerpc-x-netbsd153430
! Ref: powerpc-x-eabisim153518
! Ref: powerpc-x-eabi153644
! Ref: powerpcle-x-elf153720
! Ref: powerpcle-x-eabisim153812
! Ref: powerpcle-x-eabi153945
! Ref: rl78-x-elf154028
! Ref: riscv32-x-elf154134
! Ref: riscv32-x-linux154344
! Ref: riscv64-x-elf154522
! Ref: riscv64-x-linux154732
! Ref: rx-x-elf154910
! Ref: s390-x-linux154956
! Ref: s390x-x-linux155028
! Ref: s390x-ibm-tpf155115
! Ref: x-x-solaris2155246
! Ref: sparc-x-x159113
! Ref: sparc-sun-solaris2159615
! Ref: sparc-sun-solaris210160754
! Ref: sparc-x-linux161129
! Ref: sparc64-x-solaris2161160
! Ref: sparcv9-x-solaris2161493
! Ref: c6x-x-x161580
! Ref: tilegx-*-linux161672
! Ref: tilegxbe-*-linux161814
! Ref: tilepro-*-linux161957
! Ref: visium-x-elf162078
! Ref: x-x-vxworks162186
! Ref: x86-64-x-x163709
! Ref: x86-64-x-solaris210164037
! Ref: xtensa-x-elf164701
! Ref: xtensa-x-linux165372
! Ref: windows165713
! Ref: x-x-cygwin167554
! Ref: x-x-mingw32168107
! Ref: older168333
! Ref: elf170450
! Node: Old170708
! Node: Configurations173841
! Node: GNU Free Documentation License177379
! Node: Concept Index202507
  
  End Tag Table
diff -Nrcpad gcc-8.3.0/gcc/doc/gccint.info gcc-8.4.0/gcc/doc/gccint.info
*** gcc-8.3.0/gcc/doc/gccint.info	Fri Feb 22 14:35:37 2019
--- gcc-8.4.0/gcc/doc/gccint.info	Wed Mar  4 08:45:35 2020
*************** 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 8.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 8.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: Contributing,
*** 118,125 ****
  *********************************
  
  If you would like to help pretest GCC releases to assure they work well,
! current development sources are available by SVN (see
! <http://gcc.gnu.org/svn.html>).  Source and binary snapshots are also
  available for FTP; see <http://gcc.gnu.org/snapshots.html>.
  
   If you would like to work on improvements to GCC, please read the
--- 118,125 ----
  *********************************
  
  If you would like to help pretest GCC releases to assure they work well,
! current development sources are available via Git (see
! <http://gcc.gnu.org/git.html>).  Source and binary snapshots are also
  available for FTP; see <http://gcc.gnu.org/snapshots.html>.
  
   If you would like to work on improvements to GCC, please read the
*************** _RL78--'config/rl78/constraints.md'_
*** 23293,23299 ****
  _RISC-V--'config/riscv/constraints.md'_
  
       'f'
!           A floating-point register (if availiable).
  
       'I'
            An I-type 12-bit signed immediate.
--- 23293,23299 ----
  _RISC-V--'config/riscv/constraints.md'_
  
       'f'
!           A floating-point register (if available).
  
       'I'
            An I-type 12-bit signed immediate.
*************** Concept Index
*** 53937,54196 ****
  Tag Table:
  Node: Top1789
  Node: Contributing5024
! Node: Portability5753
! Node: Interface7541
! Node: Libgcc10582
! Node: Integer library routines12409
! Node: Soft float library routines19377
! Node: Decimal float library routines31315
! Node: Fixed-point fractional library routines47073
! Node: Exception handling routines147469
! Node: Miscellaneous routines148576
! Node: Languages150696
! Node: Source Tree152243
! Node: Configure Terms152825
! Node: Top Level155781
! Node: gcc Directory159211
! Node: Subdirectories160163
! Node: Configuration162331
! Node: Config Fragments163051
! Node: System Config164276
! Node: Configuration Files165212
! Node: Build167828
! Node: Makefile168240
! Ref: Makefile-Footnote-1175015
! Ref: Makefile-Footnote-2175162
! Node: Library Files175236
! Node: Headers175798
! Node: Documentation177881
! Node: Texinfo Manuals178740
! Node: Man Page Generation181069
! Node: Miscellaneous Docs182982
! Node: Front End184369
! Node: Front End Directory188043
! Node: Front End Config189359
! Node: Front End Makefile192195
! Node: Back End195963
! Node: Testsuites200849
! Node: Test Idioms201838
! Node: Test Directives205236
! Node: Directives205763
! Node: Selectors216529
! Node: Effective-Target Keywords217885
! Ref: arm_fp_ok228449
! Ref: arm_neon_ok229531
! Ref: arm_neon_ok_no_float_abi229700
! Ref: arm_neonv2_ok229867
! Ref: arm_fp16_ok230034
! Ref: arm_neon_fp16_ok230376
! Ref: arm_vfp3_ok231252
! Ref: arm_v8_1a_neon_ok231678
! Ref: arm_v8_2a_fp16_scalar_ok232106
! Ref: arm_v8_2a_fp16_neon_ok232557
! Ref: arm_v8_2a_dotprod_neon_ok233032
! Ref: arm_fp16fml_neon_ok233452
! Ref: arm_coproc1_ok234294
! Ref: arm_coproc2_ok234420
! Ref: arm_coproc3_ok234648
! Ref: stack_size_et244897
! Node: Add Options247200
! Ref: arm_fp16_ieee248218
! Ref: arm_fp16_alternative248473
! Ref: stack_size_ao250724
! Node: Require Support250973
! Node: Final Actions253802
! Node: Ada Tests259461
! Node: C Tests260624
! Node: LTO Testing264996
! Node: gcov Testing266639
! Node: profopt Testing269629
! Node: compat Testing271344
! Node: Torture Tests275584
! Node: GIMPLE Tests277218
! Node: RTL Tests278461
! Node: Options279767
! Node: Option file format280208
! Node: Option properties287197
! Node: Passes301171
! Node: Parsing pass301987
! Node: Gimplification pass305515
! Node: Pass manager307348
! Node: Tree SSA passes309194
! Node: RTL passes330736
! Node: Optimization info343000
! Node: Dump setup343819
! Node: Optimization groups344948
! Node: Dump files and streams345927
! Node: Dump output verbosity347125
! Node: Dump types348181
! Node: Dump examples349671
! Node: poly_int351152
! Node: Overview of poly_int352632
! Node: Consequences of using poly_int355236
! Node: Comparisons involving poly_int356871
! Node: Comparison functions for poly_int358509
! Node: Properties of the poly_int comparisons359716
! Node: Comparing potentially-unordered poly_ints362158
! Node: Comparing ordered poly_ints363069
! Node: Checking for a poly_int marker value365093
! Node: Range checks on poly_ints365942
! Node: Sorting poly_ints368596
! Node: Arithmetic on poly_ints369369
! Node: Using poly_int with C++ arithmetic operators370170
! Node: wi arithmetic on poly_ints371701
! Node: Division of poly_ints372553
! Node: Other poly_int arithmetic374060
! Node: Alignment of poly_ints375466
! Node: Computing bounds on poly_ints378743
! Node: Converting poly_ints379524
! Node: Miscellaneous poly_int routines383071
! Node: Guidelines for using poly_int383711
! Node: GENERIC388643
! Node: Deficiencies390521
! Node: Tree overview390762
! Node: Macros and Functions394886
! Node: Identifiers395711
! Node: Containers397320
! Node: Types398477
! Node: Declarations410551
! Node: Working with declarations411046
! Node: Internal structure416650
! Node: Current structure hierarchy417034
! Node: Adding new DECL node types419127
! Node: Attributes423411
! Node: Expression trees424655
! Node: Constant expressions426409
! Node: Storage References432501
! Node: Unary and Binary Expressions436020
! Node: Vectors456706
! Node: Statements462375
! Node: Basic Statements462907
! Node: Blocks467534
! Node: Statement Sequences469235
! Node: Empty Statements469568
! Node: Jumps470142
! Node: Cleanups470795
! Node: OpenMP472562
! Node: OpenACC478407
! Node: Functions479448
! Node: Function Basics479919
! Node: Function Properties483603
! Node: Language-dependent trees486384
! Node: C and C++ Trees487271
! Node: Types for C++490175
! Node: Namespaces495145
! Node: Classes498251
! Node: Functions for C++503159
! Node: Statements for C++509410
! Node: C++ Expressions517463
! Node: Java Trees518968
! Node: GIMPLE519081
! Node: Tuple representation522746
! Node: Class hierarchy of GIMPLE statements529706
! Node: GIMPLE instruction set534694
! Node: GIMPLE Exception Handling536326
! Node: Temporaries538238
! Ref: Temporaries-Footnote-1539556
! Node: Operands539621
! Node: Compound Expressions540382
! Node: Compound Lvalues540616
! Node: Conditional Expressions541378
! Node: Logical Operators542037
! Node: Manipulating GIMPLE statements549385
! Node: Tuple specific accessors555321
! Node: GIMPLE_ASM556100
! Node: GIMPLE_ASSIGN558483
! Node: GIMPLE_BIND563187
! Node: GIMPLE_CALL565001
! Node: GIMPLE_CATCH569144
! Node: GIMPLE_COND570294
! Node: GIMPLE_DEBUG573089
! Node: GIMPLE_EH_FILTER577687
! Node: GIMPLE_LABEL579250
! Node: GIMPLE_GOTO579863
! Node: GIMPLE_NOP580386
! Node: GIMPLE_OMP_ATOMIC_LOAD580748
! Node: GIMPLE_OMP_ATOMIC_STORE581744
! Node: GIMPLE_OMP_CONTINUE582443
! Node: GIMPLE_OMP_CRITICAL583922
! Node: GIMPLE_OMP_FOR584916
! Node: GIMPLE_OMP_MASTER588332
! Node: GIMPLE_OMP_ORDERED588710
! Node: GIMPLE_OMP_PARALLEL589104
! Node: GIMPLE_OMP_RETURN591873
! Node: GIMPLE_OMP_SECTION592518
! Node: GIMPLE_OMP_SECTIONS593178
! Node: GIMPLE_OMP_SINGLE594788
! Node: GIMPLE_PHI595734
! Node: GIMPLE_RESX597013
! Node: GIMPLE_RETURN597732
! Node: GIMPLE_SWITCH598306
! Node: GIMPLE_TRY600181
! Node: GIMPLE_WITH_CLEANUP_EXPR601953
! Node: GIMPLE sequences602832
! Node: Sequence iterators606038
! Node: Adding a new GIMPLE statement code614495
! Node: Statement and operand traversals615840
! Node: Tree SSA618432
! Node: Annotations620220
! Node: SSA Operands620625
! Node: SSA634700
! Node: Alias analysis644406
! Node: Memory model648180
! Node: RTL649539
! Node: RTL Objects651727
! Node: RTL Classes655611
! Node: Accessors660743
! Node: Special Accessors662916
! Node: Flags668703
! Node: Machine Modes683966
! Node: Constants701499
! Node: Regs and Memory712778
! Node: Arithmetic732030
! Node: Comparisons742076
! Node: Bit-Fields746368
! Node: Vector Operations747920
! Node: Conversions749953
! Node: RTL Declarations754451
! Node: Side Effects755295
! Node: Incdec772306
! Node: Assembler775642
! Node: Debug Information777187
! Node: Insns779114
! Node: Calls807007
! Node: Sharing809600
! Node: Reading RTL812795
! Node: Control Flow813786
! Node: Basic Blocks815555
! Node: Edges821009
! Node: Profile information829628
! Node: Maintaining the CFG834312
! Node: Liveness information840080
! Node: Loop Analysis and Representation842206
! Node: Loop representation843242
! Node: Loop querying850805
! Node: Loop manipulation853626
! Node: LCSSA855962
! Node: Scalar evolutions858031
! Node: loop-iv861275
! Node: Number of iterations863197
! Node: Dependency analysis867278
! Node: Machine Desc873629
! Node: Overview876192
! Node: Patterns878232
! Node: Example882541
! Node: RTL Template884002
! Node: Output Template894658
! Node: Output Statement898839
! Node: Predicates903178
! Node: Machine-Independent Predicates906096
! Node: Defining Predicates911040
! Node: Constraints917003
! Node: Simple Constraints918472
! Node: Multi-Alternative931312
! Node: Class Preferences934521
! Node: Modifiers935413
! Node: Machine Constraints940146
  Node: Disable Insn Alternatives1002836
  Node: Define Constraints1006328
  Node: C Constraint Interface1013723
--- 53937,54196 ----
  Tag Table:
  Node: Top1789
  Node: Contributing5024
! Node: Portability5754
! Node: Interface7542
! Node: Libgcc10583
! Node: Integer library routines12410
! Node: Soft float library routines19378
! Node: Decimal float library routines31316
! Node: Fixed-point fractional library routines47074
! Node: Exception handling routines147470
! Node: Miscellaneous routines148577
! Node: Languages150697
! Node: Source Tree152244
! Node: Configure Terms152826
! Node: Top Level155782
! Node: gcc Directory159212
! Node: Subdirectories160164
! Node: Configuration162332
! Node: Config Fragments163052
! Node: System Config164277
! Node: Configuration Files165213
! Node: Build167829
! Node: Makefile168241
! Ref: Makefile-Footnote-1175016
! Ref: Makefile-Footnote-2175163
! Node: Library Files175237
! Node: Headers175799
! Node: Documentation177882
! Node: Texinfo Manuals178741
! Node: Man Page Generation181070
! Node: Miscellaneous Docs182983
! Node: Front End184370
! Node: Front End Directory188044
! Node: Front End Config189360
! Node: Front End Makefile192196
! Node: Back End195964
! Node: Testsuites200850
! Node: Test Idioms201839
! Node: Test Directives205237
! Node: Directives205764
! Node: Selectors216530
! Node: Effective-Target Keywords217886
! Ref: arm_fp_ok228450
! Ref: arm_neon_ok229532
! Ref: arm_neon_ok_no_float_abi229701
! Ref: arm_neonv2_ok229868
! Ref: arm_fp16_ok230035
! Ref: arm_neon_fp16_ok230377
! Ref: arm_vfp3_ok231253
! Ref: arm_v8_1a_neon_ok231679
! Ref: arm_v8_2a_fp16_scalar_ok232107
! Ref: arm_v8_2a_fp16_neon_ok232558
! Ref: arm_v8_2a_dotprod_neon_ok233033
! Ref: arm_fp16fml_neon_ok233453
! Ref: arm_coproc1_ok234295
! Ref: arm_coproc2_ok234421
! Ref: arm_coproc3_ok234649
! Ref: stack_size_et244898
! Node: Add Options247201
! Ref: arm_fp16_ieee248219
! Ref: arm_fp16_alternative248474
! Ref: stack_size_ao250725
! Node: Require Support250974
! Node: Final Actions253803
! Node: Ada Tests259462
! Node: C Tests260625
! Node: LTO Testing264997
! Node: gcov Testing266640
! Node: profopt Testing269630
! Node: compat Testing271345
! Node: Torture Tests275585
! Node: GIMPLE Tests277219
! Node: RTL Tests278462
! Node: Options279768
! Node: Option file format280209
! Node: Option properties287198
! Node: Passes301172
! Node: Parsing pass301988
! Node: Gimplification pass305516
! Node: Pass manager307349
! Node: Tree SSA passes309195
! Node: RTL passes330737
! Node: Optimization info343001
! Node: Dump setup343820
! Node: Optimization groups344949
! Node: Dump files and streams345928
! Node: Dump output verbosity347126
! Node: Dump types348182
! Node: Dump examples349672
! Node: poly_int351153
! Node: Overview of poly_int352633
! Node: Consequences of using poly_int355237
! Node: Comparisons involving poly_int356872
! Node: Comparison functions for poly_int358510
! Node: Properties of the poly_int comparisons359717
! Node: Comparing potentially-unordered poly_ints362159
! Node: Comparing ordered poly_ints363070
! Node: Checking for a poly_int marker value365094
! Node: Range checks on poly_ints365943
! Node: Sorting poly_ints368597
! Node: Arithmetic on poly_ints369370
! Node: Using poly_int with C++ arithmetic operators370171
! Node: wi arithmetic on poly_ints371702
! Node: Division of poly_ints372554
! Node: Other poly_int arithmetic374061
! Node: Alignment of poly_ints375467
! Node: Computing bounds on poly_ints378744
! Node: Converting poly_ints379525
! Node: Miscellaneous poly_int routines383072
! Node: Guidelines for using poly_int383712
! Node: GENERIC388644
! Node: Deficiencies390522
! Node: Tree overview390763
! Node: Macros and Functions394887
! Node: Identifiers395712
! Node: Containers397321
! Node: Types398478
! Node: Declarations410552
! Node: Working with declarations411047
! Node: Internal structure416651
! Node: Current structure hierarchy417035
! Node: Adding new DECL node types419128
! Node: Attributes423412
! Node: Expression trees424656
! Node: Constant expressions426410
! Node: Storage References432502
! Node: Unary and Binary Expressions436021
! Node: Vectors456707
! Node: Statements462376
! Node: Basic Statements462908
! Node: Blocks467535
! Node: Statement Sequences469236
! Node: Empty Statements469569
! Node: Jumps470143
! Node: Cleanups470796
! Node: OpenMP472563
! Node: OpenACC478408
! Node: Functions479449
! Node: Function Basics479920
! Node: Function Properties483604
! Node: Language-dependent trees486385
! Node: C and C++ Trees487272
! Node: Types for C++490176
! Node: Namespaces495146
! Node: Classes498252
! Node: Functions for C++503160
! Node: Statements for C++509411
! Node: C++ Expressions517464
! Node: Java Trees518969
! Node: GIMPLE519082
! Node: Tuple representation522747
! Node: Class hierarchy of GIMPLE statements529707
! Node: GIMPLE instruction set534695
! Node: GIMPLE Exception Handling536327
! Node: Temporaries538239
! Ref: Temporaries-Footnote-1539557
! Node: Operands539622
! Node: Compound Expressions540383
! Node: Compound Lvalues540617
! Node: Conditional Expressions541379
! Node: Logical Operators542038
! Node: Manipulating GIMPLE statements549386
! Node: Tuple specific accessors555322
! Node: GIMPLE_ASM556101
! Node: GIMPLE_ASSIGN558484
! Node: GIMPLE_BIND563188
! Node: GIMPLE_CALL565002
! Node: GIMPLE_CATCH569145
! Node: GIMPLE_COND570295
! Node: GIMPLE_DEBUG573090
! Node: GIMPLE_EH_FILTER577688
! Node: GIMPLE_LABEL579251
! Node: GIMPLE_GOTO579864
! Node: GIMPLE_NOP580387
! Node: GIMPLE_OMP_ATOMIC_LOAD580749
! Node: GIMPLE_OMP_ATOMIC_STORE581745
! Node: GIMPLE_OMP_CONTINUE582444
! Node: GIMPLE_OMP_CRITICAL583923
! Node: GIMPLE_OMP_FOR584917
! Node: GIMPLE_OMP_MASTER588333
! Node: GIMPLE_OMP_ORDERED588711
! Node: GIMPLE_OMP_PARALLEL589105
! Node: GIMPLE_OMP_RETURN591874
! Node: GIMPLE_OMP_SECTION592519
! Node: GIMPLE_OMP_SECTIONS593179
! Node: GIMPLE_OMP_SINGLE594789
! Node: GIMPLE_PHI595735
! Node: GIMPLE_RESX597014
! Node: GIMPLE_RETURN597733
! Node: GIMPLE_SWITCH598307
! Node: GIMPLE_TRY600182
! Node: GIMPLE_WITH_CLEANUP_EXPR601954
! Node: GIMPLE sequences602833
! Node: Sequence iterators606039
! Node: Adding a new GIMPLE statement code614496
! Node: Statement and operand traversals615841
! Node: Tree SSA618433
! Node: Annotations620221
! Node: SSA Operands620626
! Node: SSA634701
! Node: Alias analysis644407
! Node: Memory model648181
! Node: RTL649540
! Node: RTL Objects651728
! Node: RTL Classes655612
! Node: Accessors660744
! Node: Special Accessors662917
! Node: Flags668704
! Node: Machine Modes683967
! Node: Constants701500
! Node: Regs and Memory712779
! Node: Arithmetic732031
! Node: Comparisons742077
! Node: Bit-Fields746369
! Node: Vector Operations747921
! Node: Conversions749954
! Node: RTL Declarations754452
! Node: Side Effects755296
! Node: Incdec772307
! Node: Assembler775643
! Node: Debug Information777188
! Node: Insns779115
! Node: Calls807008
! Node: Sharing809601
! Node: Reading RTL812796
! Node: Control Flow813787
! Node: Basic Blocks815556
! Node: Edges821010
! Node: Profile information829629
! Node: Maintaining the CFG834313
! Node: Liveness information840081
! Node: Loop Analysis and Representation842207
! Node: Loop representation843243
! Node: Loop querying850806
! Node: Loop manipulation853627
! Node: LCSSA855963
! Node: Scalar evolutions858032
! Node: loop-iv861276
! Node: Number of iterations863198
! Node: Dependency analysis867279
! Node: Machine Desc873630
! Node: Overview876193
! Node: Patterns878233
! Node: Example882542
! Node: RTL Template884003
! Node: Output Template894659
! Node: Output Statement898840
! Node: Predicates903179
! Node: Machine-Independent Predicates906097
! Node: Defining Predicates911041
! Node: Constraints917004
! Node: Simple Constraints918473
! Node: Multi-Alternative931313
! Node: Class Preferences934522
! Node: Modifiers935414
! Node: Machine Constraints940147
  Node: Disable Insn Alternatives1002836
  Node: Define Constraints1006328
  Node: C Constraint Interface1013723
diff -Nrcpad gcc-8.3.0/gcc/doc/gcov-dump.1 gcc-8.4.0/gcc/doc/gcov-dump.1
*** gcc-8.3.0/gcc/doc/gcov-dump.1	Fri Feb 22 14:23:15 2019
--- gcc-8.4.0/gcc/doc/gcov-dump.1	Wed Mar  4 08:33:13 2020
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GCOV-DUMP 1"
! .TH GCOV-DUMP 1 "2019-02-22" "gcc-8.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 "2020-03-04" "gcc-8.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
diff -Nrcpad gcc-8.3.0/gcc/doc/gcov-tool.1 gcc-8.4.0/gcc/doc/gcov-tool.1
*** gcc-8.3.0/gcc/doc/gcov-tool.1	Fri Feb 22 14:23:15 2019
--- gcc-8.4.0/gcc/doc/gcov-tool.1	Wed Mar  4 08:33:13 2020
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GCOV-TOOL 1"
! .TH GCOV-TOOL 1 "2019-02-22" "gcc-8.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 "2020-03-04" "gcc-8.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
diff -Nrcpad gcc-8.3.0/gcc/doc/gcov.1 gcc-8.4.0/gcc/doc/gcov.1
*** gcc-8.3.0/gcc/doc/gcov.1	Fri Feb 22 14:23:15 2019
--- gcc-8.4.0/gcc/doc/gcov.1	Wed Mar  4 08:33:13 2020
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GCOV 1"
! .TH GCOV 1 "2019-02-22" "gcc-8.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 "2020-03-04" "gcc-8.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
diff -Nrcpad gcc-8.3.0/gcc/doc/gfdl.7 gcc-8.4.0/gcc/doc/gfdl.7
*** gcc-8.3.0/gcc/doc/gfdl.7	Fri Feb 22 14:23:15 2019
--- gcc-8.4.0/gcc/doc/gfdl.7	Wed Mar  4 08:33:13 2020
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GFDL 7"
! .TH GFDL 7 "2019-02-22" "gcc-8.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 "2020-03-04" "gcc-8.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
diff -Nrcpad gcc-8.3.0/gcc/doc/gfortran.1 gcc-8.4.0/gcc/doc/gfortran.1
*** gcc-8.3.0/gcc/doc/gfortran.1	Fri Feb 22 14:35:27 2019
--- gcc-8.4.0/gcc/doc/gfortran.1	Wed Mar  4 08:45:24 2020
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GFORTRAN 1"
! .TH GFORTRAN 1 "2019-02-22" "gcc-8.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 "2020-03-04" "gcc-8.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
*************** by type.  Explanations are in the follow
*** 228,234 ****
  .IP "\fICode Generation Options\fR" 4
  .IX Item "Code Generation Options"
  \&\fB\-faggressive\-function\-elimination \-fblas\-matmul\-limit=\fR\fIn\fR 
! \&\fB\-fbounds\-check \-fcheck\-array\-temporaries 
  \&\-fcheck=\fR\fI<all|array\-temps|bounds|do|mem|pointer|recursion>\fR 
  \&\fB\-fcoarray=\fR\fI<none|single|lib>\fR \fB\-fexternal\-blas \-ff2c
  \&\-ffrontend\-loop\-interchange 
--- 228,235 ----
  .IP "\fICode Generation Options\fR" 4
  .IX Item "Code Generation Options"
  \&\fB\-faggressive\-function\-elimination \-fblas\-matmul\-limit=\fR\fIn\fR 
! \&\fB\-fbounds\-check \-ftail\-call\-workaround \-ftail\-call\-workaround=\fR\fIn\fR 
! \&\fB\-fcheck\-array\-temporaries 
  \&\-fcheck=\fR\fI<all|array\-temps|bounds|do|mem|pointer|recursion>\fR 
  \&\fB\-fcoarray=\fR\fI<none|single|lib>\fR \fB\-fexternal\-blas \-ff2c
  \&\-ffrontend\-loop\-interchange 
*************** warnings for generated array temporaries
*** 1327,1332 ****
--- 1328,1368 ----
  .IP "\fB\-fbounds\-check\fR" 4
  .IX Item "-fbounds-check"
  Deprecated alias for \fB\-fcheck=bounds\fR.
+ .IP "\fB\-ftail\-call\-workaround\fR" 4
+ .IX Item "-ftail-call-workaround"
+ .PD 0
+ .IP "\fB\-ftail\-call\-workaround=\fR\fIn\fR" 4
+ .IX Item "-ftail-call-workaround=n"
+ .PD
+ Some C interfaces to Fortran codes violate the gfortran \s-1ABI\s0 by
+ omitting the hidden character length arguments as described in
+   This can lead to crashes
+ because pushing arguments for tail calls can overflow the stack.
+ .Sp
+ To provide a workaround for existing binary packages, this option
+ disables tail call optimization for gfortran procedures with character
+ arguments.  With \fB\-ftail\-call\-workaround=2\fR tail call optimization
+ is disabled in all gfortran procedures with character arguments,
+ with \fB\-ftail\-call\-workaround=1\fR or equivalent
+ \&\fB\-ftail\-call\-workaround\fR only in gfortran procedures with character
+ arguments that call implicitly prototyped procedures.
+ .Sp
+ Using this option can lead to problems including crashes due to
+ insufficient stack space.
+ .Sp
+ It is \fIvery strongly\fR recommended to fix the code in question.
+ The \fB\-fc\-prototypes\-external\fR option can be used to generate
+ prototypes which conform to gfortran's \s-1ABI,\s0 for inclusion in the
+ source code.
+ .Sp
+ Support for this option will likely be withdrawn in a future release
+ of gfortran.
+ .Sp
+ The negative form, \fB\-fno\-tail\-call\-workaround\fR or equivalent
+ \&\fB\-ftail\-call\-workaround=0\fR, can be used to disable this option.
+ .Sp
+ Default is currently \fB\-ftail\-call\-workaround\fR, this will change
+ in future releases.
  .IP "\fB\-fcheck\-array\-temporaries\fR" 4
  .IX Item "-fcheck-array-temporaries"
  Deprecated alias for \fB\-fcheck=array\-temps\fR.
diff -Nrcpad gcc-8.3.0/gcc/doc/gpl.7 gcc-8.4.0/gcc/doc/gpl.7
*** gcc-8.3.0/gcc/doc/gpl.7	Fri Feb 22 14:23:15 2019
--- gcc-8.4.0/gcc/doc/gpl.7	Wed Mar  4 08:33:13 2020
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GPL 7"
! .TH GPL 7 "2019-02-22" "gcc-8.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 "2020-03-04" "gcc-8.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
diff -Nrcpad gcc-8.3.0/gcc/doc/install.texi gcc-8.4.0/gcc/doc/install.texi
*** gcc-8.3.0/gcc/doc/install.texi	Fri Feb  8 09:05:40 2019
--- gcc-8.4.0/gcc/doc/install.texi	Wed Mar  4 08:30:00 2020
*************** and up works.
*** 335,342 ****
  Necessary when regenerating @file{Makefile} dependencies in libiberty.
  Necessary when regenerating @file{libiberty/functions.texi}.
  Necessary when generating manpages from Texinfo manuals.
! Used by various scripts to generate some files included in SVN (mainly
! Unicode-related and rarely changing) from source tables.
  
  Used by @command{automake}.
  
--- 335,343 ----
  Necessary when regenerating @file{Makefile} dependencies in libiberty.
  Necessary when regenerating @file{libiberty/functions.texi}.
  Necessary when generating manpages from Texinfo manuals.
! Used by various scripts to generate some files included in the source
! repository (mainly Unicode-related and rarely changing) from source
! tables.
  
  Used by @command{automake}.
  
*************** Necessary to regenerate the top level @f
*** 461,468 ****
  Necessary when modifying @file{*.l} files.
  
  Necessary to build GCC during development because the generated output
! files are not included in the SVN repository.  They are included in
! releases.
  
  @item Texinfo version 4.7 (or later)
  
--- 462,469 ----
  Necessary when modifying @file{*.l} files.
  
  Necessary to build GCC during development because the generated output
! files are not included in the version-controlled source repository.
! They are included in releases.
  
  @item Texinfo version 4.7 (or later)
  
*************** create printable documentation in DVI or
*** 474,480 ****
  4.8 or later is required for @command{make pdf}.
  
  Necessary to build GCC documentation during development because the
! generated output files are not included in the SVN repository.  They are
  included in releases.
  
  @item @TeX{} (any working version)
--- 475,481 ----
  4.8 or later is required for @command{make pdf}.
  
  Necessary to build GCC documentation during development because the
! generated output files are not included in the repository.  They are
  included in releases.
  
  @item @TeX{} (any working version)
*************** DVI or PDF files, respectively.
*** 488,498 ****
  Necessary to regenerate @file{jit/docs/_build/texinfo} from the @file{.rst}
  files in the directories below @file{jit/docs}.
  
! @item SVN (any version)
  @itemx SSH (any version)
  
! Necessary to access the SVN repository.  Public releases and weekly
! snapshots of the development sources are also available via FTP@.
  
  @item GNU diffutils version 2.7 (or later)
  
--- 489,499 ----
  Necessary to regenerate @file{jit/docs/_build/texinfo} from the @file{.rst}
  files in the directories below @file{jit/docs}.
  
! @item git (any version)
  @itemx SSH (any version)
  
! Necessary to access the source repository.  Public releases and weekly
! snapshots of the development sources are also available via HTTPS@.
  
  @item GNU diffutils version 2.7 (or later)
  
*************** own sources.
*** 526,534 ****
  @cindex Downloading GCC
  @cindex Downloading the Source
  
! GCC is distributed via @uref{http://gcc.gnu.org/svn.html,,SVN} and FTP
! tarballs compressed with @command{gzip} or
! @command{bzip2}.
  
  Please refer to the @uref{http://gcc.gnu.org/releases.html,,releases web page}
  for information on how to obtain GCC@.
--- 527,534 ----
  @cindex Downloading GCC
  @cindex Downloading the Source
  
! GCC is distributed via @uref{http://gcc.gnu.org/git.html,,git} and via
! HTTPS as tarballs compressed with @command{gzip} or @command{bzip2}.
  
  Please refer to the @uref{http://gcc.gnu.org/releases.html,,releases web page}
  for information on how to obtain GCC@.
*************** for both native and cross targets.
*** 586,594 ****
  We use @var{srcdir} to refer to the toplevel source directory for
  GCC; we use @var{objdir} to refer to the toplevel build/object directory.
  
! If you obtained the sources via SVN, @var{srcdir} must refer to the top
! @file{gcc} directory, the one where the @file{MAINTAINERS} file can be
! found, and not its @file{gcc} subdirectory, otherwise the build will fail.
  
  If either @var{srcdir} or @var{objdir} is located on an automounted NFS
  file system, the shell's built-in @command{pwd} command will return
--- 586,595 ----
  We use @var{srcdir} to refer to the toplevel source directory for
  GCC; we use @var{objdir} to refer to the toplevel build/object directory.
  
! If you obtained the sources by cloning the repository, @var{srcdir}
! must refer to the top @file{gcc} directory, the one where the
! @file{MAINTAINERS} file can be found, and not its @file{gcc}
! subdirectory, otherwise the build will fail.
  
  If either @var{srcdir} or @var{objdir} is located on an automounted NFS
  file system, the shell's built-in @command{pwd} command will return
*************** with @option{--enable-bootstrap}.
*** 1476,1482 ****
  @item --enable-generated-files-in-srcdir
  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 SVN development tree.  When building GCC from that development tree,
  or from one of our snapshots, those generated files are placed in your
  build directory, which allows for the source to be in a readonly
  directory.
--- 1477,1483 ----
  @item --enable-generated-files-in-srcdir
  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,
  or from one of our snapshots, those generated files are placed in your
  build directory, which allows for the source to be in a readonly
  directory.
*************** final releases.  The specific files whic
*** 1762,1802 ****
  controlled by the Makefiles.
  
  @item --enable-checking
  @itemx --enable-checking=@var{list}
! When you specify this option, the compiler is built to perform internal
! consistency checks of the requested complexity.  This does not change the
! generated code, but adds error checking within the compiler.  This will
! slow down the compiler and may only work properly if you are building
! the compiler with GCC@.  This is @samp{yes,extra} by default when building
! from SVN or snapshots, but @samp{release} for releases.  The default
! for building the stage1 compiler is @samp{yes}.  More control
! over the checks may be had by specifying @var{list}.  The categories of
! checks available are @samp{yes} (most common checks
! @samp{assert,misc,tree,gc,rtlflag,runtime}), @samp{no} (no checks at
! all), @samp{all} (all but @samp{valgrind}), @samp{release} (cheapest
! checks @samp{assert,runtime}) or @samp{none} (same as @samp{no}).
! Individual checks can be enabled with these flags @samp{assert},
! @samp{df}, @samp{fold}, @samp{gc}, @samp{gcac}, @samp{misc}, @samp{rtl},
! @samp{rtlflag}, @samp{runtime}, @samp{tree}, @samp{extra} and @samp{valgrind}.
! @samp{extra} adds for @samp{misc} checking extra checks that might affect
! code generation and should therefore not differ between stage1 and later
! stages.
  
! The @samp{valgrind} check requires the external @command{valgrind}
! simulator, available from @uref{http://valgrind.org/}.  The
! @samp{df}, @samp{rtl}, @samp{gcac} and @samp{valgrind} checks are very expensive.
! To disable all checking, @samp{--disable-checking} or
! @samp{--enable-checking=none} must be explicitly requested.  Disabling
! assertions will make the compiler and runtime slightly faster but
! increase the risk of undetected internal errors causing wrong code to be
! generated.
  
  @item --disable-stage1-checking
  @itemx --enable-stage1-checking
  @itemx --enable-stage1-checking=@var{list}
! If no @option{--enable-checking} option is specified the stage1
! compiler will be built with @samp{yes} checking enabled, otherwise
! the stage1 checking flags are the same as specified by
  @option{--enable-checking}.  To build the stage1 compiler with
  different checking options use @option{--enable-stage1-checking}.
  The list of checking options is the same as for @option{--enable-checking}.
--- 1763,1812 ----
  controlled by the Makefiles.
  
  @item --enable-checking
+ @itemx --disable-checking
  @itemx --enable-checking=@var{list}
! 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
! properly if you are building the compiler with GCC@.
  
! When the option is not specified, the active set of checks depends on context.
! Namely, bootstrap stage 1 defaults to @samp{--enable-checking=yes}, builds
! from release branches or release archives default to
! @samp{--enable-checking=release}, and otherwise
! @samp{--enable-checking=yes,extra} is used.  When the option is
! specified without a @var{list}, the result is the same as
! @samp{--enable-checking=yes}.  Likewise, @samp{--disable-checking} is
! equivalent to @samp{--enable-checking=no}.
! 
! The categories of checks available in @var{list} are @samp{yes} (most common
! checks @samp{assert,misc,gc,gimple,rtlflag,runtime,tree,types}), @samp{no}
! (no checks at all), @samp{all} (all but @samp{valgrind}), @samp{release}
! (cheapest checks @samp{assert,runtime}) or @samp{none} (same as @samp{no}).
! @samp{release} checks are always on and to disable them
! @samp{--disable-checking} or @samp{--enable-checking=no[,<other checks>]}
! must be explicitly requested.  Disabling assertions makes the compiler and
! runtime slightly faster but increases the risk of undetected internal errors
! causing wrong code to be generated.
! 
! Individual checks can be enabled with these flags: @samp{assert}, @samp{df},
! @samp{extra}, @samp{fold}, @samp{gc}, @samp{gcac}, @samp{gimple},
! @samp{misc}, @samp{rtl}, @samp{rtlflag}, @samp{runtime}, @samp{tree},
! @samp{types} and @samp{valgrind}.  @samp{extra} extends @samp{misc}
! checking with extra checks that might affect code generation and should
! therefore not differ between stage1 and later stages in bootstrap.
! 
! The @samp{valgrind} check requires the external @command{valgrind} simulator,
! available from @uref{http://valgrind.org/}.  The @samp{rtl} checks are
! expensive and the @samp{df}, @samp{gcac} and @samp{valgrind} checks are very
! expensive.
  
  @item --disable-stage1-checking
  @itemx --enable-stage1-checking
  @itemx --enable-stage1-checking=@var{list}
! This option affects only bootstrap build.  If no @option{--enable-checking}
! option is specified the stage1 compiler is built with @samp{yes} checking
! enabled, otherwise the stage1 checking flags are the same as specified by
  @option{--enable-checking}.  To build the stage1 compiler with
  different checking options use @option{--enable-stage1-checking}.
  The list of checking options is the same as for @option{--enable-checking}.
*************** that type mismatches occur, this could b
*** 2345,2351 ****
  
  The solution is not to use such a directory for building GCC@.
  
! Similarly, when building from SVN or snapshots, or if you modify
  @file{*.l} files, you need the Flex lexical analyzer generator
  installed.  If you do not modify @file{*.l} files, releases contain
  the Flex-generated files and you do not need Flex installed to build
--- 2355,2361 ----
  
  The solution is not to use such a directory for building GCC@.
  
! Similarly, when building from the source repository or snapshots, or if you modify
  @file{*.l} files, you need the Flex lexical analyzer generator
  installed.  If you do not modify @file{*.l} files, releases contain
  the Flex-generated files and you do not need Flex installed to build
*************** them.  There is still one Flex-based lex
*** 2353,2359 ****
  build machinery, not of GCC itself) that is used even if you only
  build the C front end.
  
! When building from SVN or snapshots, or if you modify Texinfo
  documentation, you need version 4.7 or later of Texinfo installed if you
  want Info documentation to be regenerated.  Releases contain Info
  documentation pre-built for the unmodified documentation in the release.
--- 2363,2369 ----
  build machinery, not of GCC itself) that is used even if you only
  build the C front end.
  
! When building from the source repository or snapshots, or if you modify Texinfo
  documentation, you need version 4.7 or later of Texinfo installed if you
  want Info documentation to be regenerated.  Releases contain Info
  documentation pre-built for the unmodified documentation in the release.
diff -Nrcpad gcc-8.3.0/gcc/doc/invoke.texi gcc-8.4.0/gcc/doc/invoke.texi
*** gcc-8.3.0/gcc/doc/invoke.texi	Thu Feb 14 23:08:18 2019
--- gcc-8.4.0/gcc/doc/invoke.texi	Wed Mar  4 08:30:00 2020
*************** Objective-C and Objective-C++ Dialects}.
*** 554,560 ****
  -fdisable-tree-@var{pass_name} @gol
  -fdisable-tree-@var{pass-name}=@var{range-list} @gol
  -fdump-noaddr  -fdump-unnumbered  -fdump-unnumbered-links @gol
- -fdump-class-hierarchy@r{[}-@var{n}@r{]} @gol
  -fdump-final-insns@r{[}=@var{file}@r{]} @gol
  -fdump-ipa-all  -fdump-ipa-cgraph  -fdump-ipa-inline @gol
  -fdump-lang-all @gol
--- 554,559 ----
*************** Objective-C and Objective-C++ Dialects}.
*** 677,683 ****
  -mn_flash=@var{size}  -mno-interrupts @gol
  -mmain-is-OS_task -mrelax  -mrmw  -mstrict-X  -mtiny-stack @gol
  -mfract-convert-truncate @gol
! -mshort-calls  -nodevicelib @gol
  -Waddr-space-convert  -Wmisspelled-isr}
  
  @emph{Blackfin Options}
--- 676,682 ----
  -mn_flash=@var{size}  -mno-interrupts @gol
  -mmain-is-OS_task -mrelax  -mrmw  -mstrict-X  -mtiny-stack @gol
  -mfract-convert-truncate @gol
! -mshort-calls -nodevicelib  -nodevicespecs @gol
  -Waddr-space-convert  -Wmisspelled-isr}
  
  @emph{Blackfin Options}
*************** consumers are not expected to support th
*** 7374,7380 ****
  would be rendered unable to decode location lists using it.
  
  @item -ginternal-reset-location-views
! @itemx -gnointernal-reset-location-views
  @opindex ginternal-reset-location-views
  @opindex gno-internal-reset-location-views
  Attempt to determine location views that can be omitted from location
--- 7373,7379 ----
  would be rendered unable to decode location lists using it.
  
  @item -ginternal-reset-location-views
! @itemx -gno-internal-reset-location-views
  @opindex ginternal-reset-location-views
  @opindex gno-internal-reset-location-views
  Attempt to determine location views that can be omitted from location
*************** do not typically increase code size.
*** 7681,7688 ****
  
  @option{-Os} disables the following optimization flags:
  @gccoptlist{-falign-functions  -falign-jumps  -falign-loops @gol
! -falign-labels  -freorder-blocks  -freorder-blocks-algorithm=stc @gol
! -freorder-blocks-and-partition  -fprefetch-loop-arrays}
  
  It also enables @option{-finline-functions}, causes the compiler to tune for
  code size rather than execution speed, and performs further optimizations
--- 7680,7686 ----
  
  @option{-Os} disables the following optimization flags:
  @gccoptlist{-falign-functions  -falign-jumps  -falign-loops @gol
! -falign-labels  -fprefetch-loop-arrays}
  
  It also enables @option{-finline-functions}, causes the compiler to tune for
  code size rather than execution speed, and performs further optimizations
*************** Specify the name of the target processor
*** 14749,14754 ****
--- 14747,14753 ----
  performance of the code.  Permissible values for this option are:
  @samp{generic}, @samp{cortex-a35}, @samp{cortex-a53}, @samp{cortex-a55},
  @samp{cortex-a57}, @samp{cortex-a72}, @samp{cortex-a73}, @samp{cortex-a75},
+ @samp{cortex-a76}, @samp{ares}, @samp{neoverse-n1}
  @samp{exynos-m1}, @samp{falkor}, @samp{qdf24xx}, @samp{saphira},
  @samp{xgene1}, @samp{vulcan}, @samp{thunderx},
  @samp{thunderxt88}, @samp{thunderxt88p1}, @samp{thunderxt81},
*************** Allow to use truncation instead of round
*** 16887,16892 ****
--- 16886,16898 ----
  @opindex nodevicelib
  Don't link against AVR-LibC's device specific library @code{lib<mcu>.a}.
  
+ @item -nodevicespecs
+ @opindex nodevicespecs
+ Don't add @option{-specs=device-specs/specs-<mcu>} to the compiler driver's
+ command line.  The user takes responsibility for supplying the sub-processes
+ like compiler proper, assembler and linker with appropriate command line
+ options.
+ 
  @item -Waddr-space-convert
  @opindex Waddr-space-convert
  Warn about conversions between address spaces in the case where the
diff -Nrcpad gcc-8.3.0/gcc/doc/md.texi gcc-8.4.0/gcc/doc/md.texi
*** gcc-8.3.0/gcc/doc/md.texi	Tue Apr 10 15:49:59 2018
--- gcc-8.4.0/gcc/doc/md.texi	Wed Mar  4 08:30:00 2020
*************** The @code{X} register.
*** 3392,3398 ****
  @table @code
  
  @item f
! A floating-point register (if availiable).
  
  @item I
  An I-type 12-bit signed immediate.
--- 3392,3398 ----
  @table @code
  
  @item f
! A floating-point register (if available).
  
  @item I
  An I-type 12-bit signed immediate.
diff -Nrcpad gcc-8.3.0/gcc/dse.c gcc-8.4.0/gcc/dse.c
*** gcc-8.3.0/gcc/dse.c	Tue Apr 17 21:38:45 2018
--- gcc-8.4.0/gcc/dse.c	Wed Mar  4 08:30:00 2020
*************** scan_insn (bb_info_t bb_info, rtx_insn *
*** 2515,2524 ****
  		clear_rhs_from_active_local_stores ();
  	    }
  	}
!       else if (SIBLING_CALL_P (insn) && reload_completed)
  	/* Arguments for a sibling call that are pushed to memory are passed
  	   using the incoming argument pointer of the current function.  After
! 	   reload that might be (and likely is) frame pointer based.  */
  	add_wild_read (bb_info);
        else
  	/* Every other call, including pure functions, may read any memory
--- 2515,2527 ----
  		clear_rhs_from_active_local_stores ();
  	    }
  	}
!       else if (SIBLING_CALL_P (insn)
! 	       && (reload_completed || HARD_FRAME_POINTER_IS_ARG_POINTER))
  	/* Arguments for a sibling call that are pushed to memory are passed
  	   using the incoming argument pointer of the current function.  After
! 	   reload that might be (and likely is) frame pointer based.  And, if
! 	   it is a frame pointer on the target, even before reload we need to
! 	   kill frame pointer based stores.  */
  	add_wild_read (bb_info);
        else
  	/* Every other call, including pure functions, may read any memory
diff -Nrcpad gcc-8.3.0/gcc/dwarf2cfi.c gcc-8.4.0/gcc/dwarf2cfi.c
*** gcc-8.3.0/gcc/dwarf2cfi.c	Fri Jan 19 22:36:04 2018
--- gcc-8.4.0/gcc/dwarf2cfi.c	Wed Mar  4 08:30:00 2020
*************** dwarf2out_frame_debug_expr (rtx expr)
*** 1762,1768 ****
  
  	  /* Rule 6 */
  	case CONST_INT:
! 	case POLY_INT_CST:
  	  cur_trace->cfa_temp.reg = dwf_regno (dest);
  	  cur_trace->cfa_temp.offset = rtx_to_poly_int64 (src);
  	  break;
--- 1762,1768 ----
  
  	  /* Rule 6 */
  	case CONST_INT:
! 	case CONST_POLY_INT:
  	  cur_trace->cfa_temp.reg = dwf_regno (dest);
  	  cur_trace->cfa_temp.offset = rtx_to_poly_int64 (src);
  	  break;
diff -Nrcpad gcc-8.3.0/gcc/dwarf2out.c gcc-8.4.0/gcc/dwarf2out.c
*** gcc-8.3.0/gcc/dwarf2out.c	Fri Feb  8 14:34:49 2019
--- gcc-8.4.0/gcc/dwarf2out.c	Wed Mar  4 08:30:00 2020
*************** const struct gcc_debug_hooks dwarf2_line
*** 2875,2883 ****
     separate comdat sections since the linker will then be able to
     remove duplicates.  But not all tools support .debug_types sections
     yet.  For Dwarf V5 or higher .debug_types doesn't exist any more,
!    it is DW_UT_type unit type in .debug_info section.  */
  
! #define use_debug_types (dwarf_version >= 4 && flag_debug_types_section)
  
  /* Various DIE's use offsets relative to the beginning of the
     .debug_info section to refer to each other.  */
--- 2875,2887 ----
     separate comdat sections since the linker will then be able to
     remove duplicates.  But not all tools support .debug_types sections
     yet.  For Dwarf V5 or higher .debug_types doesn't exist any more,
!    it is DW_UT_type unit type in .debug_info section.  For late LTO
!    debug there should be almost no types emitted so avoid enabling
!    -fdebug-types-section there.  */
  
! #define use_debug_types (dwarf_version >= 4 \
! 			 && flag_debug_types_section \
! 			 && !in_lto_p)
  
  /* Various DIE's use offsets relative to the beginning of the
     .debug_info section to refer to each other.  */
*************** static void output_die_abbrevs (unsigned
*** 3713,3719 ****
  static void output_die (dw_die_ref);
  static void output_compilation_unit_header (enum dwarf_unit_type);
  static void output_comp_unit (dw_die_ref, int, const unsigned char *);
! static void output_comdat_type_unit (comdat_type_node *);
  static const char *dwarf2_name (tree, int);
  static void add_pubname (tree, dw_die_ref);
  static void add_enumerator_pubname (const char *, dw_die_ref);
--- 3717,3723 ----
  static void output_die (dw_die_ref);
  static void output_compilation_unit_header (enum dwarf_unit_type);
  static void output_comp_unit (dw_die_ref, int, const unsigned char *);
! static void output_comdat_type_unit (comdat_type_node *, bool);
  static const char *dwarf2_name (tree, int);
  static void add_pubname (tree, dw_die_ref);
  static void add_enumerator_pubname (const char *, dw_die_ref);
*************** size_of_die (dw_die_ref die)
*** 9339,9345 ****
  	  }
  	  break;
  	case dw_val_class_loc_list:
- 	case dw_val_class_view_list:
  	  if (dwarf_split_debug_info && dwarf_version >= 5)
  	    {
  	      gcc_assert (AT_loc_list (a)->num_assigned);
--- 9343,9348 ----
*************** size_of_die (dw_die_ref die)
*** 9348,9353 ****
--- 9351,9359 ----
            else
              size += DWARF_OFFSET_SIZE;
  	  break;
+ 	case dw_val_class_view_list:
+ 	  size += DWARF_OFFSET_SIZE;
+ 	  break;
  	case dw_val_class_range_list:
  	  if (value_format (a) == DW_FORM_rnglistx)
  	    {
*************** size_of_die (dw_die_ref die)
*** 9425,9431 ****
  		 we use DW_FORM_ref_addr.  In DWARF2, DW_FORM_ref_addr
  		 is sized by target address length, whereas in DWARF3
  		 it's always sized as an offset.  */
! 	      if (use_debug_types)
  		size += DWARF_TYPE_SIGNATURE_SIZE;
  	      else if (dwarf_version == 2)
  		size += DWARF2_ADDR_SIZE;
--- 9431,9437 ----
  		 we use DW_FORM_ref_addr.  In DWARF2, DW_FORM_ref_addr
  		 is sized by target address length, whereas in DWARF3
  		 it's always sized as an offset.  */
! 	      if (AT_ref (a)->comdat_type_p)
  		size += DWARF_TYPE_SIGNATURE_SIZE;
  	      else if (dwarf_version == 2)
  		size += DWARF2_ADDR_SIZE;
*************** value_format (dw_attr_node *a)
*** 9721,9732 ****
  	  gcc_unreachable ();
  	}
      case dw_val_class_loc_list:
-     case dw_val_class_view_list:
        if (dwarf_split_debug_info
  	  && dwarf_version >= 5
  	  && AT_loc_list (a)->num_assigned)
  	return DW_FORM_loclistx;
        /* FALLTHRU */
      case dw_val_class_range_list:
        /* For range lists in DWARF 5, use DW_FORM_rnglistx from .debug_info.dwo
  	 but in .debug_info use DW_FORM_sec_offset, which is shorter if we
--- 9727,9738 ----
  	  gcc_unreachable ();
  	}
      case dw_val_class_loc_list:
        if (dwarf_split_debug_info
  	  && dwarf_version >= 5
  	  && AT_loc_list (a)->num_assigned)
  	return DW_FORM_loclistx;
        /* FALLTHRU */
+     case dw_val_class_view_list:
      case dw_val_class_range_list:
        /* For range lists in DWARF 5, use DW_FORM_rnglistx from .debug_info.dwo
  	 but in .debug_info use DW_FORM_sec_offset, which is shorter if we
*************** value_format (dw_attr_node *a)
*** 9869,9875 ****
        return DW_FORM_flag;
      case dw_val_class_die_ref:
        if (AT_ref_external (a))
! 	return use_debug_types ? DW_FORM_ref_sig8 : DW_FORM_ref_addr;
        else
  	return DW_FORM_ref;
      case dw_val_class_fde_ref:
--- 9875,9886 ----
        return DW_FORM_flag;
      case dw_val_class_die_ref:
        if (AT_ref_external (a))
! 	{
! 	  if (AT_ref (a)->comdat_type_p)
! 	    return DW_FORM_ref_sig8;
! 	  else
! 	    return DW_FORM_ref_addr;
! 	}
        else
  	return DW_FORM_ref;
      case dw_val_class_fde_ref:
*************** output_skeleton_debug_sections (dw_die_r
*** 11217,11223 ****
  /* Output a comdat type unit DIE and its children.  */
  
  static void
! output_comdat_type_unit (comdat_type_node *node)
  {
    const char *secname;
    char *tmp;
--- 11228,11235 ----
  /* Output a comdat type unit DIE and its children.  */
  
  static void
! output_comdat_type_unit (comdat_type_node *node,
! 			 bool early_lto_debug ATTRIBUTE_UNUSED)
  {
    const char *secname;
    char *tmp;
*************** output_comdat_type_unit (comdat_type_nod
*** 11244,11257 ****
    if (dwarf_version >= 5)
      {
        if (!dwarf_split_debug_info)
! 	secname = ".debug_info";
        else
! 	secname = ".debug_info.dwo";
      }
    else if (!dwarf_split_debug_info)
!     secname = ".debug_types";
    else
!     secname = ".debug_types.dwo";
  
    tmp = XALLOCAVEC (char, 4 + DWARF_TYPE_SIGNATURE_SIZE * 2);
    sprintf (tmp, dwarf_version >= 5 ? "wi." : "wt.");
--- 11256,11271 ----
    if (dwarf_version >= 5)
      {
        if (!dwarf_split_debug_info)
! 	secname = early_lto_debug ? DEBUG_LTO_INFO_SECTION : DEBUG_INFO_SECTION;
        else
! 	secname = (early_lto_debug
! 		   ? DEBUG_LTO_DWO_INFO_SECTION : DEBUG_DWO_INFO_SECTION);
      }
    else if (!dwarf_split_debug_info)
!     secname = early_lto_debug ? ".gnu.debuglto_.debug_types" : ".debug_types";
    else
!     secname = (early_lto_debug
! 	       ? ".gnu.debuglto_.debug_types.dwo" : ".debug_types.dwo");
  
    tmp = XALLOCAVEC (char, 4 + DWARF_TYPE_SIGNATURE_SIZE * 2);
    sprintf (tmp, dwarf_version >= 5 ? "wi." : "wt.");
*************** resolve_args_picking_1 (dw_loc_descr_ref
*** 17879,17884 ****
--- 17893,17900 ----
  	case DW_OP_push_object_address:
  	case DW_OP_call_frame_cfa:
  	case DW_OP_GNU_variable_value:
+ 	case DW_OP_GNU_addr_index:
+ 	case DW_OP_GNU_const_index:
  	  ++frame_offset_;
  	  break;
  
*************** add_const_value_attribute (dw_die_ref di
*** 19661,19666 ****
--- 19677,19685 ----
  
      case HIGH:
      case CONST_FIXED:
+     case MINUS:
+     case SIGN_EXTEND:
+     case ZERO_EXTEND:
        return false;
  
      case MEM:
*************** gen_formal_parameter_die (tree node, tre
*** 22202,22220 ****
        /* If the contexts differ, we may not be talking about the same
  	 thing.
  	 ???  When in LTO the DIE parent is the "abstract" copy and the
! 	 context_die is the specification "copy".  But this whole block
! 	 should eventually be no longer needed.  */
!       if (parm_die && parm_die->die_parent != context_die && !in_lto_p)
  	{
! 	  if (!DECL_ABSTRACT_P (node))
! 	    {
! 	      /* This can happen when creating an inlined instance, in
! 		 which case we need to create a new DIE that will get
! 		 annotated with DW_AT_abstract_origin.  */
! 	      parm_die = NULL;
! 	    }
! 	  else
! 	    gcc_unreachable ();
  	}
  
        if (parm_die && parm_die->die_parent == NULL)
--- 22221,22238 ----
        /* If the contexts differ, we may not be talking about the same
  	 thing.
  	 ???  When in LTO the DIE parent is the "abstract" copy and the
! 	 context_die is the specification "copy".  */
!       if (parm_die
! 	  && parm_die->die_parent != context_die
! 	  && (parm_die->die_parent->die_tag != DW_TAG_GNU_formal_parameter_pack
! 	      || parm_die->die_parent->die_parent != context_die)
! 	  && !in_lto_p)
  	{
! 	  gcc_assert (!DECL_ABSTRACT_P (node));
! 	  /* This can happen when creating a concrete instance, in
! 	     which case we need to create a new DIE that will get
! 	     annotated with DW_AT_abstract_origin.  */
! 	  parm_die = NULL;
  	}
  
        if (parm_die && parm_die->die_parent == NULL)
*************** dwarf2out_late_global_decl (tree decl)
*** 26573,26588 ****
      {
        dw_die_ref die = lookup_decl_die (decl);
  
!       /* We may have to generate early debug late for LTO in case debug
           was not enabled at compile-time or the target doesn't support
  	 the LTO early debug scheme.  */
        if (! die && in_lto_p)
! 	{
! 	  dwarf2out_decl (decl);
! 	  die = lookup_decl_die (decl);
! 	}
! 
!       if (die)
  	{
  	  /* We get called via the symtab code invoking late_global_decl
  	     for symbols that are optimized out.
--- 26591,26602 ----
      {
        dw_die_ref die = lookup_decl_die (decl);
  
!       /* We may have to generate full debug late for LTO in case debug
           was not enabled at compile-time or the target doesn't support
  	 the LTO early debug scheme.  */
        if (! die && in_lto_p)
! 	dwarf2out_decl (decl);
!       else if (die)
  	{
  	  /* We get called via the symtab code invoking late_global_decl
  	     for symbols that are optimized out.
*************** lookup_filename (const char *file_name)
*** 26985,26990 ****
--- 26999,27007 ----
    if (!file_name)
      return NULL;
  
+   if (!file_name[0])
+     file_name = "<stdin>";
+ 
    dwarf_file_data **slot
      = file_table->find_slot_with_hash (file_name, htab_hash_string (file_name),
  				       INSERT);
*************** dwarf2out_inline_entry (tree block)
*** 27610,27615 ****
--- 27627,27633 ----
  static void
  dwarf2out_size_function (tree decl)
  {
+   set_early_dwarf s;
    function_to_dwarf_procedure (decl);
  }
  
*************** prune_unused_types (void)
*** 29410,29418 ****
    for (i = 0; base_types.iterate (i, &base_type); i++)
      prune_unused_types_mark (base_type, 1);
  
!   /* For -fvar-tracking-assignments, also set the mark on nodes that could be
!      referenced by DW_TAG_call_site DW_AT_call_origin (i.e. direct call
!      callees).  */
    cgraph_node *cnode;
    FOR_EACH_FUNCTION (cnode)
      if (cnode->referred_to_p (false))
--- 29428,29436 ----
    for (i = 0; base_types.iterate (i, &base_type); i++)
      prune_unused_types_mark (base_type, 1);
  
!   /* Also set the mark on nodes that could be referenced by
!      DW_TAG_call_site DW_AT_call_origin (i.e. direct call callees) or
!      by DW_TAG_inlined_subroutine origins.  */
    cgraph_node *cnode;
    FOR_EACH_FUNCTION (cnode)
      if (cnode->referred_to_p (false))
*************** prune_unused_types (void)
*** 29421,29428 ****
  	if (die == NULL || die->die_mark)
  	  continue;
  	for (cgraph_edge *e = cnode->callers; e; e = e->next_caller)
! 	  if (e->caller != cnode
! 	      && opt_for_fn (e->caller->decl, flag_var_tracking_assignments))
  	    {
  	      prune_unused_types_mark (die, 1);
  	      break;
--- 29439,29445 ----
  	if (die == NULL || die->die_mark)
  	  continue;
  	for (cgraph_edge *e = cnode->callers; e; e = e->next_caller)
! 	  if (e->caller != cnode)
  	    {
  	      prune_unused_types_mark (die, 1);
  	      break;
*************** dwarf2out_finish (const char *)
*** 31398,31404 ****
                           ? dl_section_ref
                           : debug_skeleton_line_section_label));
  
!       output_comdat_type_unit (ctnode);
        *slot = ctnode;
      }
  
--- 31415,31421 ----
                           ? dl_section_ref
                           : debug_skeleton_line_section_label));
  
!       output_comdat_type_unit (ctnode, false);
        *slot = ctnode;
      }
  
*************** dwarf2out_early_finish (const char *file
*** 32039,32045 ****
                           ? debug_line_section_label
                           : debug_skeleton_line_section_label));
  
!       output_comdat_type_unit (ctnode);
        *slot = ctnode;
      }
  
--- 32056,32062 ----
                           ? debug_line_section_label
                           : debug_skeleton_line_section_label));
  
!       output_comdat_type_unit (ctnode, true);
        *slot = ctnode;
      }
  
diff -Nrcpad gcc-8.3.0/gcc/emit-rtl.c gcc-8.4.0/gcc/emit-rtl.c
*** gcc-8.3.0/gcc/emit-rtl.c	Fri Mar 23 20:55:40 2018
--- gcc-8.4.0/gcc/emit-rtl.c	Wed Mar  4 08:30:00 2020
*************** try_split (rtx pat, rtx_insn *trial, int
*** 3940,3945 ****
--- 3940,3946 ----
  	  break;
  
  	case REG_NON_LOCAL_GOTO:
+ 	case REG_LABEL_TARGET:
  	  for (insn = insn_last; insn != NULL_RTX; insn = PREV_INSN (insn))
  	    {
  	      if (JUMP_P (insn))
diff -Nrcpad gcc-8.3.0/gcc/explow.c gcc-8.4.0/gcc/explow.c
*** gcc-8.3.0/gcc/explow.c	Tue Apr 10 09:58:57 2018
--- gcc-8.4.0/gcc/explow.c	Wed Mar  4 08:30:00 2020
*************** promote_ssa_mode (const_tree name, int *
*** 893,908 ****
  
    tree type = TREE_TYPE (name);
    int unsignedp = TYPE_UNSIGNED (type);
!   machine_mode mode = TYPE_MODE (type);
! 
!   /* Bypass TYPE_MODE when it maps vector modes to BLKmode.  */
!   if (mode == BLKmode)
!     {
!       gcc_assert (VECTOR_TYPE_P (type));
!       mode = type->type_common.mode;
!     }
! 
!   machine_mode pmode = promote_mode (type, mode, &unsignedp);
    if (punsignedp)
      *punsignedp = unsignedp;
  
--- 893,899 ----
  
    tree type = TREE_TYPE (name);
    int unsignedp = TYPE_UNSIGNED (type);
!   machine_mode pmode = promote_mode (type, TYPE_MODE (type), &unsignedp);
    if (punsignedp)
      *punsignedp = unsignedp;
  
diff -Nrcpad gcc-8.3.0/gcc/expmed.c gcc-8.4.0/gcc/expmed.c
*** gcc-8.3.0/gcc/expmed.c	Wed Sep  5 07:23:00 2018
--- gcc-8.4.0/gcc/expmed.c	Wed Mar  4 08:30:00 2020
*************** store_bit_field_1 (rtx str_rtx, poly_uin
*** 838,843 ****
--- 838,864 ----
        if (MEM_P (op0))
  	op0 = adjust_bitfield_address_size (op0, op0_mode.else_blk (),
  					    0, MEM_SIZE (op0));
+       else if (!op0_mode.exists ())
+ 	{
+ 	  if (ibitnum == 0
+ 	      && known_eq (ibitsize, GET_MODE_BITSIZE (GET_MODE (op0)))
+ 	      && MEM_P (value)
+ 	      && !reverse)
+ 	    {
+ 	      value = adjust_address (value, GET_MODE (op0), 0);
+ 	      emit_move_insn (op0, value);
+ 	      return true;
+ 	    }
+ 	  if (!fallback_p)
+ 	    return false;
+ 	  rtx temp = assign_stack_temp (GET_MODE (op0),
+ 					GET_MODE_SIZE (GET_MODE (op0)));
+ 	  emit_move_insn (temp, op0);
+ 	  store_bit_field_1 (temp, bitsize, bitnum, 0, 0, fieldmode, value,
+ 			     reverse, fallback_p);
+ 	  emit_move_insn (op0, temp);
+ 	  return true;
+ 	}
        else
  	op0 = gen_lowpart (op0_mode.require (), op0);
      }
*************** expand_mult_const (machine_mode mode, rt
*** 3352,3364 ****
  	      tem = gen_lowpart (nmode, op0);
  	    }
  
! 	  insn = get_last_insn ();
! 	  wide_int wval_so_far
! 	    = wi::uhwi (val_so_far,
! 			GET_MODE_PRECISION (as_a <scalar_mode> (nmode)));
! 	  rtx c = immed_wide_int_const (wval_so_far, nmode);
! 	  set_dst_reg_note (insn, REG_EQUAL, gen_rtx_MULT (nmode, tem, c),
! 			    accum_inner);
  	}
      }
  
--- 3373,3392 ----
  	      tem = gen_lowpart (nmode, op0);
  	    }
  
! 	  /* Don't add a REG_EQUAL note if tem is a paradoxical SUBREG.
! 	     In that case, only the low bits of accum would be guaranteed to
! 	     be equal to the content of the REG_EQUAL note, the upper bits
! 	     can be anything.  */
! 	  if (!paradoxical_subreg_p (tem))
! 	    {
! 	      insn = get_last_insn ();
! 	      wide_int wval_so_far
! 		= wi::uhwi (val_so_far,
! 			    GET_MODE_PRECISION (as_a <scalar_mode> (nmode)));
! 	      rtx c = immed_wide_int_const (wval_so_far, nmode);
! 	      set_dst_reg_note (insn, REG_EQUAL, gen_rtx_MULT (nmode, tem, c),
! 				accum_inner);
! 	    }
  	}
      }
  
diff -Nrcpad gcc-8.3.0/gcc/expr.c gcc-8.4.0/gcc/expr.c
*** gcc-8.3.0/gcc/expr.c	Thu Feb  7 14:35:30 2019
--- gcc-8.4.0/gcc/expr.c	Wed Mar  4 08:30:00 2020
*************** expand_assignment (tree to, tree from, b
*** 5187,5195 ****
  		}
  	      else
  		{
! 		  rtx from_rtx
! 		    = simplify_gen_subreg (to_mode, result,
! 					   TYPE_MODE (TREE_TYPE (from)), 0);
  		  if (from_rtx)
  		    {
  		      emit_move_insn (XEXP (to_rtx, 0),
--- 5187,5199 ----
  		}
  	      else
  		{
! 		  rtx from_rtx;
! 		  if (MEM_P (result))
! 		    from_rtx = change_address (result, to_mode, NULL_RTX);
! 		  else
! 		    from_rtx
! 		      = simplify_gen_subreg (to_mode, result,
! 					     TYPE_MODE (TREE_TYPE (from)), 0);
  		  if (from_rtx)
  		    {
  		      emit_move_insn (XEXP (to_rtx, 0),
*************** expand_assignment (tree to, tree from, b
*** 5258,5263 ****
--- 5262,5268 ----
  		MEM_VOLATILE_P (to_rtx) = 1;
  	    }
  
+ 	  gcc_checking_assert (known_ge (bitpos, 0));
  	  if (optimize_bitfield_assignment_op (bitsize, bitpos,
  					       bitregion_start, bitregion_end,
  					       mode1, to_rtx, to, from,
*************** store_field (rtx target, poly_int64 bits
*** 7115,7120 ****
--- 7120,7126 ----
  	}
  
        /* Store the value in the bitfield.  */
+       gcc_assert (known_ge (bitpos, 0));
        store_bit_field (target, bitsize, bitpos,
  		       bitregion_start, bitregion_end,
  		       mode, temp, reverse);
*************** expand_expr_real_1 (tree exp, rtx target
*** 10658,10663 ****
--- 10664,10677 ----
  	mode2
  	  = CONSTANT_P (op0) ? TYPE_MODE (TREE_TYPE (tem)) : GET_MODE (op0);
  
+ 	/* Make sure bitpos is not negative, it can wreak havoc later.  */
+ 	if (maybe_lt (bitpos, 0))
+ 	  {
+ 	    gcc_checking_assert (offset == NULL_TREE);
+ 	    offset = size_int (bits_to_bytes_round_down (bitpos));
+ 	    bitpos = num_trailing_bits (bitpos);
+ 	  }
+ 
  	/* If we have either an offset, a BLKmode result, or a reference
  	   outside the underlying object, we must force it to memory.
  	   Such a case can occur in Ada if we have unchecked conversion
*************** expand_expr_real_1 (tree exp, rtx target
*** 10906,10911 ****
--- 10920,10926 ----
  		&& GET_MODE_CLASS (ext_mode) == MODE_INT)
  	      reversep = TYPE_REVERSE_STORAGE_ORDER (type);
  
+ 	    gcc_checking_assert (known_ge (bitpos, 0));
  	    op0 = extract_bit_field (op0, bitsize, bitpos, unsignedp,
  				     (modifier == EXPAND_STACK_PARM
  				      ? NULL_RTX : target),
diff -Nrcpad gcc-8.3.0/gcc/fold-const.c gcc-8.4.0/gcc/fold-const.c
*** gcc-8.3.0/gcc/fold-const.c	Thu Feb 14 10:04:35 2019
--- gcc-8.4.0/gcc/fold-const.c	Wed Mar  4 08:30:00 2020
*************** combine_comparisons (location_t loc,
*** 2894,2899 ****
--- 2894,2904 ----
     If OEP_LEXICOGRAPHIC is set, then also handle expressions with side-effects
     such as MODIFY_EXPR, RETURN_EXPR, as well as STATEMENT_LISTs.
  
+    If OEP_BITWISE is set, then require the values to be bitwise identical
+    rather than simply numerically equal.  Do not take advantage of things
+    like math-related flags or undefined behavior; only return true for
+    values that are provably bitwise identical in all circumstances.
+ 
     Unless OEP_MATCH_SIDE_EFFECTS is set, the function returns false on
     any operand with side effect.  This is unnecesarily conservative in the
     case we know that arg0 and arg1 are in disjoint code paths (such as in
*************** operand_equal_p (const_tree arg0, const_
*** 2937,2942 ****
--- 2942,2952 ----
    if (!TREE_TYPE (arg0) || !TREE_TYPE (arg1))
      return 0;
  
+   /* Bitwise identity makes no sense if the values have different layouts.  */
+   if ((flags & OEP_BITWISE)
+       && !tree_nop_conversion_p (TREE_TYPE (arg0), TREE_TYPE (arg1)))
+     return 0;
+ 
    /* We cannot consider pointers to different address space equal.  */
    if (POINTER_TYPE_P (TREE_TYPE (arg0))
        && POINTER_TYPE_P (TREE_TYPE (arg1))
*************** operand_equal_p (const_tree arg0, const_
*** 3069,3076 ****
  	if (real_identical (&TREE_REAL_CST (arg0), &TREE_REAL_CST (arg1)))
  	  return 1;
  
! 
! 	if (!HONOR_SIGNED_ZEROS (arg0))
  	  {
  	    /* If we do not distinguish between signed and unsigned zero,
  	       consider them equal.  */
--- 3079,3085 ----
  	if (real_identical (&TREE_REAL_CST (arg0), &TREE_REAL_CST (arg1)))
  	  return 1;
  
! 	if (!(flags & OEP_BITWISE) && !HONOR_SIGNED_ZEROS (arg0))
  	  {
  	    /* If we do not distinguish between signed and unsigned zero,
  	       consider them equal.  */
*************** operand_equal_p (const_tree arg0, const_
*** 3122,3128 ****
  	break;
        }
  
!   if (flags & OEP_ONLY_CONST)
      return 0;
  
  /* Define macros to test an operand from arg0 and arg1 for equality and a
--- 3131,3139 ----
  	break;
        }
  
!   /* Don't handle more cases for OEP_BITWISE, since we can't guarantee that
!      two instances of undefined behavior will give identical results.  */
!   if (flags & (OEP_ONLY_CONST | OEP_BITWISE))
      return 0;
  
  /* Define macros to test an operand from arg0 and arg1 for equality and a
*************** operand_equal_p (const_tree arg0, const_
*** 3179,3188 ****
        switch (TREE_CODE (arg0))
  	{
  	case INDIRECT_REF:
! 	  if (!(flags & OEP_ADDRESS_OF)
! 	      && (TYPE_ALIGN (TREE_TYPE (arg0))
! 		  != TYPE_ALIGN (TREE_TYPE (arg1))))
! 	    return 0;
  	  flags &= ~OEP_ADDRESS_OF;
  	  return OP_SAME (0);
  
--- 3190,3205 ----
        switch (TREE_CODE (arg0))
  	{
  	case INDIRECT_REF:
! 	  if (!(flags & OEP_ADDRESS_OF))
! 	    {
! 	      if (TYPE_ALIGN (TREE_TYPE (arg0))
! 		  != TYPE_ALIGN (TREE_TYPE (arg1)))
! 		return 0;
! 	      /* Verify that the access types are compatible.  */
! 	      if (TYPE_MAIN_VARIANT (TREE_TYPE (arg0))
! 		  != TYPE_MAIN_VARIANT (TREE_TYPE (arg1)))
! 		return 0;
! 	    }
  	  flags &= ~OEP_ADDRESS_OF;
  	  return OP_SAME (0);
  
*************** decode_field_reference (location_t loc,
*** 4239,4245 ****
       There are problems with FP fields since the type_for_size call
       below can fail for, e.g., XFmode.  */
    if (! INTEGRAL_TYPE_P (TREE_TYPE (exp)))
!     return 0;
  
    /* We are interested in the bare arrangement of bits, so strip everything
       that doesn't affect the machine mode.  However, record the type of the
--- 4256,4262 ----
       There are problems with FP fields since the type_for_size call
       below can fail for, e.g., XFmode.  */
    if (! INTEGRAL_TYPE_P (TREE_TYPE (exp)))
!     return NULL_TREE;
  
    /* We are interested in the bare arrangement of bits, so strip everything
       that doesn't affect the machine mode.  However, record the type of the
*************** decode_field_reference (location_t loc,
*** 4255,4261 ****
        exp = TREE_OPERAND (exp, 0);
        STRIP_NOPS (exp); STRIP_NOPS (and_mask);
        if (TREE_CODE (and_mask) != INTEGER_CST)
! 	return 0;
      }
  
    poly_int64 poly_bitsize, poly_bitpos;
--- 4272,4278 ----
        exp = TREE_OPERAND (exp, 0);
        STRIP_NOPS (exp); STRIP_NOPS (and_mask);
        if (TREE_CODE (and_mask) != INTEGER_CST)
! 	return NULL_TREE;
      }
  
    poly_int64 poly_bitsize, poly_bitpos;
*************** decode_field_reference (location_t loc,
*** 4271,4277 ****
        || (! AGGREGATE_TYPE_P (TREE_TYPE (inner))
  	  && compare_tree_int (TYPE_SIZE (TREE_TYPE (inner)),
  			       *pbitpos + *pbitsize) < 0))
!     return 0;
  
    *exp_ = exp;
  
--- 4288,4298 ----
        || (! AGGREGATE_TYPE_P (TREE_TYPE (inner))
  	  && compare_tree_int (TYPE_SIZE (TREE_TYPE (inner)),
  			       *pbitpos + *pbitsize) < 0))
!     return NULL_TREE;
! 
!   unsigned_type = lang_hooks.types.type_for_size (*pbitsize, 1);
!   if (unsigned_type == NULL_TREE)
!     return NULL_TREE;
  
    *exp_ = exp;
  
*************** decode_field_reference (location_t loc,
*** 4282,4288 ****
      *punsignedp = TYPE_UNSIGNED (outer_type);
  
    /* Compute the mask to access the bitfield.  */
-   unsigned_type = lang_hooks.types.type_for_size (*pbitsize, 1);
    precision = TYPE_PRECISION (unsigned_type);
  
    mask = build_int_cst_type (unsigned_type, -1);
--- 4303,4308 ----
*************** fold_range_test (location_t loc, enum tr
*** 5515,5526 ****
    /* On machines where the branch cost is expensive, if this is a
       short-circuited branch and the underlying object on both sides
       is the same, make a non-short-circuit operation.  */
!   else if (LOGICAL_OP_NON_SHORT_CIRCUIT
! 	   && !flag_sanitize_coverage
! 	   && lhs != 0 && rhs != 0
! 	   && (code == TRUTH_ANDIF_EXPR
! 	       || code == TRUTH_ORIF_EXPR)
! 	   && operand_equal_p (lhs, rhs, 0))
      {
        /* If simple enough, just rewrite.  Otherwise, make a SAVE_EXPR
  	 unless we are at top level or LHS contains a PLACEHOLDER_EXPR, in
--- 5535,5549 ----
    /* On machines where the branch cost is expensive, if this is a
       short-circuited branch and the underlying object on both sides
       is the same, make a non-short-circuit operation.  */
!   bool logical_op_non_short_circuit = LOGICAL_OP_NON_SHORT_CIRCUIT;
!   if (PARAM_VALUE (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT) != -1)
!     logical_op_non_short_circuit
!       = PARAM_VALUE (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT);
!   if (logical_op_non_short_circuit
!       && !flag_sanitize_coverage
!       && lhs != 0 && rhs != 0
!       && (code == TRUTH_ANDIF_EXPR || code == TRUTH_ORIF_EXPR)
!       && operand_equal_p (lhs, rhs, 0))
      {
        /* If simple enough, just rewrite.  Otherwise, make a SAVE_EXPR
  	 unless we are at top level or LHS contains a PLACEHOLDER_EXPR, in
*************** fold_truth_andor (location_t loc, enum t
*** 8165,8171 ****
    if ((tem = fold_truth_andor_1 (loc, code, type, arg0, arg1)) != 0)
      return tem;
  
!   if (LOGICAL_OP_NON_SHORT_CIRCUIT
        && !flag_sanitize_coverage
        && (code == TRUTH_AND_EXPR
            || code == TRUTH_ANDIF_EXPR
--- 8188,8198 ----
    if ((tem = fold_truth_andor_1 (loc, code, type, arg0, arg1)) != 0)
      return tem;
  
!   bool logical_op_non_short_circuit = LOGICAL_OP_NON_SHORT_CIRCUIT;
!   if (PARAM_VALUE (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT) != -1)
!     logical_op_non_short_circuit
!       = PARAM_VALUE (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT);
!   if (logical_op_non_short_circuit
        && !flag_sanitize_coverage
        && (code == TRUTH_AND_EXPR
            || code == TRUTH_ANDIF_EXPR
*************** fold_relational_const (enum tree_code co
*** 13994,14006 ****
  	    {
  	      tree elem0 = VECTOR_CST_ELT (op0, i);
  	      tree elem1 = VECTOR_CST_ELT (op1, i);
! 	      tree tmp = fold_relational_const (code, type, elem0, elem1);
  	      if (tmp == NULL_TREE)
  		return NULL_TREE;
  	      if (integer_zerop (tmp))
! 		return constant_boolean_node (false, type);
  	    }
! 	  return constant_boolean_node (true, type);
  	}
        tree_vector_builder elts;
        if (!elts.new_binary_operation (type, op0, op1, false))
--- 14021,14033 ----
  	    {
  	      tree elem0 = VECTOR_CST_ELT (op0, i);
  	      tree elem1 = VECTOR_CST_ELT (op1, i);
! 	      tree tmp = fold_relational_const (EQ_EXPR, type, elem0, elem1);
  	      if (tmp == NULL_TREE)
  		return NULL_TREE;
  	      if (integer_zerop (tmp))
! 		return constant_boolean_node (code == NE_EXPR, type);
  	    }
! 	  return constant_boolean_node (code == EQ_EXPR, type);
  	}
        tree_vector_builder elts;
        if (!elts.new_binary_operation (type, op0, op1, false))
*************** test_vector_folding ()
*** 14671,14676 ****
--- 14698,14704 ----
    tree type = build_vector_type (inner_type, 4);
    tree zero = build_zero_cst (type);
    tree one = build_one_cst (type);
+   tree index = build_index_vector (type, 0, 1);
  
    /* Verify equality tests that return a scalar boolean result.  */
    tree res_type = boolean_type_node;
*************** test_vector_folding ()
*** 14678,14683 ****
--- 14706,14718 ----
    ASSERT_TRUE (integer_nonzerop (fold_build2 (EQ_EXPR, res_type, zero, zero)));
    ASSERT_TRUE (integer_nonzerop (fold_build2 (NE_EXPR, res_type, zero, one)));
    ASSERT_FALSE (integer_nonzerop (fold_build2 (NE_EXPR, res_type, one, one)));
+   ASSERT_TRUE (integer_nonzerop (fold_build2 (NE_EXPR, res_type, index, one)));
+   ASSERT_FALSE (integer_nonzerop (fold_build2 (EQ_EXPR, res_type,
+ 					       index, one)));
+   ASSERT_FALSE (integer_nonzerop (fold_build2 (NE_EXPR, res_type,
+ 					      index, index)));
+   ASSERT_TRUE (integer_nonzerop (fold_build2 (EQ_EXPR, res_type,
+ 					      index, index)));
  }
  
  /* Verify folding of VEC_DUPLICATE_EXPRs.  */
diff -Nrcpad gcc-8.3.0/gcc/fortran/ChangeLog gcc-8.4.0/gcc/fortran/ChangeLog
*** gcc-8.3.0/gcc/fortran/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/fortran/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,525 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2020-02-19  Mark Eggleston  <markeggleston@gcc.gnu.org>
+ 
+ 	Backported from mainline
+ 	2020-02-18  Mark Eggleston  <markeggleston@gcc.gnu.org>
+ 
+ 	PR fortran/93714
+ 	* expr.c (gfc_check_pointer_assign): Move check for
+ 	matching character length to after checking the lvalue
+ 	attributes for target or pointer.
+ 
+ 2020-02-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2020-01-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/93463
+ 	* openmp.c (oacc_code_to_statement): Handle
+ 	EXEC_OACC_{ROUTINE,UPDATE,WAIT,CACHE,{ENTER,EXIT}_DATA,DECLARE}.
+ 
+ 	2020-01-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* parse.c (parse_omp_structured_block): Handle ST_OMP_TARGET_PARALLEL.
+ 	* trans-openmp.c (gfc_trans_omp_target)
+ 	<case EXEC_OMP_TARGET_PARALLEL>: Call pushlevel first.
+ 
+ 	PR fortran/93329
+ 	* openmp.c (omp_code_to_statement): Handle remaining EXEC_OMP_*
+ 	cases.
+ 
+ 	2019-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/92977
+ 	* frontend-passes.c (in_omp_atomic): New variable.
+ 	(cfe_expr_0, matmul_to_var_expr, matmul_temp_args,
+ 	inline_matmul_assign): Don't optimize in EXEC_OMP_ATOMIC.
+ 	(optimize_namespace): Clear in_omp_atomic.
+ 	(gfc_code_walker): Set in_omp_atomic for EXEC_OMP_ATOMIC, save/restore
+ 	it around.
+ 
+ 	2019-12-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/92899
+ 	* trans-openmp.c (gfc_trans_omp_atomic): For GFC_OMP_ATOMIC_SWAP,
+ 	do look through conversion on expr2 if any.
+ 
+ 	2019-12-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/92781
+ 	* trans-decl.c (gfc_get_symbol_decl): If sym->backend_decl is
+ 	current_function_decl, add length to current rather than parent
+ 	function and expect DECL_CONTEXT (length) to be current_function_decl.
+ 
+ 	2019-11-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/91944
+ 	* simplify.c (gfc_simplify_spread): Check gfc_init_expr_flag instead
+ 	of gfc_current_ns->sym_root->n.sym->attr.flavor == FL_PARAMETER.
+ 
+ 2020-02-03  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from mainline
+ 	2020-02-03  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR fortran/93541
+ 	* intrinisic.texi (OpenMP Modules OMP_LIB and OMP_LIB_KINDS):
+ 	Add undocumented parameters from omp_lib.f90.in.
+ 
+ 2020-01-10  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from mainline
+ 	2020-01-09  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR fortran/84135
+ 	* array.c (gfc_set_array_spec): Fix shifting of codimensions
+ 	when adding a dimension.
+ 	* decl.c (merge_array_spec): Ditto. Fix using correct codimensions.
+ 
+ 2019-12-30  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/92961
+ 	* gfortran.h (gfc_seen_div0): Add declaration.
+ 	* arith.h (gfc_seen_div0): Add definition.
+ 	(eval_intrinsic): For integer division by zero, set gfc_seen_div0.
+ 	* decl.c (variable_decl):  If resolution resp. simplification
+ 	fails for array spec and a division of zero error has been
+ 	seen, return MATCH_ERROR.
+ 
+ 2019-11-29  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backport from mainline
+ 	PR fortran/92629
+ 	* simplify.c (convert_mpz_to_unsigned): Skip assert for argument
+ 	range when -fno-range-check is specified.
+ 
+ 2019-11-10  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/92113
+ 	* trans-decl.c (gfc_get_symbol_decl): If __def_init actually
+ 	contains a value, put it into  the read-only section.
+ 
+ 2019-10-27  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	PR fortran/86248
+ 	* resolve.c (flag_fn_result_spec): Correct a typo before the
+ 	function declaration.
+ 	* trans-decl.c (gfc_sym_identifier): Boost the length of 'name'
+ 	to allow for all variants. Simplify the code by using a pointer
+ 	to the symbol's proc_name and taking the return out of each of
+ 	the conditional branches. Allow symbols with fn_result_spec set
+ 	that do not come from a procedure namespace and have a module
+ 	name to go through the non-fn_result_spec branch.
+ 
+ 2019-10-18  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/69455
+ 	* trans-decl.c (generate_local_decl): Avoid misconstructed
+ 	intrinsic modules in a BLOCK construct.
+ 
+ 2019-10-07  Thomas Koenig <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/84487
+ 	* trans-decl.c (gfc_get_symbol_decl): For __def_init, set
+ 	DECL_ARTIFICAL and do not set TREE_READONLY.
+ 
+ 2019-09-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	PR fortran/91588
+ 	* expr.c (check_inquiry): Remove extended component refs by
+ 	using symbol pointers. If a function argument is an associate
+ 	variable with a constant target, copy the target expression in
+ 	place of the argument expression. Check that the charlen is not
+ 	NULL before using the string length.
+ 
+ 2019-09-18  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/91550
+ 	* frontend-passes.c (do_subscript): If step equals
+ 	zero, a previuos error has been reported; do nothing
+ 	in this case.
+ 	* resolve.c (gfc_resolve_iterator): Move error checking
+ 	after type conversion.
+ 
+ 2019-09-15  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/91557
+ 	* trans-decl.c (generate_local_decl): Do not warn if the symbol
+ 	is artificial.
+ 	* trans-types.c (get_formal_from_actual_arglist): Set artificial
+ 	attribute on dummy arguments.
+ 
+ 2013-08-13  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/90563
+ 	* frontend-passes.c (insert_index): Suppress errors while
+ 	simplifying the resulting expression.
+ 
+ 2019-08-02  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 	Paul Thomas <pault@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/90786
+ 	PR fortran/90813
+ 	* trans-expr.c (pointer_assignment_is_proc_pointer) Remove as
+ 	it is very simple and only called from one place.
+ 	(gfc_trans_pointer_assignment): Rename non_proc_pointer_assign
+ 	as non_proc_ptr_assign. Assign to it directly, rather than call
+ 	to above, deleted function and use gfc_expr_attr instead of
+ 	only checking the reference chain.
+ 	* trans-decl.c (sym_identifier): New function.
+ 	(mangled_identifier): New function, doing most of the work
+ 	of gfc_sym_mangled_identifier.
+ 	(gfc_sym_mangled_identifier): Use mangled_identifier.  Add mangled
+ 	identifier to global symbol table.
+ 	(get_proc_pointer_decl): Use backend decl from global identifier
+ 	if present.
+ 
+ 2019-07-07  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/91077
+ 	* trans-array.c (gfc_conv_scalarized_array_ref) Delete code
+ 	that gave symbol backend decl for subref arrays.
+ 
+ 2019-06-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/90937
+ 	* trans-types.c (get_formal_from_actual_arglist): Get symbol from
+ 	current namespace so it will be freed later.  If symbol is of type
+ 	character, get an empty character length.
+ 
+ 2019-06-12  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 	Tomáš Trnka  <trnka@scm.com>
+ 
+ 	Backport from trunk
+ 	PR fortran/90744
+ 	* trans-types.c (get_formal_from_actual_arglist): Unset typespec
+ 	flags which make no sense for procedures without explicit
+ 	interface.
+ 
+ 2019-06-10  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/90498
+ 	* trans-stmt.c (trans_associate_var) Do not use the saved
+ 	descriptor if the expression is a COMPONENT_REF.
+ 
+ 2019-06-09  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/57284
+ 	* resolve.c (find_array_spec): If this is a class expression
+ 	and the symbol and component array specs are the same, this is
+ 	not an error.
+ 	*trans-intrinsic.c (gfc_conv_intrinsic_size): If a class symbol
+ 	argument, has no namespace, it has come from the interface
+ 	mapping and the _data component must be accessed directly.
+ 
+ 2019-05-30  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* lang.opt (ftail-call-workaround): Fix a typo.
+ 
+ 2019-05-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* lang.opt (ftail-call-workaround=): Fix a typo - lenghts to lengths.
+ 
+ 2019-05-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/90329
+ 	Backported from mainline
+ 	2019-05-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/90329
+ 	* lang.opt (fbroken-callers): Remove.
+ 	(ftail-call-workaround, ftail-call-workaround=): New options.
+ 	* gfortran.h (struct gfc_namespace): Add implicit_interface_calls.
+ 	* interface.c (gfc_procedure_use): Set implicit_interface_calls
+ 	for calls to implicit interface procedures.
+ 	* trans-decl.c (create_function_arglist): Use flag_tail_call_workaround
+ 	instead of flag_broken_callers.  If it is not 2, also require
+ 	sym->ns->implicit_interface_calls.
+ 	* invoke.texi (fbroken-callers): Remove documentation.
+ 	(ftail-call-workaround, ftail-call-workaround=): Document.
+ 
+ 	2019-05-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/90329
+ 	* invoke.texi: Document -fbroken-callers.
+ 	* lang.opt: Add -fbroken-callers.
+ 	* trans-decl.c (create_function_arglist): Only set
+ 	DECL_HIDDEN_STRING_LENGTH if flag_broken_callers is set.
+ 
+ 	2019-05-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/90329
+ 	* trans-decl.c (create_function_arglist): Set
+ 	DECL_HIDDEN_STRING_LENGTH on hidden string length PARM_DECLs if
+ 	len is constant.
+ 
+ 2019-04-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-03-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/89651
+ 	* trans-openmp.c (gfc_omp_clause_default_ctor): Set TREE_NO_WARNING
+ 	on decl if adding COND_EXPR for allocatable.
+ 	(gfc_omp_clause_copy_ctor): Set TREE_NO_WARNING on dest.
+ 
+ 2019-04-24  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	PR fortran/87127
+ 	* resolve.c (check_host_association): If an external function
+ 	is typed but not declared explicitly to be external, change the
+ 	old symbol from a variable to an external function.
+ 
+ 2019-04-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/87352
+ 	* gfortran.h (gfc_component): Add finalized field.
+ 	* class.c (finalize_component): If the component is already
+ 	finalized, return early.  Set component->finalized on exit.
+ 
+ 2019-04-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/89981
+ 	* resolve.c (resolve_global_procedure): If the global symbol is an
+ 	ENTRY, also look up its name among the entries.
+ 
+ 2019-04-10  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backport from trunk
+ 	PR fortran/89904
+ 	* check.c (gfc_check_transfer): Reject procedures as actual
+ 	arguments for SOURCE and MOLD of TRANSFER intrinsic.
+ 
+ 2019-03-31  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/83515
+ 	PR fortran/85797
+ 	* trans-types.c (gfc_typenode_for_spec): Handle conversion for
+ 	procedure pointers.
+ 	* target-memory.c (gfc_element_size): Handle size determination
+ 	for procedure pointers.
+ 
+ 2019-03-30  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/78865
+ 	Backport from trunk
+ 	* interface.c (compare_actual_formal): Change errors about
+ 	missing or extra to gfc_error_now to make sure they are issued.
+ 	Change "spec" to "specifier" in message.
+ 	* resolve.c (resolve_global_procedure): Also check for mismatching
+ 	interface with global symbols if the namespace has already been
+ 	resolved.
+ 
+ 2019-03-24  Janus Weil  <janus@gcc.gnu.org>
+ 
+ 	PR fortran/71861
+ 	Backport from trunk
+ 	* symbol.c (check_conflict): ABSTRACT attribute conflicts with
+ 	INTRINSIC attribute.
+ 
+ 2019-03-23  Thomas Koenig  <tkoeng@gcc.gnu.org>
+ 
+ 	PR fortran/68009
+ 	Backport from trunk
+ 	* iresolve.c: Include trans.h.
+ 	(gfc_resolve_fe_runtine_error): Set backend_decl on
+ 	resolved_sym.
+ 
+ 2019-03-17  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/84394
+ 	Backport from trunk
+ 	* symbol.c (gfc_add_subroutine): If we are encountering a
+ 	subrtoutine within a BLOCK DATA and the name starts with an
+ 	underscore, do not check.
+ 
+ 2019-03-16  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/66089
+ 	Backport from trunk
+ 	* trans-array.c (gfc_scalar_elemental_arg_saved_as_reference):
+ 	Return false if a scalar tempoary is needed.
+ 	(gfc_walk_variable_expr): Fix up class refs.
+ 
+ 2019-03-16  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/66695
+ 	PR fortran/77746
+ 	PR fortran/79485
+ 	Backport from trunk
+ 	* gfortran.h (gfc_symbol): Add bind_c component.
+ 	(gfc_get_gsymbol): Add argument bind_c.
+ 	* decl.c (add_global_entry): Add bind_c argument to
+ 	gfc_get_symbol.
+ 	* parse.c (parse_block_data): Likewise.
+ 	(parse_module): Likewise.
+ 	(add_global_procedure): Likewise.
+ 	(add_global_program): Likewise.
+ 	* resolve.c (resolve_common_blocks): Likewise.
+ 	(resolve_global_procedure): Likewise.
+ 	(gfc_verify_binding_labels): Likewise.
+ 	* symbol.c (gfc_get_gsymbol): Add argument bind_c. Set bind_c
+ 	in gsym.
+ 	* trans-decl.c (gfc_get_module_backend_decl): Add bind_c argument
+ 	to gfc_get_symbol.
+ 	(gfc_get_extern_function_decl): If the sym has a binding label
+ 	and it cannot be found in the global symbol tabel, it is the wrong
+ 	one and vice versa.
+ 
+ 2019-03-13  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/87673
+ 	Backport from trunk
+ 	* match.c (gfc_match_type_spec): Remove call to
+ 	gfc_resolve_expr for character length.
+ 
+ 2019-03-10  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/71544
+ 	Backport from trunk
+ 	* trans-types.c (gfc_typenode_for_spec) Set ts->is_c_interop of
+ 	C_PTR and C_FUNPTR.
+ 	(create_fn_spec): Mark argument as escaping if ts->is_c_interop is set.
+ 
+ 2019-03-10  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 	Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/87734
+ 	Backort from trunk
+ 	* symbol.c (gfc_add_procedure): Only throw an error if the
+ 	procedure has not been declared either PUBLIC or PRIVATE.
+ 	* resolve.c (is_illegal_recursion): Remove an assert().
+ 
+ 2019-03-06  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backport from trunk
+ 	PR fortran/71203
+ 	* expr.c (simplify_const_ref): Avoid null pointer dereference.
+ 
+ 2019-03-06  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/72714
+ 	Backport from trunk
+ 	* resolve.c (resolve_allocate_expr): Add some tests for coarrays.
+ 
+ 2019-03-03  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backport from trunk
+ 	PR fortran/89077
+ 	* decl.c (gfc_set_constant_character_len): Clear original string
+ 	representation after padding has been performed to target length.
+ 	* resolve.c (gfc_resolve_substring_charlen): Check substring
+ 	length for constantness prior to general calculation of length.
+ 
+ 2019-03-03  Harald Anlauf  <anlauf@gmx.de>
+ 	    Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/77583
+ 	* symbol.c (check_conflict): Check for valid procedure name
+ 	passed to error reporting routine.
+ 
+ 2019-03-03  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/89174
+ 	Backport from trunk
+ 	* trans-expr.c (gfc_find_and_cut_at_last_class_ref): Add is_mold
+ 	to garguments. If we are dealing with a MOLD, call
+ 	gfc_expr_to_initialize().
+ 	* trans-stmt.c (gfc_trans_allocate): For MOLD, pass is_mold=true
+ 	to gfc_find_and_cut_at_last_class_ref.
+ 	* trans.h (gfc_find_and_cut_at_last_class_ref): Add optional
+ 	argument is_mold with default false.
+ 
+ 2019-03-03  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/87689
+ 	Backport from trunk
+ 	* gfortran.dg/lto/20091028-1_0.f90: Add -Wno-lto-type-mismatch to
+ 	options.
+ 	* gfortran.dg/lto/20091028-2_0.f90: Likewise.
+ 	* gfortran.dg/lto/pr87689_0.f: New file.
+ 	* gfortran.dg/lto/pr87689_1.f: New file.
+ 	* gfortran.dg/altreturn_9_0.f90: New file.
+ 	* gfortran.dg/altreturn_9_1.f90: New file.
+ 
+ 2019-03-02  Jerry DeLisle <jvdelisle@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/84387
+ 	* trans-io.c (transfer_expr): Do not return if there are no
+ 	components to the derived type or class.
+ 
+ 2019-03-02  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backport from trunk
+ 	PR fortran/89516
+ 	* check.c (gfc_calculate_transfer_sizes): Correct checks for cases
+ 	where storage size of elements of MOLD is 0.
+ 
+ 	PR fortran/89492
+ 	* check.c (gfc_calculate_transfer_sizes): Handle cases where
+ 	storage size of elements of MOLD is 0.
+ 
+ 	PR fortran/89266
+ 	PR fortran/88326
+ 	* target-memory.c (gfc_element_size): Return false if element size
+ 	cannot be determined; element size is returned separately.
+ 	(gfc_target_expr_size): Return false if expression size cannot be
+ 	determined; expression size is returned separately.
+ 	* target-memory.h: Adjust prototypes.
+ 	* check.c (gfc_calculate_transfer_sizes): Adjust references to
+ 	gfc_target_expr_size, gfc_element_size.
+ 	* arith.c (hollerith2representation): Likewise.
+ 	* class.c (find_intrinsic_vtab): Likewise.
+ 	* simplify.c (gfc_simplify_sizeof): Likewise.
+ 
+ 2019-02-23  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/86119
+ 	Backport from trunk
+ 	* class.c (gfc_get_len_component): Add argument k for kind.
+ 	If the kind of the resulting expression is not equal to k,
+ 	convert it.
+ 	* gfortran.h (gfc_len_component): Adjust prototype.
+ 	* simplify.c (gfc_simplify_len): Pass kind to
+ 	gfc_get_len_component.
+ 
+ 2019-02-23  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/88117
+ 	* resolve.c (deferred_op_assign): Return if the lhs expression
+ 	has the pointer attribute.
+ 
+ 2019-02-22  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/71066
+ 	Backport from trunk
+ 	* trans-decl.c (generate_coarray_sym_init):  For an array
+ 	constructor in a DATA statement of a coarray variable, set the
+ 	rank to 1 to avoid confusion later on.  If the constructor
+ 	contains only one value, use that for initiailizig.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/gcc/fortran/arith.c gcc-8.4.0/gcc/fortran/arith.c
*** gcc-8.3.0/gcc/fortran/arith.c	Sat Feb  2 16:53:28 2019
--- gcc-8.4.0/gcc/fortran/arith.c	Wed Mar  4 08:30:00 2020
*************** along with GCC; see the file COPYING3.
*** 32,37 ****
--- 32,39 ----
  #include "target-memory.h"
  #include "constructor.h"
  
+ bool gfc_seen_div0;
+ 
  /* MPFR does not have a direct replacement for mpz_set_f() from GMP.
     It's easily implemented with a few calls though.  */
  
*************** eval_intrinsic (gfc_intrinsic_op op,
*** 1615,1620 ****
--- 1617,1626 ----
        gfc_error (gfc_arith_error (rc), &op1->where);
        if (rc == ARITH_OVERFLOW)
  	goto done;
+ 
+       if (rc == ARITH_DIV0 && op2->ts.type == BT_INTEGER)
+ 	gfc_seen_div0 = true;
+ 
        return NULL;
      }
  
*************** gfc_character2character (gfc_expr *src,
*** 2548,2557 ****
  static void
  hollerith2representation (gfc_expr *result, gfc_expr *src)
  {
!   int src_len, result_len;
  
    src_len = src->representation.length - src->ts.u.pad;
!   result_len = gfc_target_expr_size (result);
  
    if (src_len > result_len)
      {
--- 2554,2563 ----
  static void
  hollerith2representation (gfc_expr *result, gfc_expr *src)
  {
!   size_t src_len, result_len;
  
    src_len = src->representation.length - src->ts.u.pad;
!   gfc_target_expr_size (result, &result_len);
  
    if (src_len > result_len)
      {
diff -Nrcpad gcc-8.3.0/gcc/fortran/array.c gcc-8.4.0/gcc/fortran/array.c
*** gcc-8.3.0/gcc/fortran/array.c	Sun Dec 16 17:00:33 2018
--- gcc-8.4.0/gcc/fortran/array.c	Wed Mar  4 08:30:00 2020
*************** gfc_set_array_spec (gfc_symbol *sym, gfc
*** 849,855 ****
        sym->as->cray_pointee = as->cray_pointee;
        sym->as->cp_was_assumed = as->cp_was_assumed;
  
!       for (i = 0; i < sym->as->corank; i++)
  	{
  	  sym->as->lower[as->rank + i] = sym->as->lower[i];
  	  sym->as->upper[as->rank + i] = sym->as->upper[i];
--- 849,855 ----
        sym->as->cray_pointee = as->cray_pointee;
        sym->as->cp_was_assumed = as->cp_was_assumed;
  
!       for (i = sym->as->corank - 1; i >= 0; i--)
  	{
  	  sym->as->lower[as->rank + i] = sym->as->lower[i];
  	  sym->as->upper[as->rank + i] = sym->as->upper[i];
diff -Nrcpad gcc-8.3.0/gcc/fortran/check.c gcc-8.4.0/gcc/fortran/check.c
*** gcc-8.3.0/gcc/fortran/check.c	Fri May 11 17:29:14 2018
--- gcc-8.4.0/gcc/fortran/check.c	Wed Mar  4 08:30:00 2020
*************** gfc_calculate_transfer_sizes (gfc_expr *
*** 5413,5428 ****
      return false;
  
    /* Calculate the size of the source.  */
!   *source_size = gfc_target_expr_size (source);
!   if (*source_size == 0)
      return false;
  
    /* Determine the size of the element.  */
!   result_elt_size = gfc_element_size (mold);
!   if (result_elt_size == 0)
      return false;
  
!   if (mold->expr_type == EXPR_ARRAY || mold->rank || size)
      {
        int result_length;
  
--- 5413,5453 ----
      return false;
  
    /* Calculate the size of the source.  */
!   if (!gfc_target_expr_size (source, source_size))
      return false;
  
    /* Determine the size of the element.  */
!   if (!gfc_element_size (mold, &result_elt_size))
      return false;
  
!   /* If the storage size of SOURCE is greater than zero and MOLD is an array,
!    * a scalar with the type and type parameters of MOLD shall not have a
!    * storage size equal to zero.
!    * If MOLD is a scalar and SIZE is absent, the result is a scalar.
!    * If MOLD is an array and SIZE is absent, the result is an array and of
!    * rank one. Its size is as small as possible such that its physical
!    * 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%> "
! 		 "argument has size greater than 0", &mold->where);
!       return false;
!     }
! 
!   if (result_elt_size == 0 && *source_size == 0 && !size)
!     {
!       *result_size = 0;
!       if (result_length_p)
! 	*result_length_p = 0;
!       return true;
!     }
! 
!   if ((result_elt_size > 0 && (mold->expr_type == EXPR_ARRAY || mold->rank))
!       || size)
      {
        int result_length;
  
*************** gfc_check_transfer (gfc_expr *source, gf
*** 5452,5457 ****
--- 5477,5502 ----
    size_t source_size;
    size_t result_size;
  
+   /* SOURCE shall be a scalar or array of any type.  */
+   if (source->ts.type == BT_PROCEDURE
+       && source->symtree->n.sym->attr.subroutine == 1)
+     {
+       gfc_error ("%<SOURCE%> argument of %<TRANSFER%> intrinsic at %L "
+                  "must not be a %s", &source->where,
+ 		 gfc_basic_typename (source->ts.type));
+       return false;
+     }
+ 
+   /* MOLD shall be a scalar or array of any type.  */
+   if (mold->ts.type == BT_PROCEDURE
+       && mold->symtree->n.sym->attr.subroutine == 1)
+     {
+       gfc_error ("%<MOLD%> argument of %<TRANSFER%> intrinsic at %L "
+                  "must not be a %s", &mold->where,
+ 		 gfc_basic_typename (mold->ts.type));
+       return false;
+     }
+ 
    if (mold->ts.type == BT_HOLLERITH)
      {
        gfc_error ("%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be"
*************** gfc_check_transfer (gfc_expr *source, gf
*** 5459,5464 ****
--- 5504,5511 ----
        return false;
      }
  
+   /* SIZE (optional) shall be an integer scalar.  The corresponding actual
+      argument shall not be an optional dummy argument.  */
    if (size != NULL)
      {
        if (!type_check (size, 2, BT_INTEGER))
diff -Nrcpad gcc-8.3.0/gcc/fortran/class.c gcc-8.4.0/gcc/fortran/class.c
*** gcc-8.3.0/gcc/fortran/class.c	Thu Mar  1 08:56:31 2018
--- gcc-8.4.0/gcc/fortran/class.c	Wed Mar  4 08:30:00 2020
*************** gfc_intrinsic_hash_value (gfc_typespec *
*** 561,567 ****
     ref to the _len component.  */
  
  gfc_expr *
! gfc_get_len_component (gfc_expr *e)
  {
    gfc_expr *ptr;
    gfc_ref *ref, **last;
--- 561,567 ----
     ref to the _len component.  */
  
  gfc_expr *
! gfc_get_len_component (gfc_expr *e, int k)
  {
    gfc_expr *ptr;
    gfc_ref *ref, **last;
*************** gfc_get_len_component (gfc_expr *e)
*** 586,591 ****
--- 586,599 ----
      }
    /* And replace if with a ref to the _len component.  */
    gfc_add_len_component (ptr);
+   if (k != ptr->ts.kind)
+     {
+       gfc_typespec ts;
+       gfc_clear_ts (&ts);
+       ts.type = BT_INTEGER;
+       ts.kind = k;
+       gfc_convert_type_warn (ptr, &ts, 2, 0);
+     }
    return ptr;
  }
  
*************** finalize_component (gfc_expr *expr, gfc_
*** 899,904 ****
--- 907,915 ----
    if (!comp_is_finalizable (comp))
      return;
  
+   if (comp->finalized)
+     return;
+ 
    e = gfc_copy_expr (expr);
    if (!e->ref)
      e->ref = ref = gfc_get_ref ();
*************** finalize_component (gfc_expr *expr, gfc_
*** 1026,1031 ****
--- 1037,1043 ----
  			    sub_ns);
        gfc_free_expr (e);
      }
+   comp->finalized = true;
  }
  
  
*************** find_intrinsic_vtab (gfc_typespec *ts)
*** 2661,2666 ****
--- 2673,2679 ----
  	      gfc_namespace *sub_ns;
  	      gfc_namespace *contained;
  	      gfc_expr *e;
+ 	      size_t e_size;
  
  	      gfc_get_symbol (name, ns, &vtype);
  	      if (!gfc_add_flavor (&vtype->attr, FL_DERIVED, NULL,
*************** find_intrinsic_vtab (gfc_typespec *ts)
*** 2695,2705 ****
  	      e = gfc_get_expr ();
  	      e->ts = *ts;
  	      e->expr_type = EXPR_VARIABLE;
  	      c->initializer = gfc_get_int_expr (gfc_size_kind,
  						 NULL,
! 						 ts->type == BT_CHARACTER
! 						 ? ts->kind
! 						 : gfc_element_size (e));
  	      gfc_free_expr (e);
  
  	      /* Add component _extends.  */
--- 2708,2720 ----
  	      e = gfc_get_expr ();
  	      e->ts = *ts;
  	      e->expr_type = EXPR_VARIABLE;
+ 	      if (ts->type == BT_CHARACTER)
+ 		e_size = ts->kind;
+ 	      else
+ 		gfc_element_size (e, &e_size);
  	      c->initializer = gfc_get_int_expr (gfc_size_kind,
  						 NULL,
! 						 e_size);
  	      gfc_free_expr (e);
  
  	      /* Add component _extends.  */
diff -Nrcpad gcc-8.3.0/gcc/fortran/decl.c gcc-8.4.0/gcc/fortran/decl.c
*** gcc-8.3.0/gcc/fortran/decl.c	Sun Feb 10 20:01:15 2019
--- gcc-8.4.0/gcc/fortran/decl.c	Wed Mar  4 08:30:00 2020
*************** done:
*** 838,845 ****
  static bool
  merge_array_spec (gfc_array_spec *from, gfc_array_spec *to, bool copy)
  {
-   int i, j;
- 
    if ((from->type == AS_ASSUMED_RANK && to->corank)
        || (to->type == AS_ASSUMED_RANK && from->corank))
      {
--- 838,843 ----
*************** merge_array_spec (gfc_array_spec *from,
*** 854,871 ****
        to->cray_pointee = from->cray_pointee;
        to->cp_was_assumed = from->cp_was_assumed;
  
!       for (i = 0; i < to->corank; i++)
  	{
  	  /* Do not exceed the limits on lower[] and upper[].  gfortran
  	     cleans up elsewhere.  */
! 	  j = from->rank + i;
  	  if (j >= GFC_MAX_DIMENSIONS)
  	    break;
  
  	  to->lower[j] = to->lower[i];
  	  to->upper[j] = to->upper[i];
  	}
!       for (i = 0; i < from->rank; i++)
  	{
  	  if (copy)
  	    {
--- 852,869 ----
        to->cray_pointee = from->cray_pointee;
        to->cp_was_assumed = from->cp_was_assumed;
  
!       for (int i = to->corank - 1; i >= 0; i--)
  	{
  	  /* Do not exceed the limits on lower[] and upper[].  gfortran
  	     cleans up elsewhere.  */
! 	  int j = from->rank + i;
  	  if (j >= GFC_MAX_DIMENSIONS)
  	    break;
  
  	  to->lower[j] = to->lower[i];
  	  to->upper[j] = to->upper[i];
  	}
!       for (int i = 0; i < from->rank; i++)
  	{
  	  if (copy)
  	    {
*************** merge_array_spec (gfc_array_spec *from,
*** 884,906 ****
        to->corank = from->corank;
        to->cotype = from->cotype;
  
!       for (i = 0; i < from->corank; i++)
  	{
  	  /* Do not exceed the limits on lower[] and upper[].  gfortran
  	     cleans up elsewhere.  */
! 	  j = to->rank + i;
  	  if (j >= GFC_MAX_DIMENSIONS)
  	    break;
  
  	  if (copy)
  	    {
! 	      to->lower[j] = gfc_copy_expr (from->lower[i]);
! 	      to->upper[j] = gfc_copy_expr (from->upper[i]);
  	    }
  	  else
  	    {
! 	      to->lower[j] = from->lower[i];
! 	      to->upper[j] = from->upper[i];
  	    }
  	}
      }
--- 882,905 ----
        to->corank = from->corank;
        to->cotype = from->cotype;
  
!       for (int i = 0; i < from->corank; i++)
  	{
  	  /* Do not exceed the limits on lower[] and upper[].  gfortran
  	     cleans up elsewhere.  */
! 	  int k = from->rank + i;
! 	  int j = to->rank + i;
  	  if (j >= GFC_MAX_DIMENSIONS)
  	    break;
  
  	  if (copy)
  	    {
! 	      to->lower[j] = gfc_copy_expr (from->lower[k]);
! 	      to->upper[j] = gfc_copy_expr (from->upper[k]);
  	    }
  	  else
  	    {
! 	      to->lower[j] = from->lower[k];
! 	      to->upper[j] = from->upper[k];
  	    }
  	}
      }
*************** gfc_set_constant_character_len (gfc_char
*** 1678,1683 ****
--- 1677,1690 ----
        free (expr->value.character.string);
        expr->value.character.string = s;
        expr->value.character.length = len;
+       /* If explicit representation was given, clear it
+ 	 as it is no longer needed after padding.  */
+       if (expr->representation.length)
+ 	{
+ 	  expr->representation.length = 0;
+ 	  free (expr->representation.string);
+ 	  expr->representation.string = NULL;
+ 	}
      }
  }
  
*************** variable_decl (int elem)
*** 2415,2420 ****
--- 2422,2429 ----
  	  goto cleanup;
  	}
  
+       gfc_seen_div0 = false;
+       
        /* F2018:C830 (R816) An explicit-shape-spec whose bounds are not
  	 constant expressions shall appear only in a subprogram, derived
  	 type definition, BLOCK construct, or interface body.  */
*************** variable_decl (int elem)
*** 2431,2437 ****
  	  for (int i = 0; i < as->rank; i++)
  	    {
  	      e = gfc_copy_expr (as->lower[i]);
! 	      gfc_resolve_expr (e);
  	      gfc_simplify_expr (e, 0);
  	      if (e && (e->expr_type != EXPR_CONSTANT))
  		{
--- 2440,2451 ----
  	  for (int i = 0; i < as->rank; i++)
  	    {
  	      e = gfc_copy_expr (as->lower[i]);
! 	      if (!gfc_resolve_expr (e) && gfc_seen_div0)
! 		{
! 		  m = MATCH_ERROR;
! 		  goto cleanup;
! 		}
! 
  	      gfc_simplify_expr (e, 0);
  	      if (e && (e->expr_type != EXPR_CONSTANT))
  		{
*************** variable_decl (int elem)
*** 2441,2447 ****
  	      gfc_free_expr (e);
  
  	      e = gfc_copy_expr (as->upper[i]);
! 	      gfc_resolve_expr (e);
  	      gfc_simplify_expr (e, 0);
  	      if (e && (e->expr_type != EXPR_CONSTANT))
  		{
--- 2455,2466 ----
  	      gfc_free_expr (e);
  
  	      e = gfc_copy_expr (as->upper[i]);
! 	      if (!gfc_resolve_expr (e)  && gfc_seen_div0)
! 		{
! 		  m = MATCH_ERROR;
! 		  goto cleanup;
! 		}
! 
  	      gfc_simplify_expr (e, 0);
  	      if (e && (e->expr_type != EXPR_CONSTANT))
  		{
*************** variable_decl (int elem)
*** 2467,2473 ****
  	      if (e->expr_type != EXPR_CONSTANT)
  		{
  		  n = gfc_copy_expr (e);
! 		  gfc_simplify_expr (n, 1);
  		  if (n->expr_type == EXPR_CONSTANT)
  		    gfc_replace_expr (e, n);
  		  else
--- 2486,2497 ----
  	      if (e->expr_type != EXPR_CONSTANT)
  		{
  		  n = gfc_copy_expr (e);
! 		  if (!gfc_simplify_expr (n, 1)  && gfc_seen_div0) 
! 		    {
! 		      m = MATCH_ERROR;
! 		      goto cleanup;
! 		    }
! 
  		  if (n->expr_type == EXPR_CONSTANT)
  		    gfc_replace_expr (e, n);
  		  else
*************** variable_decl (int elem)
*** 2477,2483 ****
  	      if (e->expr_type != EXPR_CONSTANT)
  		{
  		  n = gfc_copy_expr (e);
! 		  gfc_simplify_expr (n, 1);
  		  if (n->expr_type == EXPR_CONSTANT)
  		    gfc_replace_expr (e, n);
  		  else
--- 2501,2512 ----
  	      if (e->expr_type != EXPR_CONSTANT)
  		{
  		  n = gfc_copy_expr (e);
! 		  if (!gfc_simplify_expr (n, 1)  && gfc_seen_div0) 
! 		    {
! 		      m = MATCH_ERROR;
! 		      goto cleanup;
! 		    }
! 		  
  		  if (n->expr_type == EXPR_CONSTANT)
  		    gfc_replace_expr (e, n);
  		  else
*************** variable_decl (int elem)
*** 2805,2810 ****
--- 2834,2840 ----
  
  cleanup:
    /* Free stuff up and return.  */
+   gfc_seen_div0 = false;
    gfc_free_expr (initializer);
    gfc_free_array_spec (as);
  
*************** gfc_match_decl_type_spec (gfc_typespec *
*** 3891,3897 ****
        return MATCH_YES;
      }
  
- 
    m = gfc_match (" type (");
    matched_type = (m == MATCH_YES);
    if (matched_type)
--- 3921,3926 ----
*************** gfc_match_decl_type_spec (gfc_typespec *
*** 3940,3946 ****
  	m = MATCH_YES;
  
        if (matched_type && m == MATCH_YES && gfc_match_char (')') != MATCH_YES)
! 	m = MATCH_ERROR;
  
        return m;
      }
--- 3969,3978 ----
  	m = MATCH_YES;
  
        if (matched_type && m == MATCH_YES && gfc_match_char (')') != MATCH_YES)
! 	{
! 	  gfc_error ("Malformed type-spec at %C");
! 	  return MATCH_ERROR;
! 	}
  
        return m;
      }
*************** gfc_match_decl_type_spec (gfc_typespec *
*** 3963,3970 ****
  	  && !gfc_notify_std (GFC_STD_F2008, "TYPE with "
  			      "intrinsic-type-spec at %C"))
  	return MATCH_ERROR;
        if (matched_type && gfc_match_char (')') != MATCH_YES)
! 	return MATCH_ERROR;
  
        ts->type = BT_REAL;
        ts->kind = gfc_default_double_kind;
--- 3995,4006 ----
  	  && !gfc_notify_std (GFC_STD_F2008, "TYPE with "
  			      "intrinsic-type-spec at %C"))
  	return MATCH_ERROR;
+ 
        if (matched_type && gfc_match_char (')') != MATCH_YES)
! 	{
! 	  gfc_error ("Malformed type-spec at %C");
! 	  return MATCH_ERROR;
! 	}
  
        ts->type = BT_REAL;
        ts->kind = gfc_default_double_kind;
*************** gfc_match_decl_type_spec (gfc_typespec *
*** 3994,4000 ****
  	return MATCH_ERROR;
  
        if (matched_type && gfc_match_char (')') != MATCH_YES)
! 	return MATCH_ERROR;
  
        ts->type = BT_COMPLEX;
        ts->kind = gfc_default_double_kind;
--- 4030,4039 ----
  	return MATCH_ERROR;
  
        if (matched_type && gfc_match_char (')') != MATCH_YES)
! 	{
! 	  gfc_error ("Malformed type-spec at %C");
! 	  return MATCH_ERROR;
! 	}
  
        ts->type = BT_COMPLEX;
        ts->kind = gfc_default_double_kind;
*************** gfc_match_decl_type_spec (gfc_typespec *
*** 4015,4021 ****
        if (m == MATCH_ERROR)
  	return m;
  
!     m = gfc_match_char (')');
      }
  
    if (m != MATCH_YES)
--- 4054,4066 ----
        if (m == MATCH_ERROR)
  	return m;
  
!       gfc_gobble_whitespace ();
!       if (gfc_peek_ascii_char () != ')')
! 	{
! 	  gfc_error ("Malformed type-spec at %C");
! 	  return MATCH_ERROR;
! 	}
!       m = gfc_match_char (')'); /* Burn closing ')'.  */
      }
  
    if (m != MATCH_YES)
*************** add_global_entry (const char *name, cons
*** 7156,7162 ****
       name is a global identifier.  */
    if (!binding_label || gfc_notification_std (GFC_STD_F2008))
      {
!       s = gfc_get_gsymbol (name);
  
        if (s->defined || (s->type != GSYM_UNKNOWN && s->type != type))
  	{
--- 7201,7207 ----
       name is a global identifier.  */
    if (!binding_label || gfc_notification_std (GFC_STD_F2008))
      {
!       s = gfc_get_gsymbol (name, false);
  
        if (s->defined || (s->type != GSYM_UNKNOWN && s->type != type))
  	{
*************** add_global_entry (const char *name, cons
*** 7178,7184 ****
        && (!gfc_notification_std (GFC_STD_F2008)
  	  || strcmp (name, binding_label) != 0))
      {
!       s = gfc_get_gsymbol (binding_label);
  
        if (s->defined || (s->type != GSYM_UNKNOWN && s->type != type))
  	{
--- 7223,7229 ----
        && (!gfc_notification_std (GFC_STD_F2008)
  	  || strcmp (name, binding_label) != 0))
      {
!       s = gfc_get_gsymbol (binding_label, true);
  
        if (s->defined || (s->type != GSYM_UNKNOWN && s->type != type))
  	{
diff -Nrcpad gcc-8.3.0/gcc/fortran/expr.c gcc-8.4.0/gcc/fortran/expr.c
*** gcc-8.3.0/gcc/fortran/expr.c	Sun Feb 10 18:30:01 2019
--- gcc-8.4.0/gcc/fortran/expr.c	Wed Mar  4 08:30:00 2020
*************** simplify_const_ref (gfc_expr *p)
*** 1784,1791 ****
  			string_len = 0;
  
  		      if (!p->ts.u.cl)
! 			p->ts.u.cl = gfc_new_charlen (p->symtree->n.sym->ns,
! 						      NULL);
  		      else
  			gfc_free_expr (p->ts.u.cl->length);
  
--- 1784,1797 ----
  			string_len = 0;
  
  		      if (!p->ts.u.cl)
! 			{
! 			  if (p->symtree)
! 			    p->ts.u.cl = gfc_new_charlen (p->symtree->n.sym->ns,
! 							  NULL);
! 			  else
! 			    p->ts.u.cl = gfc_new_charlen (gfc_current_ns,
! 							  NULL);
! 			}
  		      else
  			gfc_free_expr (p->ts.u.cl->length);
  
*************** check_inquiry (gfc_expr *e, int not_rest
*** 2390,2395 ****
--- 2396,2403 ----
  
    int i = 0;
    gfc_actual_arglist *ap;
+   gfc_symbol *sym;
+   gfc_symbol *asym;
  
    if (!e->value.function.isym
        || !e->value.function.isym->inquiry)
*************** check_inquiry (gfc_expr *e, int not_rest
*** 2399,2418 ****
    if (e->symtree == NULL)
      return MATCH_NO;
  
!   if (e->symtree->n.sym->from_intmod)
      {
!       if (e->symtree->n.sym->from_intmod == INTMOD_ISO_FORTRAN_ENV
! 	  && e->symtree->n.sym->intmod_sym_id != ISOFORTRAN_COMPILER_OPTIONS
! 	  && e->symtree->n.sym->intmod_sym_id != ISOFORTRAN_COMPILER_VERSION)
  	return MATCH_NO;
  
!       if (e->symtree->n.sym->from_intmod == INTMOD_ISO_C_BINDING
! 	  && e->symtree->n.sym->intmod_sym_id != ISOCBINDING_C_SIZEOF)
  	return MATCH_NO;
      }
    else
      {
!       name = e->symtree->n.sym->name;
  
        functions = (gfc_option.warn_std & GFC_STD_F2003)
  		? inquiry_func_f2003 : inquiry_func_f95;
--- 2407,2428 ----
    if (e->symtree == NULL)
      return MATCH_NO;
  
!   sym = e->symtree->n.sym;
! 
!   if (sym->from_intmod)
      {
!       if (sym->from_intmod == INTMOD_ISO_FORTRAN_ENV
! 	  && sym->intmod_sym_id != ISOFORTRAN_COMPILER_OPTIONS
! 	  && sym->intmod_sym_id != ISOFORTRAN_COMPILER_VERSION)
  	return MATCH_NO;
  
!       if (sym->from_intmod == INTMOD_ISO_C_BINDING
! 	  && sym->intmod_sym_id != ISOCBINDING_C_SIZEOF)
  	return MATCH_NO;
      }
    else
      {
!       name = sym->name;
  
        functions = (gfc_option.warn_std & GFC_STD_F2003)
  		? inquiry_func_f2003 : inquiry_func_f95;
*************** check_inquiry (gfc_expr *e, int not_rest
*** 2434,2474 ****
        if (!ap->expr)
  	continue;
  
        if (ap->expr->ts.type == BT_UNKNOWN)
  	{
! 	  if (ap->expr->symtree->n.sym->ts.type == BT_UNKNOWN
! 	      && !gfc_set_default_type (ap->expr->symtree->n.sym, 0, gfc_current_ns))
  	    return MATCH_NO;
  
! 	  ap->expr->ts = ap->expr->symtree->n.sym->ts;
  	}
  
! 	/* Assumed character length will not reduce to a constant expression
! 	   with LEN, as required by the standard.  */
! 	if (i == 5 && not_restricted && ap->expr->symtree
! 	    && ap->expr->symtree->n.sym->ts.type == BT_CHARACTER
! 	    && (ap->expr->symtree->n.sym->ts.u.cl->length == NULL
! 		|| ap->expr->symtree->n.sym->ts.deferred))
! 	  {
! 	    gfc_error ("Assumed or deferred character length variable %qs "
! 			"in constant expression at %L",
! 			ap->expr->symtree->n.sym->name,
! 			&ap->expr->where);
! 	      return MATCH_ERROR;
! 	  }
! 	else if (not_restricted && !gfc_check_init_expr (ap->expr))
! 	  return MATCH_ERROR;
  
! 	if (not_restricted == 0
! 	      && ap->expr->expr_type != EXPR_VARIABLE
! 	      && !check_restricted (ap->expr))
  	  return MATCH_ERROR;
  
! 	if (not_restricted == 0
! 	    && ap->expr->expr_type == EXPR_VARIABLE
! 	    && ap->expr->symtree->n.sym->attr.dummy
! 	    && ap->expr->symtree->n.sym->attr.optional)
! 	  return MATCH_NO;
      }
  
    return MATCH_YES;
--- 2444,2491 ----
        if (!ap->expr)
  	continue;
  
+       asym = ap->expr->symtree ? ap->expr->symtree->n.sym : NULL;
+ 
        if (ap->expr->ts.type == BT_UNKNOWN)
  	{
! 	  if (asym && asym->ts.type == BT_UNKNOWN
! 	      && !gfc_set_default_type (asym, 0, gfc_current_ns))
  	    return MATCH_NO;
  
! 	  ap->expr->ts = asym->ts;
  	}
  
!       if (asym && asym->assoc && asym->assoc->target
! 	  && asym->assoc->target->expr_type == EXPR_CONSTANT)
! 	{
! 	  gfc_free_expr (ap->expr);
! 	  ap->expr = gfc_copy_expr (asym->assoc->target);
! 	}
  
!       /* Assumed character length will not reduce to a constant expression
! 	 with LEN, as required by the standard.  */
!       if (i == 5 && not_restricted && asym
! 	  && asym->ts.type == BT_CHARACTER
! 	  && ((asym->ts.u.cl && asym->ts.u.cl->length == NULL)
! 	      || asym->ts.deferred))
! 	{
! 	  gfc_error ("Assumed or deferred character length variable %qs "
! 		     "in constant expression at %L",
! 		      asym->name, &ap->expr->where);
  	  return MATCH_ERROR;
+ 	}
+       else if (not_restricted && !gfc_check_init_expr (ap->expr))
+ 	return MATCH_ERROR;
  
!       if (not_restricted == 0
! 	  && ap->expr->expr_type != EXPR_VARIABLE
! 	  && !check_restricted (ap->expr))
! 	return MATCH_ERROR;
! 
!       if (not_restricted == 0
! 	  && ap->expr->expr_type == EXPR_VARIABLE
! 	  && asym->attr.dummy && asym->attr.optional)
! 	return MATCH_NO;
      }
  
    return MATCH_YES;
*************** gfc_check_pointer_assign (gfc_expr *lval
*** 3878,3890 ****
    if (rvalue->expr_type == EXPR_NULL)
      return true;
  
-   if (lvalue->ts.type == BT_CHARACTER)
-     {
-       bool t = gfc_check_same_strlen (lvalue, rvalue, "pointer assignment");
-       if (!t)
- 	return false;
-     }
- 
    if (rvalue->expr_type == EXPR_VARIABLE && is_subref_array (rvalue))
      lvalue->symtree->n.sym->attr.subref_array_pointer = 1;
  
--- 3895,3900 ----
*************** gfc_check_pointer_assign (gfc_expr *lval
*** 3940,3945 ****
--- 3950,3962 ----
  	}
      }
  
+   if (lvalue->ts.type == BT_CHARACTER)
+     {
+       bool t = gfc_check_same_strlen (lvalue, rvalue, "pointer assignment");
+       if (!t)
+ 	return false;
+     }
+ 
    if (is_pure && gfc_impure_variable (rvalue->symtree->n.sym))
      {
        gfc_error ("Bad target in pointer assignment in PURE "
diff -Nrcpad gcc-8.3.0/gcc/fortran/frontend-passes.c gcc-8.4.0/gcc/fortran/frontend-passes.c
*** gcc-8.3.0/gcc/fortran/frontend-passes.c	Sat Dec 22 19:19:14 2018
--- gcc-8.4.0/gcc/fortran/frontend-passes.c	Wed Mar  4 08:30:00 2020
*************** static int forall_level;
*** 93,98 ****
--- 93,102 ----
  
  static bool in_omp_workshare;
  
+ /* Keep track of whether we are within an OMP atomic.  */
+ 
+ static bool in_omp_atomic;
+ 
  /* Keep track of whether we are within a WHERE statement.  */
  
  static bool in_where;
*************** cfe_expr_0 (gfc_expr **e, int *walk_subt
*** 864,872 ****
    gfc_expr *newvar;
    gfc_expr **ei, **ej;
  
!   /* Don't do this optimization within OMP workshare or ASSOC lists.  */
  
!   if (in_omp_workshare || in_assoc_list)
      {
        *walk_subtrees = 0;
        return 0;
--- 868,876 ----
    gfc_expr *newvar;
    gfc_expr **ei, **ej;
  
!   /* Don't do this optimization within OMP workshare/atomic or ASSOC lists.  */
  
!   if (in_omp_workshare || in_omp_atomic || in_assoc_list)
      {
        *walk_subtrees = 0;
        return 0;
*************** optimize_namespace (gfc_namespace *ns)
*** 1415,1420 ****
--- 1419,1425 ----
    iterator_level = 0;
    in_assoc_list = false;
    in_omp_workshare = false;
+   in_omp_atomic = false;
  
    if (flag_frontend_optimize)
      {
*************** insert_index (gfc_expr *e, gfc_symbol *s
*** 2461,2467 ****
--- 2466,2477 ----
    data.sym = sym;
    mpz_init_set (data.val, val);
    gfc_expr_walker (&n, callback_insert_index, (void *) &data);
+ 
+   /* Suppress errors here - we could get errors here such as an
+      out of bounds access for arrays, see PR 90563.  */
+   gfc_push_suppress_errors ();
    gfc_simplify_expr (n, 0);
+   gfc_pop_suppress_errors ();
  
    if (n->expr_type == EXPR_CONSTANT)
      {
*************** do_subscript (gfc_expr **e)
*** 2511,2516 ****
--- 2521,2527 ----
  	      bool have_do_start, have_do_end;
  	      bool error_not_proven;
  	      int warn;
+ 	      int sgn;
  
  	      dl = lp->c;
  	      if (dl == NULL)
*************** do_subscript (gfc_expr **e)
*** 2539,2545 ****
  		 Do not warn in this case.  */
  	  
  	      if (dl->ext.iterator->step->expr_type == EXPR_CONSTANT)
! 		mpz_init_set (do_step, dl->ext.iterator->step->value.integer);
  	      else
  		continue;
  
--- 2550,2565 ----
  		 Do not warn in this case.  */
  	  
  	      if (dl->ext.iterator->step->expr_type == EXPR_CONSTANT)
! 		{
! 		  sgn = mpz_cmp_ui (dl->ext.iterator->step->value.integer, 0);
! 		  /* This can happen, but then the error has been
! 		     reported previusly.  */
! 		  if (sgn == 0)
! 		    continue;
! 
! 		  mpz_init_set (do_step, dl->ext.iterator->step->value.integer);
! 		}
! 
  	      else
  		continue;
  
*************** do_subscript (gfc_expr **e)
*** 2563,2568 ****
--- 2583,2598 ----
  	      if (!have_do_start && !have_do_end)
  		return 0;
  
+ 	      /* No warning inside a zero-trip loop.  */
+ 	      if (have_do_start && have_do_end)
+ 		{
+ 		  int cmp;
+ 
+ 		  cmp = mpz_cmp (do_end, do_start);
+ 		  if ((sgn > 0 && cmp < 0) || (sgn < 0 && cmp > 0))
+ 		    break;
+ 		}
+ 
  	      /* May have to correct the end value if the step does not equal
  		 one.  */
  	      if (have_do_start && have_do_end && mpz_cmp_ui (do_step, 1) != 0)
*************** matmul_to_var_expr (gfc_expr **ep, int *
*** 2726,2732 ****
      return 0;
  
    if (forall_level > 0 || iterator_level > 0 || in_omp_workshare
!       || in_where || in_assoc_list)
      return 0;
  
    /* Check if this is already in the form c = matmul(a,b).  */
--- 2756,2762 ----
      return 0;
  
    if (forall_level > 0 || iterator_level > 0 || in_omp_workshare
!       || in_omp_atomic || in_where || in_assoc_list)
      return 0;
  
    /* Check if this is already in the form c = matmul(a,b).  */
*************** matmul_temp_args (gfc_code **c, int *wal
*** 2788,2794 ****
      return 0;
  
    if (forall_level > 0 || iterator_level > 0 || in_omp_workshare
!       || in_where)
      return 0;
  
    /* This has some duplication with inline_matmul_assign.  This
--- 2818,2824 ----
      return 0;
  
    if (forall_level > 0 || iterator_level > 0 || in_omp_workshare
!       || in_omp_atomic || in_where)
      return 0;
  
    /* This has some duplication with inline_matmul_assign.  This
*************** inline_matmul_assign (gfc_code **c, int
*** 3718,3724 ****
    /* For now don't do anything in OpenMP workshare, it confuses
       its translation, which expects only the allowed statements in there.
       We should figure out how to parallelize this eventually.  */
!   if (in_omp_workshare)
      return 0;
  
    expr1 = co->expr1;
--- 3748,3754 ----
    /* For now don't do anything in OpenMP workshare, it confuses
       its translation, which expects only the allowed statements in there.
       We should figure out how to parallelize this eventually.  */
!   if (in_omp_workshare || in_omp_atomic)
      return 0;
  
    expr1 = co->expr1;
*************** gfc_code_walker (gfc_code **c, walk_code
*** 4530,4535 ****
--- 4560,4566 ----
  	  gfc_code *co;
  	  gfc_association_list *alist;
  	  bool saved_in_omp_workshare;
+ 	  bool saved_in_omp_atomic;
  	  bool saved_in_where;
  
  	  /* There might be statement insertions before the current code,
*************** gfc_code_walker (gfc_code **c, walk_code
*** 4537,4542 ****
--- 4568,4574 ----
  
  	  co = *c;
  	  saved_in_omp_workshare = in_omp_workshare;
+ 	  saved_in_omp_atomic = in_omp_atomic;
  	  saved_in_where = in_where;
  
  	  switch (co->op)
*************** gfc_code_walker (gfc_code **c, walk_code
*** 4734,4739 ****
--- 4766,4775 ----
  	      WALK_SUBEXPR (co->ext.dt->extra_comma);
  	      break;
  
+ 	    case EXEC_OMP_ATOMIC:
+ 	      in_omp_atomic = true;
+ 	      break;
+ 
  	    case EXEC_OMP_PARALLEL:
  	    case EXEC_OMP_PARALLEL_DO:
  	    case EXEC_OMP_PARALLEL_DO_SIMD:
*************** gfc_code_walker (gfc_code **c, walk_code
*** 4851,4856 ****
--- 4887,4893 ----
  	    select_level --;
    
  	  in_omp_workshare = saved_in_omp_workshare;
+ 	  in_omp_atomic = saved_in_omp_atomic;
  	  in_where = saved_in_where;
  	}
      }
diff -Nrcpad gcc-8.3.0/gcc/fortran/gfortran.h gcc-8.4.0/gcc/fortran/gfortran.h
*** gcc-8.3.0/gcc/fortran/gfortran.h	Sun Feb 10 18:30:01 2019
--- gcc-8.4.0/gcc/fortran/gfortran.h	Wed Mar  4 08:30:00 2020
*************** typedef struct gfc_component
*** 1080,1085 ****
--- 1080,1086 ----
    struct gfc_typebound_proc *tb;
    /* When allocatable/pointer and in a coarray the associated token.  */
    tree caf_token;
+   bool finalized;
  }
  gfc_component;
  
*************** typedef struct gfc_namespace
*** 1856,1861 ****
--- 1857,1865 ----
  
    /* Set to 1 for !$ACC ROUTINE namespaces.  */
    unsigned oacc_routine:1;
+ 
+   /* Set to 1 if there are any calls to procedures with implicit interface.  */
+   unsigned implicit_interface_calls:1;
  }
  gfc_namespace;
  
*************** typedef struct gfc_gsymbol
*** 1883,1888 ****
--- 1887,1893 ----
    enum gfc_symbol_type type;
  
    int defined, used;
+   bool bind_c;
    locus where;
    gfc_namespace *ns;
  }
*************** void gfc_arith_done_1 (void);
*** 2900,2905 ****
--- 2905,2912 ----
  arith gfc_check_integer_range (mpz_t p, int kind);
  bool gfc_check_character_range (gfc_char_t, int);
  
+ extern bool gfc_seen_div0;
+ 
  /* trans-types.c */
  bool gfc_check_any_c_kind (gfc_typespec *);
  int gfc_validate_kind (bt, int, bool);
*************** void gfc_enforce_clean_symbol_state (voi
*** 3059,3065 ****
  void gfc_free_dt_list (void);
  
  
! gfc_gsymbol *gfc_get_gsymbol (const char *);
  gfc_gsymbol *gfc_find_gsymbol (gfc_gsymbol *, const char *);
  gfc_gsymbol *gfc_find_case_gsymbol (gfc_gsymbol *, const char *);
  
--- 3066,3072 ----
  void gfc_free_dt_list (void);
  
  
! gfc_gsymbol *gfc_get_gsymbol (const char *, bool bind_c);
  gfc_gsymbol *gfc_find_gsymbol (gfc_gsymbol *, const char *);
  gfc_gsymbol *gfc_find_case_gsymbol (gfc_gsymbol *, const char *);
  
*************** bool gfc_is_class_scalar_expr (gfc_expr
*** 3426,3432 ****
  bool gfc_is_class_container_ref (gfc_expr *e);
  gfc_expr *gfc_class_initializer (gfc_typespec *, gfc_expr *);
  unsigned int gfc_hash_value (gfc_symbol *);
! gfc_expr *gfc_get_len_component (gfc_expr *e);
  bool gfc_build_class_symbol (gfc_typespec *, symbol_attribute *,
  			     gfc_array_spec **);
  gfc_symbol *gfc_find_derived_vtab (gfc_symbol *);
--- 3433,3439 ----
  bool gfc_is_class_container_ref (gfc_expr *e);
  gfc_expr *gfc_class_initializer (gfc_typespec *, gfc_expr *);
  unsigned int gfc_hash_value (gfc_symbol *);
! gfc_expr *gfc_get_len_component (gfc_expr *e, int);
  bool gfc_build_class_symbol (gfc_typespec *, symbol_attribute *,
  			     gfc_array_spec **);
  gfc_symbol *gfc_find_derived_vtab (gfc_symbol *);
diff -Nrcpad gcc-8.3.0/gcc/fortran/gfortran.info gcc-8.4.0/gcc/fortran/gfortran.info
*** gcc-8.3.0/gcc/fortran/gfortran.info	Fri Feb 22 14:35:30 2019
--- gcc-8.4.0/gcc/fortran/gfortran.info	Wed Mar  4 08:45:27 2020
*************** _Interoperability Options_
*** 493,499 ****
  _Code Generation Options_
       *Note Options for code generation conventions: Code Gen Options.
            -faggressive-function-elimination -fblas-matmul-limit=N
!           -fbounds-check -fcheck-array-temporaries
            -fcheck=<ALL|ARRAY-TEMPS|BOUNDS|DO|MEM|POINTER|RECURSION>
            -fcoarray=<NONE|SINGLE|LIB> -fexternal-blas -ff2c
            -ffrontend-loop-interchange
--- 493,500 ----
  _Code Generation Options_
       *Note Options for code generation conventions: Code Gen Options.
            -faggressive-function-elimination -fblas-matmul-limit=N
!           -fbounds-check -ftail-call-workaround -ftail-call-workaround=N
!           -fcheck-array-temporaries
            -fcheck=<ALL|ARRAY-TEMPS|BOUNDS|DO|MEM|POINTER|RECURSION>
            -fcoarray=<NONE|SINGLE|LIB> -fexternal-blas -ff2c
            -ffrontend-loop-interchange
*************** the other form by either removing 'no-'
*** 1604,1609 ****
--- 1605,1641 ----
  '-fbounds-check'
       Deprecated alias for '-fcheck=bounds'.
  
+ '-ftail-call-workaround'
+ '-ftail-call-workaround=N'
+      Some C interfaces to Fortran codes violate the gfortran ABI by
+      omitting the hidden character length arguments as described in
+      *Note Argument passing conventions::.  This can lead to crashes
+      because pushing arguments for tail calls can overflow the stack.
+ 
+      To provide a workaround for existing binary packages, this option
+      disables tail call optimization for gfortran procedures with
+      character arguments.  With '-ftail-call-workaround=2' tail call
+      optimization is disabled in all gfortran procedures with character
+      arguments, with '-ftail-call-workaround=1' or equivalent
+      '-ftail-call-workaround' only in gfortran procedures with character
+      arguments that call implicitly prototyped procedures.
+ 
+      Using this option can lead to problems including crashes due to
+      insufficient stack space.
+ 
+      It is _very strongly_ recommended to fix the code in question.  The
+      '-fc-prototypes-external' option can be used to generate prototypes
+      which conform to gfortran's ABI, for inclusion in the source code.
+ 
+      Support for this option will likely be withdrawn in a future
+      release of gfortran.
+ 
+      The negative form, '-fno-tail-call-workaround' or equivalent
+      '-ftail-call-workaround=0', can be used to disable this option.
+ 
+      Default is currently '-ftail-call-workaround', this will change in
+      future releases.
+ 
  '-fcheck-array-temporaries'
       Deprecated alias for '-fcheck=array-temps'.
  
*************** v4.5 (http://www.openmp.org/wp-content/u
*** 19277,19282 ****
--- 19309,19315 ----
  constants:
  
  'omp_lock_kind'
+ 'omp_lock_hint_kind'
  'omp_nest_lock_kind'
  'omp_proc_bind_kind'
  'omp_sched_kind'
*************** is '201511'.
*** 19303,19308 ****
--- 19336,19350 ----
  'omp_proc_bind_close'
  'omp_proc_bind_spread'
  
+    The following scalar integer named constants are of the kind
+ 'omp_lock_hint_kind':
+ 
+ 'omp_lock_hint_none'
+ 'omp_lock_hint_uncontended'
+ 'omp_lock_hint_contended'
+ 'omp_lock_hint_nonspeculative'
+ 'omp_lock_hint_speculative'
+ 
  
  File: gfortran.info,  Node: OpenACC Module OPENACC,  Prev: OpenMP Modules OMP_LIB and OMP_LIB_KINDS,  Up: Intrinsic Modules
  
*************** both forms.
*** 20790,20803 ****
                                                                (line 154)
  * dU:                                    Preprocessing Options.
                                                                (line  44)
! * faggressive-function-elimination:      Code Gen Options.    (line 367)
! * falign-commons:                        Code Gen Options.    (line 340)
  * fall-intrinsics:                       Fortran Dialect Options.
                                                                (line  17)
! * fblas-matmul-limit:                    Code Gen Options.    (line 274)
  * fbounds-check:                         Code Gen Options.    (line 198)
  * fcheck:                                Code Gen Options.    (line 141)
! * fcheck-array-temporaries:              Code Gen Options.    (line 201)
  * fcoarray:                              Code Gen Options.    (line 127)
  * fconvert=CONVERSION:                   Runtime Options.     (line  10)
  * fcray-pointer:                         Fortran Dialect Options.
--- 20832,20845 ----
                                                                (line 154)
  * dU:                                    Preprocessing Options.
                                                                (line  44)
! * faggressive-function-elimination:      Code Gen Options.    (line 398)
! * falign-commons:                        Code Gen Options.    (line 371)
  * fall-intrinsics:                       Fortran Dialect Options.
                                                                (line  17)
! * fblas-matmul-limit:                    Code Gen Options.    (line 305)
  * fbounds-check:                         Code Gen Options.    (line 198)
  * fcheck:                                Code Gen Options.    (line 141)
! * fcheck-array-temporaries:              Code Gen Options.    (line 232)
  * fcoarray:                              Code Gen Options.    (line 127)
  * fconvert=CONVERSION:                   Runtime Options.     (line  10)
  * fcray-pointer:                         Fortran Dialect Options.
*************** both forms.
*** 20831,20837 ****
  * fdump-fortran-optimized:               Debugging Options.   (line  18)
  * fdump-fortran-original:                Debugging Options.   (line  10)
  * fdump-parse-tree:                      Debugging Options.   (line  25)
! * fexternal-blas:                        Code Gen Options.    (line 266)
  * ff2c:                                  Code Gen Options.    (line  25)
  * ffixed-form:                           Fortran Dialect Options.
                                                                (line  11)
--- 20873,20879 ----
  * fdump-fortran-optimized:               Debugging Options.   (line  18)
  * fdump-fortran-original:                Debugging Options.   (line  10)
  * fdump-parse-tree:                      Debugging Options.   (line  25)
! * fexternal-blas:                        Code Gen Options.    (line 297)
  * ff2c:                                  Code Gen Options.    (line  25)
  * ffixed-form:                           Fortran Dialect Options.
                                                                (line  11)
*************** both forms.
*** 20845,20878 ****
                                                                (line 104)
  * fimplicit-none:                        Fortran Dialect Options.
                                                                (line 115)
! * finit-character:                       Code Gen Options.    (line 309)
! * finit-derived:                         Code Gen Options.    (line 309)
! * finit-integer:                         Code Gen Options.    (line 309)
! * finit-local-zero:                      Code Gen Options.    (line 309)
! * finit-logical:                         Code Gen Options.    (line 309)
! * finit-real:                            Code Gen Options.    (line 309)
! * finline-matmul-limit:                  Code Gen Options.    (line 285)
  * finteger-4-integer-8:                  Fortran Dialect Options.
                                                                (line 194)
  * fintrinsic-modules-path DIR:           Directory Options.   (line  36)
! * fmax-array-constructor:                Code Gen Options.    (line 204)
  * fmax-errors=N:                         Error and Warning Options.
                                                                (line  27)
  * fmax-identifier-length=N:              Fortran Dialect Options.
                                                                (line 111)
! * fmax-stack-var-size:                   Code Gen Options.    (line 222)
  * fmax-subrecord-length=LENGTH:          Runtime Options.     (line  29)
  * fmodule-private:                       Fortran Dialect Options.
                                                                (line  86)
  * fno-automatic:                         Code Gen Options.    (line  15)
  * fno-backtrace:                         Debugging Options.   (line  69)
! * fno-protect-parens:                    Code Gen Options.    (line 352)
  * fno-underscoring:                      Code Gen Options.    (line  54)
  * fopenacc:                              Fortran Dialect Options.
                                                                (line 124)
  * fopenmp:                               Fortran Dialect Options.
                                                                (line 135)
! * fpack-derived:                         Code Gen Options.    (line 244)
  * fpp:                                   Preprocessing Options.
                                                                (line  12)
  * frange-check:                          Fortran Dialect Options.
--- 20887,20920 ----
                                                                (line 104)
  * fimplicit-none:                        Fortran Dialect Options.
                                                                (line 115)
! * finit-character:                       Code Gen Options.    (line 340)
! * finit-derived:                         Code Gen Options.    (line 340)
! * finit-integer:                         Code Gen Options.    (line 340)
! * finit-local-zero:                      Code Gen Options.    (line 340)
! * finit-logical:                         Code Gen Options.    (line 340)
! * finit-real:                            Code Gen Options.    (line 340)
! * finline-matmul-limit:                  Code Gen Options.    (line 316)
  * finteger-4-integer-8:                  Fortran Dialect Options.
                                                                (line 194)
  * fintrinsic-modules-path DIR:           Directory Options.   (line  36)
! * fmax-array-constructor:                Code Gen Options.    (line 235)
  * fmax-errors=N:                         Error and Warning Options.
                                                                (line  27)
  * fmax-identifier-length=N:              Fortran Dialect Options.
                                                                (line 111)
! * fmax-stack-var-size:                   Code Gen Options.    (line 253)
  * fmax-subrecord-length=LENGTH:          Runtime Options.     (line  29)
  * fmodule-private:                       Fortran Dialect Options.
                                                                (line  86)
  * fno-automatic:                         Code Gen Options.    (line  15)
  * fno-backtrace:                         Debugging Options.   (line  69)
! * fno-protect-parens:                    Code Gen Options.    (line 383)
  * fno-underscoring:                      Code Gen Options.    (line  54)
  * fopenacc:                              Fortran Dialect Options.
                                                                (line 124)
  * fopenmp:                               Fortran Dialect Options.
                                                                (line 135)
! * fpack-derived:                         Code Gen Options.    (line 275)
  * fpp:                                   Preprocessing Options.
                                                                (line  12)
  * frange-check:                          Fortran Dialect Options.
*************** both forms.
*** 20889,20905 ****
                                                                (line 209)
  * freal-8-real-4:                        Fortran Dialect Options.
                                                                (line 209)
! * frealloc-lhs:                          Code Gen Options.    (line 361)
  * frecord-marker=LENGTH:                 Runtime Options.     (line  21)
! * frecursive:                            Code Gen Options.    (line 299)
! * frepack-arrays:                        Code Gen Options.    (line 250)
! * frontend-loop-interchange:             Code Gen Options.    (line 384)
! * frontend-optimize:                     Code Gen Options.    (line 375)
  * fsecond-underscore:                    Code Gen Options.    (line 110)
! * fshort-enums:                          Code Gen Options.    (line 260)
  * fshort-enums <1>:                      Fortran 2003 status. (line  93)
  * fsign-zero:                            Runtime Options.     (line  34)
! * fstack-arrays:                         Code Gen Options.    (line 236)
  * fsyntax-only:                          Error and Warning Options.
                                                                (line  33)
  * ftest-forall-temp:                     Fortran Dialect Options.
--- 20931,20947 ----
                                                                (line 209)
  * freal-8-real-4:                        Fortran Dialect Options.
                                                                (line 209)
! * frealloc-lhs:                          Code Gen Options.    (line 392)
  * frecord-marker=LENGTH:                 Runtime Options.     (line  21)
! * frecursive:                            Code Gen Options.    (line 330)
! * frepack-arrays:                        Code Gen Options.    (line 281)
! * frontend-loop-interchange:             Code Gen Options.    (line 415)
! * frontend-optimize:                     Code Gen Options.    (line 406)
  * fsecond-underscore:                    Code Gen Options.    (line 110)
! * fshort-enums:                          Code Gen Options.    (line 291)
  * fshort-enums <1>:                      Fortran 2003 status. (line  93)
  * fsign-zero:                            Runtime Options.     (line  34)
! * fstack-arrays:                         Code Gen Options.    (line 267)
  * fsyntax-only:                          Error and Warning Options.
                                                                (line  33)
  * ftest-forall-temp:                     Fortran Dialect Options.
*************** both forms.
*** 20934,20939 ****
--- 20976,20982 ----
  * static-libgfortran:                    Link Options.        (line  11)
  * std=STD option:                        Fortran Dialect Options.
                                                                (line 220)
+ * tail-call-workaround:                  Code Gen Options.    (line 202)
  * UNAME:                                 Preprocessing Options.
                                                                (line 185)
  * undef:                                 Preprocessing Options.
*************** Keyword Index
*** 21060,21066 ****
                                                                (line  71)
  * alignment of COMMON blocks:            Error and Warning Options.
                                                                (line 226)
! * alignment of COMMON blocks <1>:        Code Gen Options.    (line 340)
  * ALL:                                   ALL.                 (line   6)
  * all warnings:                          Error and Warning Options.
                                                                (line  62)
--- 21103,21109 ----
                                                                (line  71)
  * alignment of COMMON blocks:            Error and Warning Options.
                                                                (line 226)
! * alignment of COMMON blocks <1>:        Code Gen Options.    (line 371)
  * ALL:                                   ALL.                 (line   6)
  * all warnings:                          Error and Warning Options.
                                                                (line  62)
*************** Keyword Index
*** 21574,21580 ****
  * elapsed time <1>:                      SECNDS.              (line   6)
  * elapsed time <2>:                      SECOND.              (line   6)
  * Elimination of functions with identical argument lists: Code Gen Options.
!                                                               (line 367)
  * ENCODE:                                ENCODE and DECODE statements.
                                                                (line   6)
  * ENUM statement:                        Fortran 2003 status. (line  93)
--- 21617,21623 ----
  * elapsed time <1>:                      SECNDS.              (line   6)
  * elapsed time <2>:                      SECOND.              (line   6)
  * Elimination of functions with identical argument lists: Code Gen Options.
!                                                               (line 398)
  * ENCODE:                                ENCODE and DECODE statements.
                                                                (line   6)
  * ENUM statement:                        Fortran 2003 status. (line  93)
*************** Keyword Index
*** 21694,21700 ****
  * FPUTC:                                 FPUTC.               (line   6)
  * FRACTION:                              FRACTION.            (line   6)
  * FREE:                                  FREE.                (line   6)
! * Front-end optimization:                Code Gen Options.    (line 375)
  * FSEEK:                                 FSEEK.               (line   6)
  * FSTAT:                                 FSTAT.               (line   6)
  * FTELL:                                 FTELL.               (line   6)
--- 21737,21743 ----
  * FPUTC:                                 FPUTC.               (line   6)
  * FRACTION:                              FRACTION.            (line   6)
  * FREE:                                  FREE.                (line   6)
! * Front-end optimization:                Code Gen Options.    (line 406)
  * FSEEK:                                 FSEEK.               (line   6)
  * FSTAT:                                 FSTAT.               (line   6)
  * FTELL:                                 FTELL.               (line   6)
*************** Keyword Index
*** 21913,21919 ****
  * login name:                            GETLOG.              (line   6)
  * LOG_GAMMA:                             LOG_GAMMA.           (line   6)
  * LONG:                                  LONG.                (line   6)
! * loop interchange, Fortran:             Code Gen Options.    (line 384)
  * loop interchange, warning:             Error and Warning Options.
                                                                (line 135)
  * LSHIFT:                                LSHIFT.              (line   6)
--- 21956,21962 ----
  * login name:                            GETLOG.              (line   6)
  * LOG_GAMMA:                             LOG_GAMMA.           (line   6)
  * LONG:                                  LONG.                (line   6)
! * loop interchange, Fortran:             Code Gen Options.    (line 415)
  * loop interchange, warning:             Error and Warning Options.
                                                                (line 135)
  * LSHIFT:                                LSHIFT.              (line   6)
*************** Keyword Index
*** 22132,22138 ****
  * RANK:                                  RANK.                (line   6)
  * rank:                                  RANK.                (line   6)
  * re-association of parenthesized expressions: Code Gen Options.
!                                                               (line 352)
  * read character, stream mode:           FGET.                (line   6)
  * read character, stream mode <1>:       FGETC.               (line   6)
  * READONLY:                              Extended I/O specifiers.
--- 22175,22181 ----
  * RANK:                                  RANK.                (line   6)
  * rank:                                  RANK.                (line   6)
  * re-association of parenthesized expressions: Code Gen Options.
!                                                               (line 383)
  * read character, stream mode:           FGET.                (line   6)
  * read character, stream mode <1>:       FGETC.               (line   6)
  * READONLY:                              Extended I/O specifiers.
*************** Keyword Index
*** 22146,22152 ****
  * real number, relative spacing <1>:     SPACING.             (line   6)
  * real number, scale:                    SCALE.               (line   6)
  * real number, set exponent:             SET_EXPONENT.        (line   6)
! * Reallocate the LHS in assignments:     Code Gen Options.    (line 361)
  * Reallocate the LHS in assignments, notification: Error and Warning Options.
                                                                (line 236)
  * REALPART:                              REAL.                (line   6)
--- 22189,22195 ----
  * real number, relative spacing <1>:     SPACING.             (line   6)
  * real number, scale:                    SCALE.               (line   6)
  * real number, set exponent:             SET_EXPONENT.        (line   6)
! * Reallocate the LHS in assignments:     Code Gen Options.    (line 392)
  * Reallocate the LHS in assignments, notification: Error and Warning Options.
                                                                (line 236)
  * REALPART:                              REAL.                (line   6)
*************** Keyword Index
*** 22157,22163 ****
  * Reduction, XOR:                        PARITY.              (line   6)
  * remainder:                             MOD.                 (line   6)
  * RENAME:                                RENAME.              (line   6)
! * repacking arrays:                      Code Gen Options.    (line 250)
  * REPEAT:                                REPEAT.              (line   6)
  * RESHAPE:                               RESHAPE.             (line   6)
  * REWIND:                                Read/Write after EOF marker.
--- 22200,22206 ----
  * Reduction, XOR:                        PARITY.              (line   6)
  * remainder:                             MOD.                 (line   6)
  * RENAME:                                RENAME.              (line   6)
! * repacking arrays:                      Code Gen Options.    (line 281)
  * REPEAT:                                REPEAT.              (line   6)
  * RESHAPE:                               RESHAPE.             (line   6)
  * REWIND:                                Read/Write after EOF marker.
*************** Keyword Index
*** 22266,22272 ****
                                                                (line   6)
  * STRUCTURE:                             STRUCTURE and RECORD.
                                                                (line   6)
! * structure packing:                     Code Gen Options.    (line 244)
  * subrecord:                             File format of unformatted sequential files.
                                                                (line   6)
  * subscript checking:                    Code Gen Options.    (line 141)
--- 22309,22315 ----
                                                                (line   6)
  * STRUCTURE:                             STRUCTURE and RECORD.
                                                                (line   6)
! * structure packing:                     Code Gen Options.    (line 275)
  * subrecord:                             File format of unformatted sequential files.
                                                                (line   6)
  * subscript checking:                    Code Gen Options.    (line 141)
*************** Node: Standards15191
*** 22495,22937 ****
  Node: Varying Length Character Strings16578
  Node: Invoking GNU Fortran17330
  Node: Option Summary19164
! Node: Fortran Dialect Options23044
! Node: Preprocessing Options34610
! Node: Error and Warning Options42851
! Node: Debugging Options54600
! Node: Directory Options58629
! Node: Link Options60064
! Node: Runtime Options60690
! Node: Code Gen Options62597
! Node: Interoperability Options80464
! Node: Environment Variables81504
! Node: Runtime82117
! Node: TMPDIR83151
! Node: GFORTRAN_STDIN_UNIT83821
! Node: GFORTRAN_STDOUT_UNIT84203
! Node: GFORTRAN_STDERR_UNIT84604
! Node: GFORTRAN_UNBUFFERED_ALL85006
! Node: GFORTRAN_UNBUFFERED_PRECONNECTED85537
! Node: GFORTRAN_SHOW_LOCUS86181
! Node: GFORTRAN_OPTIONAL_PLUS86677
! Node: GFORTRAN_LIST_SEPARATOR87155
! Node: GFORTRAN_CONVERT_UNIT87763
! Node: GFORTRAN_ERROR_BACKTRACE90618
! Node: Fortran standards status91175
! Node: Fortran 2003 status91467
! Node: Fortran 2008 status96706
! Node: TS 29113 status102080
! Node: TS 18508 status103079
! Node: Fortran 2018 status103894
! Node: Compiler Characteristics104513
! Node: KIND Type Parameters105186
! Node: Internal representation of LOGICAL variables106614
! Node: Thread-safety of the runtime library107474
! Node: Data consistency and durability109877
! Node: Files opened without an explicit ACTION= specifier112990
! Node: File operations on symbolic links113681
! Node: File format of unformatted sequential files114801
! Node: Extensions117148
! Node: Extensions implemented in GNU Fortran117753
! Node: Old-style kind specifications119649
! Node: Old-style variable initialization120751
! Node: Extensions to namelist122063
! Node: X format descriptor without count field124366
! Node: Commas in FORMAT specifications124893
! Node: Missing period in FORMAT specifications125410
! Node: I/O item lists125972
! Node: Q exponent-letter126357
! Node: BOZ literal constants126955
! Node: Real array indices129534
! Node: Unary operators129833
! Node: Implicitly convert LOGICAL and INTEGER values130247
! Node: Hollerith constants support131206
! Node: Cray pointers132978
! Node: CONVERT specifier138425
! Node: OpenMP140420
! Node: OpenACC142678
! Node: Argument list functions143987
! Node: Read/Write after EOF marker145630
! Node: STRUCTURE and RECORD146233
! Node: UNION and MAP151320
! Node: Type variants for integer intrinsics154288
! Node: AUTOMATIC and STATIC attributes156183
! Node: Extended math intrinsics157717
! Node: Form feed as whitespace159513
! Node: TYPE as an alias for PRINT160059
! Node: %LOC as an rvalue160524
! Node: .XOR. operator161171
! Node: Bitwise logical operators161571
! Node: Extended I/O specifiers163072
! Node: Legacy PARAMETER statements166792
! Node: Default exponents167397
! Node: Extensions not implemented in GNU Fortran167749
! Node: ENCODE and DECODE statements168694
! Node: Variable FORMAT expressions170025
! Node: Alternate complex function syntax171130
! Node: Volatile COMMON blocks171680
! Node: OPEN( ... NAME=)172182
! Node: Mixed-Language Programming172584
! Node: Interoperability with C173164
! Node: Intrinsic Types174498
! Node: Derived Types and struct175494
! Node: Interoperable Global Variables176852
! Node: Interoperable Subroutines and Functions178127
! Node: Working with Pointers181921
! Node: Further Interoperability of Fortran with C186397
! Node: GNU Fortran Compiler Directives189751
! Node: ATTRIBUTES directive190041
! Node: UNROLL directive193229
! Node: Non-Fortran Main Program193736
! Node: _gfortran_set_args195924
! Node: _gfortran_set_options196862
! Node: _gfortran_set_convert200469
! Node: _gfortran_set_record_marker201337
! Node: _gfortran_set_fpe202147
! Node: _gfortran_set_max_subrecord_length203345
! Node: Naming and argument-passing conventions204268
! Node: Naming conventions204987
! Node: Argument passing conventions206459
! Node: Coarray Programming211764
! Node: Type and enum ABI Documentation212011
! Node: caf_token_t212309
! Node: caf_register_t212545
! Node: caf_deregister_t213756
! Node: caf_reference_t214258
! Node: caf_team_t218582
! Node: Function ABI Documentation218881
! Node: _gfortran_caf_init221331
! Node: _gfortran_caf_finish222757
! Node: _gfortran_caf_this_image223696
! Node: _gfortran_caf_num_images224451
! Node: _gfortran_caf_image_status225562
! Node: _gfortran_caf_failed_images226682
! Node: _gfortran_caf_stopped_images227852
! Node: _gfortran_caf_register229025
! Node: _gfortran_caf_deregister233207
! Node: _gfortran_caf_is_present234813
! Node: _gfortran_caf_send235892
! Node: _gfortran_caf_get239082
! Node: _gfortran_caf_sendget242163
! Node: _gfortran_caf_send_by_ref246074
! Node: _gfortran_caf_get_by_ref249683
! Node: _gfortran_caf_sendget_by_ref253202
! Node: _gfortran_caf_lock257498
! Node: _gfortran_caf_unlock259284
! Node: _gfortran_caf_event_post260765
! Node: _gfortran_caf_event_wait262214
! Node: _gfortran_caf_event_query264321
! Node: _gfortran_caf_sync_all265652
! Node: _gfortran_caf_sync_images266580
! Node: _gfortran_caf_sync_memory268115
! Node: _gfortran_caf_error_stop269107
! Node: _gfortran_caf_error_stop_str269711
! Node: _gfortran_caf_fail_image270416
! Node: _gfortran_caf_atomic_define270952
! Node: _gfortran_caf_atomic_ref272267
! Node: _gfortran_caf_atomic_cas273571
! Node: _gfortran_caf_atomic_op275332
! Node: _gfortran_caf_co_broadcast277434
! Node: _gfortran_caf_co_max278539
! Node: _gfortran_caf_co_min280165
! Node: _gfortran_caf_co_sum281785
! Node: _gfortran_caf_co_reduce283325
! Node: Intrinsic Procedures285969
! Node: Introduction to Intrinsics303025
! Node: ABORT305375
! Node: ABS306120
! Node: ACCESS308070
! Node: ACHAR310000
! Node: ACOS311204
! Node: ACOSD312490
! Node: ACOSH313802
! Node: ADJUSTL314798
! Node: ADJUSTR315740
! Node: AIMAG316690
! Node: AINT318062
! Node: ALARM319668
! Node: ALL321300
! Node: ALLOCATED323224
! Node: AND324363
! Node: ANINT325662
! Node: ANY327159
! Node: ASIN329085
! Node: ASIND330360
! Node: ASINH331658
! Node: ASSOCIATED332664
! Node: ATAN335675
! Node: ATAND337125
! Node: ATAN2338595
! Node: ATAN2D340458
! Node: ATANH342432
! Node: ATOMIC_ADD343438
! Node: ATOMIC_AND344970
! Node: ATOMIC_CAS346558
! Node: ATOMIC_DEFINE348417
! Node: ATOMIC_FETCH_ADD350136
! Node: ATOMIC_FETCH_AND351936
! Node: ATOMIC_FETCH_OR353726
! Node: ATOMIC_FETCH_XOR355503
! Node: ATOMIC_OR357286
! Node: ATOMIC_REF358871
! Node: ATOMIC_XOR360767
! Node: BACKTRACE362352
! Node: BESSEL_J0362932
! Node: BESSEL_J1363948
! Node: BESSEL_JN364965
! Node: BESSEL_Y0366790
! Node: BESSEL_Y1367745
! Node: BESSEL_YN368700
! Node: BGE370531
! Node: BGT371223
! Node: BIT_SIZE371873
! Node: BLE372695
! Node: BLT373377
! Node: BTEST374015
! Node: C_ASSOCIATED375472
! Node: C_F_POINTER376683
! Node: C_F_PROCPOINTER378118
! Node: C_FUNLOC379625
! Node: C_LOC380996
! Node: C_SIZEOF382275
! Node: CEILING383688
! Node: CHAR384696
! Node: CHDIR385908
! Node: CHMOD387082
! Node: CMPLX388997
! Node: CO_BROADCAST390440
! Node: CO_MAX392213
! Node: CO_MIN394093
! Node: CO_REDUCE395959
! Node: CO_SUM399462
! Node: COMMAND_ARGUMENT_COUNT401369
! Node: COMPILER_OPTIONS402286
! Node: COMPILER_VERSION403312
! Node: COMPLEX404276
! Node: CONJG405415
! Node: COS406471
! Node: COSD407926
! Node: COSH409375
! Node: COTAN410558
! Node: COTAND411697
! Node: COUNT412876
! Node: CPU_TIME414901
! Node: CSHIFT416258
! Node: CTIME417918
! Node: DATE_AND_TIME419426
! Node: DBLE421906
! Node: DCMPLX422701
! Node: DIGITS423883
! Node: DIM424850
! Node: DOT_PRODUCT426131
! Node: DPROD427774
! Node: DREAL428701
! Node: DSHIFTL429367
! Node: DSHIFTR430700
! Node: DTIME432034
! Node: EOSHIFT434849
! Node: EPSILON436922
! Node: ERF437649
! Node: ERFC438430
! Node: ERFC_SCALED439240
! Node: ETIME439933
! Node: EVENT_QUERY442172
! Node: EXECUTE_COMMAND_LINE443761
! Node: EXIT446356
! Node: EXP447234
! Node: EXPONENT448487
! Node: EXTENDS_TYPE_OF449251
! Node: FDATE450109
! Node: FGET451595
! Node: FGETC453422
! Node: FLOOR455230
! Node: FLUSH456219
! Node: FNUM458098
! Node: FPUT458823
! Node: FPUTC460457
! Node: FRACTION462238
! Node: FREE463142
! Node: FSEEK463985
! Node: FSTAT466291
! Node: FTELL467378
! Node: GAMMA468360
! Node: GERROR469414
! Node: GETARG470136
! Node: GET_COMMAND471909
! Node: GET_COMMAND_ARGUMENT473283
! Node: GETCWD475331
! Node: GETENV476311
! Node: GET_ENVIRONMENT_VARIABLE477743
! Node: GETGID479906
! Node: GETLOG480443
! Node: GETPID481305
! Node: GETUID482035
! Node: GMTIME482551
! Node: HOSTNM484311
! Node: HUGE485232
! Node: HYPOT485954
! Node: IACHAR486780
! Node: IALL487948
! Node: IAND489433
! Node: IANY491006
! Node: IARGC492500
! Node: IBCLR493521
! Node: IBITS494769
! Node: IBSET496273
! Node: ICHAR497516
! Node: IDATE499686
! Node: IEOR500986
! Node: IERRNO502452
! Node: IMAGE_INDEX503001
! Node: INDEX intrinsic504029
! Node: INT505555
! Node: INT2507314
! Node: INT8508082
! Node: IOR508797
! Node: IPARITY510239
! Node: IRAND511771
! Node: IS_IOSTAT_END513130
! Node: IS_IOSTAT_EOR514229
! Node: ISATTY515358
! Node: ISHFT516141
! Node: ISHFTC517710
! Node: ISNAN519517
! Node: ITIME520284
! Node: KILL521582
! Node: KIND522667
! Node: LBOUND523513
! Node: LCOBOUND524851
! Node: LEADZ525986
! Node: LEN526847
! Node: LEN_TRIM528143
! Node: LGE529131
! Node: LGT530644
! Node: LINK532122
! Node: LLE533161
! Node: LLT534661
! Node: LNBLNK536132
! Node: LOC536910
! Node: LOG537642
! Node: LOG10538987
! Node: LOG_GAMMA539977
! Node: LOGICAL541079
! Node: LONG541891
! Node: LSHIFT542649
! Node: LSTAT543735
! Node: LTIME544935
! Node: MALLOC546617
! Node: MASKL548079
! Node: MASKR548846
! Node: MATMUL549616
! Node: MAX550789
! Node: MAXEXPONENT552324
! Node: MAXLOC553141
! Node: MAXVAL555482
! Node: MCLOCK557122
! Node: MCLOCK8558145
! Node: MERGE559375
! Node: MERGE_BITS560127
! Node: MIN560992
! Node: MINEXPONENT562530
! Node: MINLOC563161
! Node: MINVAL565533
! Node: MOD567186
! Node: MODULO569350
! Node: MOVE_ALLOC570653
! Node: MVBITS571686
! Node: NEAREST573338
! Node: NEW_LINE574438
! Node: NINT575211
! Node: NORM2576632
! Node: NOT577774
! Node: NULL578944
! Node: NUM_IMAGES579852
! Node: OR581553
! Node: PACK582839
! Node: PARITY584847
! Node: PERROR586068
! Node: POPCNT586693
! Node: POPPAR587565
! Node: PRECISION588619
! Node: PRESENT589506
! Node: PRODUCT590618
! Node: RADIX592152
! Node: RAN592964
! Node: RAND593420
! Node: RANDOM_NUMBER594755
! Node: RANDOM_SEED595969
! Node: RANGE598418
! Node: RANK599099
! Node: REAL599880
! Node: RENAME601869
! Node: REPEAT602891
! Node: RESHAPE603619
! Node: RRSPACING605086
! Node: RSHIFT605779
! Node: SAME_TYPE_AS606919
! Node: SCALE607751
! Node: SCAN608532
! Node: SECNDS610090
! Node: SECOND611182
! Node: SELECTED_CHAR_KIND612058
! Node: SELECTED_INT_KIND613653
! Node: SELECTED_REAL_KIND614830
! Node: SET_EXPONENT617507
! Node: SHAPE618504
! Node: SHIFTA619928
! Node: SHIFTL620892
! Node: SHIFTR621729
! Node: SIGN622567
! Node: SIGNAL623793
! Node: SIN625299
! Node: SIND626390
! Node: SINH627719
! Node: SIZE628732
! Node: SIZEOF630051
! Node: SLEEP631706
! Node: SPACING632267
! Node: SPREAD633281
! Node: SQRT634432
! Node: SRAND635764
! Node: STAT636998
! Node: STORAGE_SIZE640166
! Node: SUM641045
! Node: SYMLNK642537
! Node: SYSTEM643672
! Node: SYSTEM_CLOCK644927
! Node: TAN647757
! Node: TAND648828
! Node: TANH649912
! Node: THIS_IMAGE651087
! Node: TIME653387
! Node: TIME8654558
! Node: TINY655757
! Node: TRAILZ656358
! Node: TRANSFER657176
! Node: TRANSPOSE659212
! Node: TRIM659902
! Node: TTYNAM660760
! Node: UBOUND661678
! Node: UCOBOUND663068
! Node: UMASK664205
! Node: UNLINK664887
! Node: UNPACK665867
! Node: VERIFY667162
! Node: XOR668891
! Node: Intrinsic Modules670264
! Node: ISO_FORTRAN_ENV670553
! Node: ISO_C_BINDING674956
! Node: IEEE modules678662
! Node: OpenMP Modules OMP_LIB and OMP_LIB_KINDS679805
! Node: OpenACC Module OPENACC681345
! Node: Contributing682272
! Node: Contributors683126
! Node: Projects684757
! Node: Proposed Extensions685564
! Node: Copying687574
! Node: GNU Free Documentation License725120
! Node: Funding750244
! Node: Option Index752770
! Node: Keyword Index770499
  
  End Tag Table
--- 22538,22980 ----
  Node: Varying Length Character Strings16578
  Node: Invoking GNU Fortran17330
  Node: Option Summary19164
! Node: Fortran Dialect Options23102
! Node: Preprocessing Options34668
! Node: Error and Warning Options42909
! Node: Debugging Options54658
! Node: Directory Options58687
! Node: Link Options60122
! Node: Runtime Options60748
! Node: Code Gen Options62655
! Node: Interoperability Options81967
! Node: Environment Variables83007
! Node: Runtime83620
! Node: TMPDIR84654
! Node: GFORTRAN_STDIN_UNIT85324
! Node: GFORTRAN_STDOUT_UNIT85706
! Node: GFORTRAN_STDERR_UNIT86107
! Node: GFORTRAN_UNBUFFERED_ALL86509
! Node: GFORTRAN_UNBUFFERED_PRECONNECTED87040
! Node: GFORTRAN_SHOW_LOCUS87684
! Node: GFORTRAN_OPTIONAL_PLUS88180
! Node: GFORTRAN_LIST_SEPARATOR88658
! Node: GFORTRAN_CONVERT_UNIT89266
! Node: GFORTRAN_ERROR_BACKTRACE92121
! Node: Fortran standards status92678
! Node: Fortran 2003 status92970
! Node: Fortran 2008 status98209
! Node: TS 29113 status103583
! Node: TS 18508 status104582
! Node: Fortran 2018 status105397
! Node: Compiler Characteristics106016
! Node: KIND Type Parameters106689
! Node: Internal representation of LOGICAL variables108117
! Node: Thread-safety of the runtime library108977
! Node: Data consistency and durability111380
! Node: Files opened without an explicit ACTION= specifier114493
! Node: File operations on symbolic links115184
! Node: File format of unformatted sequential files116304
! Node: Extensions118651
! Node: Extensions implemented in GNU Fortran119256
! Node: Old-style kind specifications121152
! Node: Old-style variable initialization122254
! Node: Extensions to namelist123566
! Node: X format descriptor without count field125869
! Node: Commas in FORMAT specifications126396
! Node: Missing period in FORMAT specifications126913
! Node: I/O item lists127475
! Node: Q exponent-letter127860
! Node: BOZ literal constants128458
! Node: Real array indices131037
! Node: Unary operators131336
! Node: Implicitly convert LOGICAL and INTEGER values131750
! Node: Hollerith constants support132709
! Node: Cray pointers134481
! Node: CONVERT specifier139928
! Node: OpenMP141923
! Node: OpenACC144181
! Node: Argument list functions145490
! Node: Read/Write after EOF marker147133
! Node: STRUCTURE and RECORD147736
! Node: UNION and MAP152823
! Node: Type variants for integer intrinsics155791
! Node: AUTOMATIC and STATIC attributes157686
! Node: Extended math intrinsics159220
! Node: Form feed as whitespace161016
! Node: TYPE as an alias for PRINT161562
! Node: %LOC as an rvalue162027
! Node: .XOR. operator162674
! Node: Bitwise logical operators163074
! Node: Extended I/O specifiers164575
! Node: Legacy PARAMETER statements168295
! Node: Default exponents168900
! Node: Extensions not implemented in GNU Fortran169252
! Node: ENCODE and DECODE statements170197
! Node: Variable FORMAT expressions171528
! Node: Alternate complex function syntax172633
! Node: Volatile COMMON blocks173183
! Node: OPEN( ... NAME=)173685
! Node: Mixed-Language Programming174087
! Node: Interoperability with C174667
! Node: Intrinsic Types176001
! Node: Derived Types and struct176997
! Node: Interoperable Global Variables178355
! Node: Interoperable Subroutines and Functions179630
! Node: Working with Pointers183424
! Node: Further Interoperability of Fortran with C187900
! Node: GNU Fortran Compiler Directives191254
! Node: ATTRIBUTES directive191544
! Node: UNROLL directive194732
! Node: Non-Fortran Main Program195239
! Node: _gfortran_set_args197427
! Node: _gfortran_set_options198365
! Node: _gfortran_set_convert201972
! Node: _gfortran_set_record_marker202840
! Node: _gfortran_set_fpe203650
! Node: _gfortran_set_max_subrecord_length204848
! Node: Naming and argument-passing conventions205771
! Node: Naming conventions206490
! Node: Argument passing conventions207962
! Node: Coarray Programming213267
! Node: Type and enum ABI Documentation213514
! Node: caf_token_t213812
! Node: caf_register_t214048
! Node: caf_deregister_t215259
! Node: caf_reference_t215761
! Node: caf_team_t220085
! Node: Function ABI Documentation220384
! Node: _gfortran_caf_init222834
! Node: _gfortran_caf_finish224260
! Node: _gfortran_caf_this_image225199
! Node: _gfortran_caf_num_images225954
! Node: _gfortran_caf_image_status227065
! Node: _gfortran_caf_failed_images228185
! Node: _gfortran_caf_stopped_images229355
! Node: _gfortran_caf_register230528
! Node: _gfortran_caf_deregister234710
! Node: _gfortran_caf_is_present236316
! Node: _gfortran_caf_send237395
! Node: _gfortran_caf_get240585
! Node: _gfortran_caf_sendget243666
! Node: _gfortran_caf_send_by_ref247577
! Node: _gfortran_caf_get_by_ref251186
! Node: _gfortran_caf_sendget_by_ref254705
! Node: _gfortran_caf_lock259001
! Node: _gfortran_caf_unlock260787
! Node: _gfortran_caf_event_post262268
! Node: _gfortran_caf_event_wait263717
! Node: _gfortran_caf_event_query265824
! Node: _gfortran_caf_sync_all267155
! Node: _gfortran_caf_sync_images268083
! Node: _gfortran_caf_sync_memory269618
! Node: _gfortran_caf_error_stop270610
! Node: _gfortran_caf_error_stop_str271214
! Node: _gfortran_caf_fail_image271919
! Node: _gfortran_caf_atomic_define272455
! Node: _gfortran_caf_atomic_ref273770
! Node: _gfortran_caf_atomic_cas275074
! Node: _gfortran_caf_atomic_op276835
! Node: _gfortran_caf_co_broadcast278937
! Node: _gfortran_caf_co_max280042
! Node: _gfortran_caf_co_min281668
! Node: _gfortran_caf_co_sum283288
! Node: _gfortran_caf_co_reduce284828
! Node: Intrinsic Procedures287472
! Node: Introduction to Intrinsics304528
! Node: ABORT306878
! Node: ABS307623
! Node: ACCESS309573
! Node: ACHAR311503
! Node: ACOS312707
! Node: ACOSD313993
! Node: ACOSH315305
! Node: ADJUSTL316301
! Node: ADJUSTR317243
! Node: AIMAG318193
! Node: AINT319565
! Node: ALARM321171
! Node: ALL322803
! Node: ALLOCATED324727
! Node: AND325866
! Node: ANINT327165
! Node: ANY328662
! Node: ASIN330588
! Node: ASIND331863
! Node: ASINH333161
! Node: ASSOCIATED334167
! Node: ATAN337178
! Node: ATAND338628
! Node: ATAN2340098
! Node: ATAN2D341961
! Node: ATANH343935
! Node: ATOMIC_ADD344941
! Node: ATOMIC_AND346473
! Node: ATOMIC_CAS348061
! Node: ATOMIC_DEFINE349920
! Node: ATOMIC_FETCH_ADD351639
! Node: ATOMIC_FETCH_AND353439
! Node: ATOMIC_FETCH_OR355229
! Node: ATOMIC_FETCH_XOR357006
! Node: ATOMIC_OR358789
! Node: ATOMIC_REF360374
! Node: ATOMIC_XOR362270
! Node: BACKTRACE363855
! Node: BESSEL_J0364435
! Node: BESSEL_J1365451
! Node: BESSEL_JN366468
! Node: BESSEL_Y0368293
! Node: BESSEL_Y1369248
! Node: BESSEL_YN370203
! Node: BGE372034
! Node: BGT372726
! Node: BIT_SIZE373376
! Node: BLE374198
! Node: BLT374880
! Node: BTEST375518
! Node: C_ASSOCIATED376975
! Node: C_F_POINTER378186
! Node: C_F_PROCPOINTER379621
! Node: C_FUNLOC381128
! Node: C_LOC382499
! Node: C_SIZEOF383778
! Node: CEILING385191
! Node: CHAR386199
! Node: CHDIR387411
! Node: CHMOD388585
! Node: CMPLX390500
! Node: CO_BROADCAST391943
! Node: CO_MAX393716
! Node: CO_MIN395596
! Node: CO_REDUCE397462
! Node: CO_SUM400965
! Node: COMMAND_ARGUMENT_COUNT402872
! Node: COMPILER_OPTIONS403789
! Node: COMPILER_VERSION404815
! Node: COMPLEX405779
! Node: CONJG406918
! Node: COS407974
! Node: COSD409429
! Node: COSH410878
! Node: COTAN412061
! Node: COTAND413200
! Node: COUNT414379
! Node: CPU_TIME416404
! Node: CSHIFT417761
! Node: CTIME419421
! Node: DATE_AND_TIME420929
! Node: DBLE423409
! Node: DCMPLX424204
! Node: DIGITS425386
! Node: DIM426353
! Node: DOT_PRODUCT427634
! Node: DPROD429277
! Node: DREAL430204
! Node: DSHIFTL430870
! Node: DSHIFTR432203
! Node: DTIME433537
! Node: EOSHIFT436352
! Node: EPSILON438425
! Node: ERF439152
! Node: ERFC439933
! Node: ERFC_SCALED440743
! Node: ETIME441436
! Node: EVENT_QUERY443675
! Node: EXECUTE_COMMAND_LINE445264
! Node: EXIT447859
! Node: EXP448737
! Node: EXPONENT449990
! Node: EXTENDS_TYPE_OF450754
! Node: FDATE451612
! Node: FGET453098
! Node: FGETC454925
! Node: FLOOR456733
! Node: FLUSH457722
! Node: FNUM459601
! Node: FPUT460326
! Node: FPUTC461960
! Node: FRACTION463741
! Node: FREE464645
! Node: FSEEK465488
! Node: FSTAT467794
! Node: FTELL468881
! Node: GAMMA469863
! Node: GERROR470917
! Node: GETARG471639
! Node: GET_COMMAND473412
! Node: GET_COMMAND_ARGUMENT474786
! Node: GETCWD476834
! Node: GETENV477814
! Node: GET_ENVIRONMENT_VARIABLE479246
! Node: GETGID481409
! Node: GETLOG481946
! Node: GETPID482808
! Node: GETUID483538
! Node: GMTIME484054
! Node: HOSTNM485814
! Node: HUGE486735
! Node: HYPOT487457
! Node: IACHAR488283
! Node: IALL489451
! Node: IAND490936
! Node: IANY492509
! Node: IARGC494003
! Node: IBCLR495024
! Node: IBITS496272
! Node: IBSET497776
! Node: ICHAR499019
! Node: IDATE501189
! Node: IEOR502489
! Node: IERRNO503955
! Node: IMAGE_INDEX504504
! Node: INDEX intrinsic505532
! Node: INT507058
! Node: INT2508817
! Node: INT8509585
! Node: IOR510300
! Node: IPARITY511742
! Node: IRAND513274
! Node: IS_IOSTAT_END514633
! Node: IS_IOSTAT_EOR515732
! Node: ISATTY516861
! Node: ISHFT517644
! Node: ISHFTC519213
! Node: ISNAN521020
! Node: ITIME521787
! Node: KILL523085
! Node: KIND524170
! Node: LBOUND525016
! Node: LCOBOUND526354
! Node: LEADZ527489
! Node: LEN528350
! Node: LEN_TRIM529646
! Node: LGE530634
! Node: LGT532147
! Node: LINK533625
! Node: LLE534664
! Node: LLT536164
! Node: LNBLNK537635
! Node: LOC538413
! Node: LOG539145
! Node: LOG10540490
! Node: LOG_GAMMA541480
! Node: LOGICAL542582
! Node: LONG543394
! Node: LSHIFT544152
! Node: LSTAT545238
! Node: LTIME546438
! Node: MALLOC548120
! Node: MASKL549582
! Node: MASKR550349
! Node: MATMUL551119
! Node: MAX552292
! Node: MAXEXPONENT553827
! Node: MAXLOC554644
! Node: MAXVAL556985
! Node: MCLOCK558625
! Node: MCLOCK8559648
! Node: MERGE560878
! Node: MERGE_BITS561630
! Node: MIN562495
! Node: MINEXPONENT564033
! Node: MINLOC564664
! Node: MINVAL567036
! Node: MOD568689
! Node: MODULO570853
! Node: MOVE_ALLOC572156
! Node: MVBITS573189
! Node: NEAREST574841
! Node: NEW_LINE575941
! Node: NINT576714
! Node: NORM2578135
! Node: NOT579277
! Node: NULL580447
! Node: NUM_IMAGES581355
! Node: OR583056
! Node: PACK584342
! Node: PARITY586350
! Node: PERROR587571
! Node: POPCNT588196
! Node: POPPAR589068
! Node: PRECISION590122
! Node: PRESENT591009
! Node: PRODUCT592121
! Node: RADIX593655
! Node: RAN594467
! Node: RAND594923
! Node: RANDOM_NUMBER596258
! Node: RANDOM_SEED597472
! Node: RANGE599921
! Node: RANK600602
! Node: REAL601383
! Node: RENAME603372
! Node: REPEAT604394
! Node: RESHAPE605122
! Node: RRSPACING606589
! Node: RSHIFT607282
! Node: SAME_TYPE_AS608422
! Node: SCALE609254
! Node: SCAN610035
! Node: SECNDS611593
! Node: SECOND612685
! Node: SELECTED_CHAR_KIND613561
! Node: SELECTED_INT_KIND615156
! Node: SELECTED_REAL_KIND616333
! Node: SET_EXPONENT619010
! Node: SHAPE620007
! Node: SHIFTA621431
! Node: SHIFTL622395
! Node: SHIFTR623232
! Node: SIGN624070
! Node: SIGNAL625296
! Node: SIN626802
! Node: SIND627893
! Node: SINH629222
! Node: SIZE630235
! Node: SIZEOF631554
! Node: SLEEP633209
! Node: SPACING633770
! Node: SPREAD634784
! Node: SQRT635935
! Node: SRAND637267
! Node: STAT638501
! Node: STORAGE_SIZE641669
! Node: SUM642548
! Node: SYMLNK644040
! Node: SYSTEM645175
! Node: SYSTEM_CLOCK646430
! Node: TAN649260
! Node: TAND650331
! Node: TANH651415
! Node: THIS_IMAGE652590
! Node: TIME654890
! Node: TIME8656061
! Node: TINY657260
! Node: TRAILZ657861
! Node: TRANSFER658679
! Node: TRANSPOSE660715
! Node: TRIM661405
! Node: TTYNAM662263
! Node: UBOUND663181
! Node: UCOBOUND664571
! Node: UMASK665708
! Node: UNLINK666390
! Node: UNPACK667370
! Node: VERIFY668665
! Node: XOR670394
! Node: Intrinsic Modules671767
! Node: ISO_FORTRAN_ENV672056
! Node: ISO_C_BINDING676459
! Node: IEEE modules680165
! Node: OpenMP Modules OMP_LIB and OMP_LIB_KINDS681308
! Node: OpenACC Module OPENACC683091
! Node: Contributing684018
! Node: Contributors684872
! Node: Projects686503
! Node: Proposed Extensions687310
! Node: Copying689320
! Node: GNU Free Documentation License726866
! Node: Funding751990
! Node: Option Index754516
! Node: Keyword Index772318
  
  End Tag Table
diff -Nrcpad gcc-8.3.0/gcc/fortran/interface.c gcc-8.4.0/gcc/fortran/interface.c
*** gcc-8.3.0/gcc/fortran/interface.c	Sat Feb  2 16:35:47 2019
--- gcc-8.4.0/gcc/fortran/interface.c	Wed Mar  4 08:30:00 2020
*************** compare_actual_formal (gfc_actual_arglis
*** 2941,2957 ****
  
        if (f->sym == NULL)
  	{
  	  if (where)
! 	    gfc_error ("Missing alternate return spec in subroutine call "
! 		       "at %L", where);
  	  return false;
  	}
  
        if (a->expr == NULL)
  	{
  	  if (where)
! 	    gfc_error ("Unexpected alternate return spec in subroutine "
! 		       "call at %L", where);
  	  return false;
  	}
  
--- 2941,2959 ----
  
        if (f->sym == NULL)
  	{
+ 	  /* These errors have to be issued, otherwise an ICE can occur.
+ 	     See PR 78865.  */
  	  if (where)
! 	    gfc_error_now ("Missing alternate return specifier in subroutine "
! 			   "call at %L", where);
  	  return false;
  	}
  
        if (a->expr == NULL)
  	{
  	  if (where)
! 	    gfc_error_now ("Unexpected alternate return specifier in "
! 			   "subroutine call at %L", where);
  	  return false;
  	}
  
*************** gfc_procedure_use (gfc_symbol *sym, gfc_
*** 3655,3660 ****
--- 3657,3663 ----
  	gfc_warning (OPT_Wimplicit_procedure,
  		     "Procedure %qs called at %L is not explicitly declared",
  		     sym->name, where);
+       gfc_find_proc_namespace (sym->ns)->implicit_interface_calls = 1;
      }
  
    if (sym->attr.if_source == IFSRC_UNKNOWN)
diff -Nrcpad gcc-8.3.0/gcc/fortran/intrinsic.texi gcc-8.4.0/gcc/fortran/intrinsic.texi
*** gcc-8.3.0/gcc/fortran/intrinsic.texi	Wed Mar 14 00:56:48 2018
--- gcc-8.4.0/gcc/fortran/intrinsic.texi	Wed Mar  4 08:30:00 2020
*************** named constants:
*** 14825,14830 ****
--- 14825,14831 ----
  
  @table @asis
  @item @code{omp_lock_kind}
+ @item @code{omp_lock_hint_kind}
  @item @code{omp_nest_lock_kind}
  @item @code{omp_proc_bind_kind}
  @item @code{omp_sched_kind}
*************** kind @code{omp_proc_bind_kind}:
*** 14856,14861 ****
--- 14857,14872 ----
  @item @code{omp_proc_bind_spread}
  @end table
  
+ The following scalar integer named constants are of the
+ kind @code{omp_lock_hint_kind}:
+ 
+ @table @asis
+ @item @code{omp_lock_hint_none}
+ @item @code{omp_lock_hint_uncontended}
+ @item @code{omp_lock_hint_contended}
+ @item @code{omp_lock_hint_nonspeculative}
+ @item @code{omp_lock_hint_speculative}
+ @end table
  
  
  @node OpenACC Module OPENACC
diff -Nrcpad gcc-8.3.0/gcc/fortran/invoke.texi gcc-8.4.0/gcc/fortran/invoke.texi
*** gcc-8.3.0/gcc/fortran/invoke.texi	Wed Jan  3 09:17:54 2018
--- gcc-8.4.0/gcc/fortran/invoke.texi	Wed Mar  4 08:30:00 2020
*************** and warnings}.
*** 181,187 ****
  @item Code Generation Options
  @xref{Code Gen Options,,Options for code generation conventions}.
  @gccoptlist{-faggressive-function-elimination -fblas-matmul-limit=@var{n} @gol
! -fbounds-check -fcheck-array-temporaries @gol
  -fcheck=@var{<all|array-temps|bounds|do|mem|pointer|recursion>} @gol
  -fcoarray=@var{<none|single|lib>} -fexternal-blas -ff2c
  -ffrontend-loop-interchange @gol
--- 181,188 ----
  @item Code Generation Options
  @xref{Code Gen Options,,Options for code generation conventions}.
  @gccoptlist{-faggressive-function-elimination -fblas-matmul-limit=@var{n} @gol
! -fbounds-check -ftail-call-workaround -ftail-call-workaround=@var{n} @gol
! -fcheck-array-temporaries @gol
  -fcheck=@var{<all|array-temps|bounds|do|mem|pointer|recursion>} @gol
  -fcoarray=@var{<none|single|lib>} -fexternal-blas -ff2c
  -ffrontend-loop-interchange @gol
*************** warnings for generated array temporaries
*** 1580,1585 ****
--- 1581,1619 ----
  @c Note: This option is also referred in gcc's manpage
  Deprecated alias for @option{-fcheck=bounds}.
  
+ @item -ftail-call-workaround
+ @itemx -ftail-call-workaround=@var{n}
+ @opindex @code{tail-call-workaround}
+ Some C interfaces to Fortran codes violate the gfortran ABI by
+ omitting the hidden character length arguments as described in
+ @xref{Argument passing conventions}.  This can lead to crashes
+ because pushing arguments for tail calls can overflow the stack.
+ 
+ To provide a workaround for existing binary packages, this option
+ disables tail call optimization for gfortran procedures with character
+ arguments.  With @option{-ftail-call-workaround=2} tail call optimization
+ is disabled in all gfortran procedures with character arguments,
+ with @option{-ftail-call-workaround=1} or equivalent
+ @option{-ftail-call-workaround} only in gfortran procedures with character
+ arguments that call implicitly prototyped procedures.
+ 
+ Using this option can lead to problems including crashes due to
+ insufficient stack space.
+ 
+ It is @emph{very strongly} recommended to fix the code in question.
+ The @option{-fc-prototypes-external} option can be used to generate
+ prototypes which conform to gfortran's ABI, for inclusion in the
+ source code.
+ 
+ Support for this option will likely be withdrawn in a future release
+ of gfortran.
+ 
+ The negative form, @option{-fno-tail-call-workaround} or equivalent
+ @option{-ftail-call-workaround=0}, can be used to disable this option.
+ 
+ Default is currently @option{-ftail-call-workaround}, this will change
+ in future releases.
+ 
  @item -fcheck-array-temporaries
  @opindex @code{fcheck-array-temporaries}
  Deprecated alias for @option{-fcheck=array-temps}.
diff -Nrcpad gcc-8.3.0/gcc/fortran/iresolve.c gcc-8.4.0/gcc/fortran/iresolve.c
*** gcc-8.3.0/gcc/fortran/iresolve.c	Wed Mar 14 00:56:48 2018
--- gcc-8.4.0/gcc/fortran/iresolve.c	Wed Mar  4 08:30:00 2020
*************** along with GCC; see the file COPYING3.
*** 35,40 ****
--- 35,41 ----
  #include "intrinsic.h"
  #include "constructor.h"
  #include "arith.h"
+ #include "trans.h"
  
  /* Given printf-like arguments, return a stable version of the result string.
  
*************** gfc_resolve_fe_runtime_error (gfc_code *
*** 2377,2382 ****
--- 2378,2387 ----
      a->name = "%VAL";
  
    c->resolved_sym = gfc_get_intrinsic_sub_symbol (name);
+   /* We set the backend_decl here because runtime_error is a
+      variadic function and we would use the wrong calling
+      convention otherwise.  */
+   c->resolved_sym->backend_decl = gfor_fndecl_runtime_error;
  }
  
  void
diff -Nrcpad gcc-8.3.0/gcc/fortran/lang.opt gcc-8.4.0/gcc/fortran/lang.opt
*** gcc-8.3.0/gcc/fortran/lang.opt	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/fortran/lang.opt	Wed Mar  4 08:30:00 2020
*************** fsign-zero
*** 742,747 ****
--- 742,754 ----
  Fortran Var(flag_sign_zero) Init(1)
  Apply negative sign to zero values.
  
+ ftail-call-workaround
+ Fortran Alias(ftail-call-workaround=,1,0)
+ 
+ ftail-call-workaround=
+ Fortran RejectNegative Joined UInteger IntegerRange(0, 2) Var(flag_tail_call_workaround) Init(1)
+ Disallow tail call optimization when a calling routine may have omitted character lengths.
+ 
  funderscoring
  Fortran Var(flag_underscoring) Init(1)
  Append underscores to externally visible names.
diff -Nrcpad gcc-8.3.0/gcc/fortran/match.c gcc-8.4.0/gcc/fortran/match.c
*** gcc-8.3.0/gcc/fortran/match.c	Sun Dec  9 19:51:59 2018
--- gcc-8.4.0/gcc/fortran/match.c	Wed Mar  4 08:30:00 2020
*************** gfc_match_type_spec (gfc_typespec *ts)
*** 2105,2112 ****
        ts->type = BT_CHARACTER;
  
        m = gfc_match_char_spec (ts);
-       if (ts->u.cl && ts->u.cl->length)
- 	gfc_resolve_expr (ts->u.cl->length);
  
        if (m == MATCH_NO)
  	m = MATCH_YES;
--- 2105,2110 ----
diff -Nrcpad gcc-8.3.0/gcc/fortran/openmp.c gcc-8.4.0/gcc/fortran/openmp.c
*** gcc-8.3.0/gcc/fortran/openmp.c	Mon Nov  5 14:10:16 2018
--- gcc-8.4.0/gcc/fortran/openmp.c	Wed Mar  4 08:30:00 2020
*************** omp_code_to_statement (gfc_code *code)
*** 5689,5694 ****
--- 5689,5769 ----
        return ST_OMP_PARALLEL_WORKSHARE;
      case EXEC_OMP_DO:
        return ST_OMP_DO;
+     case EXEC_OMP_ATOMIC:
+       return ST_OMP_ATOMIC;
+     case EXEC_OMP_BARRIER:
+       return ST_OMP_BARRIER;
+     case EXEC_OMP_CANCEL:
+       return ST_OMP_CANCEL;
+     case EXEC_OMP_CANCELLATION_POINT:
+       return ST_OMP_CANCELLATION_POINT;
+     case EXEC_OMP_FLUSH:
+       return ST_OMP_FLUSH;
+     case EXEC_OMP_DISTRIBUTE:
+       return ST_OMP_DISTRIBUTE;
+     case EXEC_OMP_DISTRIBUTE_PARALLEL_DO:
+       return ST_OMP_DISTRIBUTE_PARALLEL_DO;
+     case EXEC_OMP_DISTRIBUTE_PARALLEL_DO_SIMD:
+       return ST_OMP_DISTRIBUTE_PARALLEL_DO_SIMD;
+     case EXEC_OMP_DISTRIBUTE_SIMD:
+       return ST_OMP_DISTRIBUTE_SIMD;
+     case EXEC_OMP_DO_SIMD:
+       return ST_OMP_DO_SIMD;
+     case EXEC_OMP_SIMD:
+       return ST_OMP_SIMD;
+     case EXEC_OMP_TARGET:
+       return ST_OMP_TARGET;
+     case EXEC_OMP_TARGET_DATA:
+       return ST_OMP_TARGET_DATA;
+     case EXEC_OMP_TARGET_ENTER_DATA:
+       return ST_OMP_TARGET_ENTER_DATA;
+     case EXEC_OMP_TARGET_EXIT_DATA:
+       return ST_OMP_TARGET_EXIT_DATA;
+     case EXEC_OMP_TARGET_PARALLEL:
+       return ST_OMP_TARGET_PARALLEL;
+     case EXEC_OMP_TARGET_PARALLEL_DO:
+       return ST_OMP_TARGET_PARALLEL_DO;
+     case EXEC_OMP_TARGET_PARALLEL_DO_SIMD:
+       return ST_OMP_TARGET_PARALLEL_DO_SIMD;
+     case EXEC_OMP_TARGET_SIMD:
+       return ST_OMP_TARGET_SIMD;
+     case EXEC_OMP_TARGET_TEAMS:
+       return ST_OMP_TARGET_TEAMS;
+     case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE:
+       return ST_OMP_TARGET_TEAMS_DISTRIBUTE;
+     case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO:
+       return ST_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO;
+     case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD:
+       return ST_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD;
+     case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_SIMD:
+       return ST_OMP_TARGET_TEAMS_DISTRIBUTE_SIMD;
+     case EXEC_OMP_TARGET_UPDATE:
+       return ST_OMP_TARGET_UPDATE;
+     case EXEC_OMP_TASKGROUP:
+       return ST_OMP_TASKGROUP;
+     case EXEC_OMP_TASKLOOP:
+       return ST_OMP_TASKLOOP;
+     case EXEC_OMP_TASKLOOP_SIMD:
+       return ST_OMP_TASKLOOP_SIMD;
+     case EXEC_OMP_TASKWAIT:
+       return ST_OMP_TASKWAIT;
+     case EXEC_OMP_TASKYIELD:
+       return ST_OMP_TASKYIELD;
+     case EXEC_OMP_TEAMS:
+       return ST_OMP_TEAMS;
+     case EXEC_OMP_TEAMS_DISTRIBUTE:
+       return ST_OMP_TEAMS_DISTRIBUTE;
+     case EXEC_OMP_TEAMS_DISTRIBUTE_PARALLEL_DO:
+       return ST_OMP_TEAMS_DISTRIBUTE_PARALLEL_DO;
+     case EXEC_OMP_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD:
+       return ST_OMP_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD;
+     case EXEC_OMP_TEAMS_DISTRIBUTE_SIMD:
+       return ST_OMP_TEAMS_DISTRIBUTE_SIMD;
+     case EXEC_OMP_PARALLEL_DO:
+       return ST_OMP_PARALLEL_DO;
+     case EXEC_OMP_PARALLEL_DO_SIMD:
+       return ST_OMP_PARALLEL_DO_SIMD;
+ 
      default:
        gcc_unreachable ();
      }
*************** oacc_code_to_statement (gfc_code *code)
*** 5715,5720 ****
--- 5790,5809 ----
        return ST_OACC_LOOP;
      case EXEC_OACC_ATOMIC:
        return ST_OACC_ATOMIC;
+     case EXEC_OACC_ROUTINE:
+       return ST_OACC_ROUTINE;
+     case EXEC_OACC_UPDATE:
+       return ST_OACC_UPDATE;
+     case EXEC_OACC_WAIT:
+       return ST_OACC_WAIT;
+     case EXEC_OACC_CACHE:
+       return ST_OACC_CACHE;
+     case EXEC_OACC_ENTER_DATA:
+       return ST_OACC_ENTER_DATA;
+     case EXEC_OACC_EXIT_DATA:
+       return ST_OACC_EXIT_DATA;
+     case EXEC_OACC_DECLARE:
+       return ST_OACC_DECLARE;
      default:
        gcc_unreachable ();
      }
diff -Nrcpad gcc-8.3.0/gcc/fortran/parse.c gcc-8.4.0/gcc/fortran/parse.c
*** gcc-8.3.0/gcc/fortran/parse.c	Fri Jun 15 14:03:00 2018
--- gcc-8.4.0/gcc/fortran/parse.c	Wed Mar  4 08:30:00 2020
*************** parse_omp_structured_block (gfc_statemen
*** 5073,5078 ****
--- 5073,5081 ----
      case ST_OMP_TARGET_DATA:
        omp_end_st = ST_OMP_END_TARGET_DATA;
        break;
+     case ST_OMP_TARGET_PARALLEL:
+       omp_end_st = ST_OMP_END_TARGET_PARALLEL;
+       break;
      case ST_OMP_TARGET_TEAMS:
        omp_end_st = ST_OMP_END_TARGET_TEAMS;
        break;
*************** parse_block_data (void)
*** 5830,5836 ****
      }
    else
      {
!       s = gfc_get_gsymbol (gfc_new_block->name);
        if (s->defined
  	  || (s->type != GSYM_UNKNOWN && s->type != GSYM_BLOCK_DATA))
         gfc_global_used (s, &gfc_new_block->declared_at);
--- 5833,5839 ----
      }
    else
      {
!       s = gfc_get_gsymbol (gfc_new_block->name, false);
        if (s->defined
  	  || (s->type != GSYM_UNKNOWN && s->type != GSYM_BLOCK_DATA))
         gfc_global_used (s, &gfc_new_block->declared_at);
*************** parse_module (void)
*** 5912,5918 ****
    gfc_gsymbol *s;
    bool error;
  
!   s = gfc_get_gsymbol (gfc_new_block->name);
    if (s->defined || (s->type != GSYM_UNKNOWN && s->type != GSYM_MODULE))
      gfc_global_used (s, &gfc_new_block->declared_at);
    else
--- 5915,5921 ----
    gfc_gsymbol *s;
    bool error;
  
!   s = gfc_get_gsymbol (gfc_new_block->name, false);
    if (s->defined || (s->type != GSYM_UNKNOWN && s->type != GSYM_MODULE))
      gfc_global_used (s, &gfc_new_block->declared_at);
    else
*************** add_global_procedure (bool sub)
*** 5976,5982 ****
       name is a global identifier.  */
    if (!gfc_new_block->binding_label || gfc_notification_std (GFC_STD_F2008))
      {
!       s = gfc_get_gsymbol (gfc_new_block->name);
  
        if (s->defined
  	  || (s->type != GSYM_UNKNOWN
--- 5979,5985 ----
       name is a global identifier.  */
    if (!gfc_new_block->binding_label || gfc_notification_std (GFC_STD_F2008))
      {
!       s = gfc_get_gsymbol (gfc_new_block->name, false);
  
        if (s->defined
  	  || (s->type != GSYM_UNKNOWN
*************** add_global_procedure (bool sub)
*** 6001,6007 ****
        && (!gfc_notification_std (GFC_STD_F2008)
            || strcmp (gfc_new_block->name, gfc_new_block->binding_label) != 0))
      {
!       s = gfc_get_gsymbol (gfc_new_block->binding_label);
  
        if (s->defined
  	  || (s->type != GSYM_UNKNOWN
--- 6004,6010 ----
        && (!gfc_notification_std (GFC_STD_F2008)
            || strcmp (gfc_new_block->name, gfc_new_block->binding_label) != 0))
      {
!       s = gfc_get_gsymbol (gfc_new_block->binding_label, true);
  
        if (s->defined
  	  || (s->type != GSYM_UNKNOWN
*************** add_global_program (void)
*** 6033,6039 ****
  
    if (gfc_new_block == NULL)
      return;
!   s = gfc_get_gsymbol (gfc_new_block->name);
  
    if (s->defined || (s->type != GSYM_UNKNOWN && s->type != GSYM_PROGRAM))
      gfc_global_used (s, &gfc_new_block->declared_at);
--- 6036,6042 ----
  
    if (gfc_new_block == NULL)
      return;
!   s = gfc_get_gsymbol (gfc_new_block->name, false);
  
    if (s->defined || (s->type != GSYM_UNKNOWN && s->type != GSYM_PROGRAM))
      gfc_global_used (s, &gfc_new_block->declared_at);
diff -Nrcpad gcc-8.3.0/gcc/fortran/resolve.c gcc-8.4.0/gcc/fortran/resolve.c
*** gcc-8.3.0/gcc/fortran/resolve.c	Sun Jan 27 18:02:17 2019
--- gcc-8.4.0/gcc/fortran/resolve.c	Wed Mar  4 08:30:00 2020
*************** resolve_common_blocks (gfc_symtree *comm
*** 1045,1051 ****
  	}
        if (!gsym)
  	{
! 	  gsym = gfc_get_gsymbol (common_root->n.common->name);
  	  gsym->type = GSYM_COMMON;
  	  gsym->where = common_root->n.common->where;
  	  gsym->defined = 1;
--- 1045,1051 ----
  	}
        if (!gsym)
  	{
! 	  gsym = gfc_get_gsymbol (common_root->n.common->name, false);
  	  gsym->type = GSYM_COMMON;
  	  gsym->where = common_root->n.common->where;
  	  gsym->defined = 1;
*************** resolve_common_blocks (gfc_symtree *comm
*** 1067,1073 ****
  	}
        if (!gsym)
  	{
! 	  gsym = gfc_get_gsymbol (common_root->n.common->binding_label);
  	  gsym->type = GSYM_COMMON;
  	  gsym->where = common_root->n.common->where;
  	  gsym->defined = 1;
--- 1067,1073 ----
  	}
        if (!gsym)
  	{
! 	  gsym = gfc_get_gsymbol (common_root->n.common->binding_label, true);
  	  gsym->type = GSYM_COMMON;
  	  gsym->where = common_root->n.common->where;
  	  gsym->defined = 1;
*************** is_illegal_recursion (gfc_symbol* sym, g
*** 1681,1688 ****
        || gfc_fl_struct (sym->attr.flavor))
      return false;
  
-   gcc_assert (sym->attr.flavor == FL_PROCEDURE);
- 
    /* If we've got an ENTRY, find real procedure.  */
    if (sym->attr.entry && sym->ns->entries)
      proc_sym = sym->ns->entries->sym;
--- 1681,1686 ----
*************** resolve_global_procedure (gfc_symbol *sy
*** 2484,2490 ****
  
    type = sub ? GSYM_SUBROUTINE : GSYM_FUNCTION;
  
!   gsym = gfc_get_gsymbol (sym->binding_label ? sym->binding_label : sym->name);
  
    if ((gsym->type != GSYM_UNKNOWN && gsym->type != type))
      gfc_global_used (gsym, where);
--- 2482,2489 ----
  
    type = sub ? GSYM_SUBROUTINE : GSYM_FUNCTION;
  
!   gsym = gfc_get_gsymbol (sym->binding_label ? sym->binding_label : sym->name,
! 			  sym->binding_label != NULL);
  
    if ((gsym->type != GSYM_UNKNOWN && gsym->type != type))
      gfc_global_used (gsym, where);
*************** resolve_global_procedure (gfc_symbol *sy
*** 2494,2557 ****
        && gsym->type != GSYM_UNKNOWN
        && !gsym->binding_label
        && gsym->ns
-       && gsym->ns->resolved != -1
        && gsym->ns->proc_name
        && not_in_recursive (sym, gsym->ns)
        && not_entry_self_reference (sym, gsym->ns))
      {
        gfc_symbol *def_sym;
  
        /* Resolve the gsymbol namespace if needed.  */
!       if (!gsym->ns->resolved)
  	{
! 	  gfc_dt_list *old_dt_list;
  
! 	  /* Stash away derived types so that the backend_decls do not
! 	     get mixed up.  */
! 	  old_dt_list = gfc_derived_types;
! 	  gfc_derived_types = NULL;
  
! 	  gfc_resolve (gsym->ns);
  
! 	  /* Store the new derived types with the global namespace.  */
! 	  if (gfc_derived_types)
! 	    gsym->ns->derived_types = gfc_derived_types;
  
! 	  /* Restore the derived types of this namespace.  */
! 	  gfc_derived_types = old_dt_list;
! 	}
  
!       /* Make sure that translation for the gsymbol occurs before
! 	 the procedure currently being resolved.  */
!       ns = gfc_global_ns_list;
!       for (; ns && ns != gsym->ns; ns = ns->sibling)
! 	{
! 	  if (ns->sibling == gsym->ns)
  	    {
! 	      ns->sibling = gsym->ns->sibling;
! 	      gsym->ns->sibling = gfc_global_ns_list;
! 	      gfc_global_ns_list = gsym->ns;
! 	      break;
  	    }
- 	}
- 
-       def_sym = gsym->ns->proc_name;
  
!       /* This can happen if a binding name has been specified.  */
!       if (gsym->binding_label && gsym->sym_name != def_sym->name)
! 	gfc_find_symbol (gsym->sym_name, gsym->ns, 0, &def_sym);
  
!       if (def_sym->attr.entry_master)
! 	{
! 	  gfc_entry_list *entry;
! 	  for (entry = gsym->ns->entries; entry; entry = entry->next)
! 	    if (strcmp (entry->sym->name, sym->name) == 0)
! 	      {
! 		def_sym = entry->sym;
! 		break;
! 	      }
  	}
- 
        if (sym->attr.function && !gfc_compare_types (&sym->ts, &def_sym->ts))
  	{
  	  gfc_error ("Return type mismatch of function %qs at %L (%s/%s)",
--- 2493,2556 ----
        && gsym->type != GSYM_UNKNOWN
        && !gsym->binding_label
        && gsym->ns
        && gsym->ns->proc_name
        && not_in_recursive (sym, gsym->ns)
        && not_entry_self_reference (sym, gsym->ns))
      {
        gfc_symbol *def_sym;
+       def_sym = gsym->ns->proc_name;
  
        /* Resolve the gsymbol namespace if needed.  */
!       if (gsym->ns->resolved != -1)
  	{
! 	  if (!gsym->ns->resolved)
! 	    {
! 	      gfc_dt_list *old_dt_list;
  
! 	      /* Stash away derived types so that the backend_decls
! 	     do not get mixed up.  */
! 	      old_dt_list = gfc_derived_types;
! 	      gfc_derived_types = NULL;
  
! 	      gfc_resolve (gsym->ns);
  
! 	      /* Store the new derived types with the global namespace.  */
! 	      if (gfc_derived_types)
! 		gsym->ns->derived_types = gfc_derived_types;
  
! 	      /* Restore the derived types of this namespace.  */
! 	      gfc_derived_types = old_dt_list;
! 	    }
  
! 	  /* Make sure that translation for the gsymbol occurs before
! 	     the procedure currently being resolved.  */
! 	  ns = gfc_global_ns_list;
! 	  for (; ns && ns != gsym->ns; ns = ns->sibling)
  	    {
! 	      if (ns->sibling == gsym->ns)
! 		{
! 		  ns->sibling = gsym->ns->sibling;
! 		  gsym->ns->sibling = gfc_global_ns_list;
! 		  gfc_global_ns_list = gsym->ns;
! 		  break;
! 		}
  	    }
  
! 	  /* This can happen if a binding name has been specified.  */
! 	  if (gsym->binding_label && gsym->sym_name != def_sym->name)
! 	    gfc_find_symbol (gsym->sym_name, gsym->ns, 0, &def_sym);
  
! 	  if (def_sym->attr.entry_master || def_sym->attr.entry)
! 	    {
! 	      gfc_entry_list *entry;
! 	      for (entry = gsym->ns->entries; entry; entry = entry->next)
! 		if (strcmp (entry->sym->name, sym->name) == 0)
! 		  {
! 		    def_sym = entry->sym;
! 		    break;
! 		  }
! 	    }
  	}
        if (sym->attr.function && !gfc_compare_types (&sym->ts, &def_sym->ts))
  	{
  	  gfc_error ("Return type mismatch of function %qs at %L (%s/%s)",
*************** find_array_spec (gfc_expr *e)
*** 4633,4641 ****
    gfc_array_spec *as;
    gfc_component *c;
    gfc_ref *ref;
  
    if (e->symtree->n.sym->ts.type == BT_CLASS)
!     as = CLASS_DATA (e->symtree->n.sym)->as;
    else
      as = e->symtree->n.sym->as;
  
--- 4632,4644 ----
    gfc_array_spec *as;
    gfc_component *c;
    gfc_ref *ref;
+   bool class_as = false;
  
    if (e->symtree->n.sym->ts.type == BT_CLASS)
!     {
!       as = CLASS_DATA (e->symtree->n.sym)->as;
!       class_as = true;
!     }
    else
      as = e->symtree->n.sym->as;
  
*************** find_array_spec (gfc_expr *e)
*** 4654,4660 ****
  	c = ref->u.c.component;
  	if (c->attr.dimension)
  	  {
! 	    if (as != NULL)
  	      gfc_internal_error ("find_array_spec(): unused as(1)");
  	    as = c->as;
  	  }
--- 4657,4663 ----
  	c = ref->u.c.component;
  	if (c->attr.dimension)
  	  {
! 	    if (as != NULL && !(class_as && as == c->as))
  	      gfc_internal_error ("find_array_spec(): unused as(1)");
  	    as = c->as;
  	  }
*************** gfc_resolve_substring_charlen (gfc_expr
*** 4881,4886 ****
--- 4884,4890 ----
    gfc_ref *char_ref;
    gfc_expr *start, *end;
    gfc_typespec *ts = NULL;
+   mpz_t diff;
  
    for (char_ref = e->ref; char_ref; char_ref = char_ref->next)
      {
*************** gfc_resolve_substring_charlen (gfc_expr
*** 4932,4942 ****
        return;
      }
  
!   /* Length = (end - start + 1).  */
!   e->ts.u.cl->length = gfc_subtract (end, start);
!   e->ts.u.cl->length = gfc_add (e->ts.u.cl->length,
! 				gfc_get_int_expr (gfc_charlen_int_kind,
! 						  NULL, 1));
  
    /* F2008, 6.4.1:  Both the starting point and the ending point shall
       be within the range 1, 2, ..., n unless the starting point exceeds
--- 4936,4960 ----
        return;
      }
  
!   /* Length = (end - start + 1).
!      Check first whether it has a constant length.  */
!   if (gfc_dep_difference (end, start, &diff))
!     {
!       gfc_expr *len = gfc_get_constant_expr (BT_INTEGER, gfc_charlen_int_kind,
! 					     &e->where);
! 
!       mpz_add_ui (len->value.integer, diff, 1);
!       mpz_clear (diff);
!       e->ts.u.cl->length = len;
!       /* The check for length < 0 is handled below */
!     }
!   else
!     {
!       e->ts.u.cl->length = gfc_subtract (end, start);
!       e->ts.u.cl->length = gfc_add (e->ts.u.cl->length,
! 				    gfc_get_int_expr (gfc_charlen_int_kind,
! 						      NULL, 1));
!     }
  
    /* F2008, 6.4.1:  Both the starting point and the ending point shall
       be within the range 1, 2, ..., n unless the starting point exceeds
*************** resolve_procedure:
*** 5615,5625 ****
  
  
  /* Checks to see that the correct symbol has been host associated.
!    The only situation where this arises is that in which a twice
!    contained function is parsed after the host association is made.
!    Therefore, on detecting this, change the symbol in the expression
!    and convert the array reference into an actual arglist if the old
!    symbol is a variable.  */
  static bool
  check_host_association (gfc_expr *e)
  {
--- 5633,5646 ----
  
  
  /* Checks to see that the correct symbol has been host associated.
!    The only situations where this arises are:
! 	(i)  That in which a twice contained function is parsed after
! 	     the host association is made. On detecting this, change
! 	     the symbol in the expression and convert the array reference
! 	     into an actual arglist if the old symbol is a variable; or
! 	(ii) That in which an external function is typed but not declared
! 	     explcitly to be external. Here, the old symbol is changed
! 	     from a variable to an external function.  */
  static bool
  check_host_association (gfc_expr *e)
  {
*************** check_host_association (gfc_expr *e)
*** 5709,5714 ****
--- 5730,5755 ----
  	  gfc_resolve_expr (e);
  	  sym->refs++;
  	}
+       /* This case corresponds to a call, from a block or a contained
+ 	 procedure, to an external function, which has not been declared
+ 	 as being external in the main program but has been typed.  */
+       else if (sym && old_sym != sym
+ 	       && !e->ref
+ 	       && sym->ts.type == BT_UNKNOWN
+ 	       && old_sym->ts.type != BT_UNKNOWN
+ 	       && sym->attr.flavor == FL_PROCEDURE
+ 	       && old_sym->attr.flavor == FL_VARIABLE
+ 	       && sym->ns->parent == old_sym->ns
+ 	       && sym->ns->proc_name
+ 	       && (sym->ns->proc_name->attr.flavor == FL_LABEL
+ 		   || sym->ns->proc_name->attr.flavor == FL_PROCEDURE))
+ 	{
+ 	  old_sym->attr.flavor = FL_PROCEDURE;
+ 	  old_sym->attr.external = 1;
+ 	  old_sym->attr.function = 1;
+ 	  old_sym->result = old_sym;
+ 	  gfc_resolve_expr (e);
+ 	}
      }
    /* This might have changed!  */
    return e->expr_type == EXPR_FUNCTION;
*************** gfc_resolve_iterator (gfc_iterator *iter
*** 6888,6906 ****
  				  "Step expression in DO loop"))
      return false;
  
-   if (iter->step->expr_type == EXPR_CONSTANT)
-     {
-       if ((iter->step->ts.type == BT_INTEGER
- 	   && mpz_cmp_ui (iter->step->value.integer, 0) == 0)
- 	  || (iter->step->ts.type == BT_REAL
- 	      && mpfr_sgn (iter->step->value.real) == 0))
- 	{
- 	  gfc_error ("Step expression in DO loop at %L cannot be zero",
- 		     &iter->step->where);
- 	  return false;
- 	}
-     }
- 
    /* Convert start, end, and step to the same type as var.  */
    if (iter->start->ts.kind != iter->var->ts.kind
        || iter->start->ts.type != iter->var->ts.type)
--- 6929,6934 ----
*************** gfc_resolve_iterator (gfc_iterator *iter
*** 6914,6919 ****
--- 6942,6960 ----
        || iter->step->ts.type != iter->var->ts.type)
      gfc_convert_type (iter->step, &iter->var->ts, 1);
  
+   if (iter->step->expr_type == EXPR_CONSTANT)
+     {
+       if ((iter->step->ts.type == BT_INTEGER
+ 	   && mpz_cmp_ui (iter->step->value.integer, 0) == 0)
+ 	  || (iter->step->ts.type == BT_REAL
+ 	      && mpfr_sgn (iter->step->value.real) == 0))
+ 	{
+ 	  gfc_error ("Step expression in DO loop at %L cannot be zero",
+ 		     &iter->step->where);
+ 	  return false;
+ 	}
+     }
+ 
    if (iter->start->expr_type == EXPR_CONSTANT
        && iter->end->expr_type == EXPR_CONSTANT
        && iter->step->expr_type == EXPR_CONSTANT)
*************** gfc_expr_to_initialize (gfc_expr *e)
*** 7215,7220 ****
--- 7256,7265 ----
    for (ref = result->ref; ref; ref = ref->next)
      if (ref->type == REF_ARRAY && ref->next == NULL)
        {
+ 	if (ref->u.ar.dimen == 0
+ 	    && ref->u.ar.as && ref->u.ar.as->corank)
+ 	  return result;
+ 
  	ref->u.ar.type = AR_FULL;
  
  	for (i = 0; i < ref->u.ar.dimen; i++)
*************** resolve_allocate_expr (gfc_expr *e, gfc_
*** 7640,7652 ****
  
    if (codimension)
      for (i = ar->dimen; i < ar->dimen + ar->codimen; i++)
!       if (ar->dimen_type[i] == DIMEN_THIS_IMAGE)
! 	{
! 	  gfc_error ("Coarray specification required in ALLOCATE statement "
! 		     "at %L", &e->where);
! 	  goto failure;
! 	}
  
    for (i = 0; i < ar->dimen; i++)
      {
        if (ar->type == AR_ELEMENT || ar->type == AR_FULL)
--- 7685,7738 ----
  
    if (codimension)
      for (i = ar->dimen; i < ar->dimen + ar->codimen; i++)
!       {
! 	switch (ar->dimen_type[i])
! 	  {
! 	  case DIMEN_THIS_IMAGE:
! 	    gfc_error ("Coarray specification required in ALLOCATE statement "
! 		       "at %L", &e->where);
! 	    goto failure;
  
+ 	  case  DIMEN_RANGE:
+ 	    if (ar->start[i] == 0 || ar->end[i] == 0)
+ 	      {
+ 		/* If ar->stride[i] is NULL, we issued a previous error.  */
+ 		if (ar->stride[i] == NULL)
+ 		  gfc_error ("Bad array specification in ALLOCATE statement "
+ 			     "at %L", &e->where);
+ 		goto failure;
+ 	      }
+ 	    else if (gfc_dep_compare_expr (ar->start[i], ar->end[i]) == 1)
+ 	      {
+ 		gfc_error ("Upper cobound is less than lower cobound at %L",
+ 			   &ar->start[i]->where);
+ 		goto failure;
+ 	      }
+ 	    break;
+ 
+ 	  case DIMEN_ELEMENT:
+ 	    if (ar->start[i]->expr_type == EXPR_CONSTANT)
+ 	      {
+ 		gcc_assert (ar->start[i]->ts.type == BT_INTEGER);
+ 		if (mpz_cmp_si (ar->start[i]->value.integer, 1) < 0)
+ 		  {
+ 		    gfc_error ("Upper cobound is less than lower cobound "
+ 			       " of 1 at %L", &ar->start[i]->where);
+ 		    goto failure;
+ 		  }
+ 	      }
+ 	    break;
+ 
+ 	  case DIMEN_STAR:
+ 	    break;
+ 
+ 	  default:
+ 	    gfc_error ("Bad array specification in ALLOCATE statement at %L",
+ 		       &e->where);
+ 	    goto failure;
+ 
+ 	  }
+       }
    for (i = 0; i < ar->dimen; i++)
      {
        if (ar->type == AR_ELEMENT || ar->type == AR_FULL)
*************** deferred_op_assign (gfc_code **code, gfc
*** 11011,11016 ****
--- 11097,11105 ----
    if (!gfc_check_dependency ((*code)->expr1, (*code)->expr2, 1))
      return false;
  
+   if (gfc_expr_attr ((*code)->expr1).pointer)
+     return false;
+ 
    tmp_expr = get_temp_from_expr ((*code)->expr1, ns);
    tmp_expr->where = (*code)->loc;
  
*************** gfc_verify_binding_labels (gfc_symbol *s
*** 11647,11653 ****
  	  && (gsym->type == GSYM_FUNCTION || gsym->type == GSYM_SUBROUTINE)))
      {
        if (!gsym)
! 	gsym = gfc_get_gsymbol (sym->binding_label);
        gsym->where = sym->declared_at;
        gsym->sym_name = sym->name;
        gsym->binding_label = sym->binding_label;
--- 11736,11742 ----
  	  && (gsym->type == GSYM_FUNCTION || gsym->type == GSYM_SUBROUTINE)))
      {
        if (!gsym)
! 	gsym = gfc_get_gsymbol (sym->binding_label, true);
        gsym->where = sym->declared_at;
        gsym->sym_name = sym->name;
        gsym->binding_label = sym->binding_label;
*************** resolve_equivalence (gfc_equiv *eq)
*** 16266,16273 ****
  }
  
  
! /* Function called by resolve_fntype to flag other symbol used in the
!    length type parameter specification of function resuls.  */
  
  static bool
  flag_fn_result_spec (gfc_expr *expr,
--- 16355,16362 ----
  }
  
  
! /* Function called by resolve_fntype to flag other symbols used in the
!    length type parameter specification of function results.  */
  
  static bool
  flag_fn_result_spec (gfc_expr *expr,
diff -Nrcpad gcc-8.3.0/gcc/fortran/simplify.c gcc-8.4.0/gcc/fortran/simplify.c
*** gcc-8.3.0/gcc/fortran/simplify.c	Sun Dec 16 17:00:33 2018
--- gcc-8.4.0/gcc/fortran/simplify.c	Wed Mar  4 08:30:00 2020
*************** convert_mpz_to_unsigned (mpz_t x, int bi
*** 169,176 ****
      }
    else
      {
!       /* Confirm that no bits above the signed range are set.  */
!       gcc_assert (mpz_scan1 (x, bitsize-1) == ULONG_MAX);
      }
  }
  
--- 169,178 ----
      }
    else
      {
!       /* Confirm that no bits above the signed range are set if we
! 	 are doing range checking.  */
!       if (flag_range_check != 0)
! 	gcc_assert (mpz_scan1 (x, bitsize-1) == ULONG_MAX);
      }
  }
  
*************** gfc_simplify_len (gfc_expr *e, gfc_expr
*** 4469,4475 ****
      /* The expression in assoc->target points to a ref to the _data component
         of the unlimited polymorphic entity.  To get the _len component the last
         _data ref needs to be stripped and a ref to the _len component added.  */
!     return gfc_get_len_component (e->symtree->n.sym->assoc->target);
    else
      return NULL;
  }
--- 4471,4477 ----
      /* The expression in assoc->target points to a ref to the _data component
         of the unlimited polymorphic entity.  To get the _len component the last
         _data ref needs to be stripped and a ref to the _len component added.  */
!     return gfc_get_len_component (e->symtree->n.sym->assoc->target, k);
    else
      return NULL;
  }
*************** gfc_simplify_sizeof (gfc_expr *x)
*** 6921,6926 ****
--- 6923,6929 ----
  {
    gfc_expr *result = NULL;
    mpz_t array_size;
+   size_t res_size;
  
    if (x->ts.type == BT_CLASS || x->ts.deferred)
      return NULL;
*************** gfc_simplify_sizeof (gfc_expr *x)
*** 6936,6942 ****
  
    result = gfc_get_constant_expr (BT_INTEGER, gfc_index_integer_kind,
  				  &x->where);
!   mpz_set_si (result->value.integer, gfc_target_expr_size (x));
  
    return result;
  }
--- 6939,6946 ----
  
    result = gfc_get_constant_expr (BT_INTEGER, gfc_index_integer_kind,
  				  &x->where);
!   gfc_target_expr_size (x, &res_size);
!   mpz_set_si (result->value.integer, res_size);
  
    return result;
  }
*************** gfc_simplify_storage_size (gfc_expr *x,
*** 6950,6955 ****
--- 6954,6960 ----
  {
    gfc_expr *result = NULL;
    int k;
+   size_t siz;
  
    if (x->ts.type == BT_CLASS || x->ts.deferred)
      return NULL;
*************** gfc_simplify_storage_size (gfc_expr *x,
*** 6965,6971 ****
  
    result = gfc_get_constant_expr (BT_INTEGER, k, &x->where);
  
!   mpz_set_si (result->value.integer, gfc_element_size (x));
    mpz_mul_ui (result->value.integer, result->value.integer, BITS_PER_UNIT);
  
    return range_check (result, "STORAGE_SIZE");
--- 6970,6977 ----
  
    result = gfc_get_constant_expr (BT_INTEGER, k, &x->where);
  
!   gfc_element_size (x, &siz);
!   mpz_set_si (result->value.integer, siz);
    mpz_mul_ui (result->value.integer, result->value.integer, BITS_PER_UNIT);
  
    return range_check (result, "STORAGE_SIZE");
*************** gfc_simplify_spread (gfc_expr *source, g
*** 7164,7170 ****
    nelem = mpz_get_si (size) * ncopies;
    if (nelem > flag_max_array_constructor)
      {
!       if (gfc_current_ns->sym_root->n.sym->attr.flavor == FL_PARAMETER)
  	{
  	  gfc_error ("The number of elements (%d) in the array constructor "
  		     "at %L requires an increase of the allowed %d upper "
--- 7170,7176 ----
    nelem = mpz_get_si (size) * ncopies;
    if (nelem > flag_max_array_constructor)
      {
!       if (gfc_init_expr_flag)
  	{
  	  gfc_error ("The number of elements (%d) in the array constructor "
  		     "at %L requires an increase of the allowed %d upper "
diff -Nrcpad gcc-8.3.0/gcc/fortran/symbol.c gcc-8.4.0/gcc/fortran/symbol.c
*** gcc-8.3.0/gcc/fortran/symbol.c	Sat Jun  9 18:02:56 2018
--- gcc-8.4.0/gcc/fortran/symbol.c	Wed Mar  4 08:30:00 2020
*************** check_conflict (symbol_attribute *attr,
*** 522,528 ****
    /* The copying of procedure dummy arguments for module procedures in
       a submodule occur whilst the current state is COMP_CONTAINS. It
       is necessary, therefore, to let this through.  */
!   if (attr->dummy
        && (attr->function || attr->subroutine)
        && gfc_current_state () == COMP_CONTAINS
        && !(gfc_new_block && gfc_new_block->abr_modproc_decl))
--- 522,528 ----
    /* The copying of procedure dummy arguments for module procedures in
       a submodule occur whilst the current state is COMP_CONTAINS. It
       is necessary, therefore, to let this through.  */
!   if (name && attr->dummy
        && (attr->function || attr->subroutine)
        && gfc_current_state () == COMP_CONTAINS
        && !(gfc_new_block && gfc_new_block->abr_modproc_decl))
*************** check_conflict (symbol_attribute *attr,
*** 554,559 ****
--- 554,560 ----
  
    conf (external, intrinsic);
    conf (entry, intrinsic);
+   conf (abstract, intrinsic);
  
    if ((attr->if_source == IFSRC_DECL && !attr->procedure) || attr->contained)
      conf (external, subroutine);
*************** gfc_add_subroutine (symbol_attribute *at
*** 1685,1691 ****
      return false;
  
    attr->subroutine = 1;
!   return check_conflict (attr, name, where);
  }
  
  
--- 1686,1700 ----
      return false;
  
    attr->subroutine = 1;
! 
!   /* If we are looking at a BLOCK DATA statement and we encounter a
!      name with a leading underscore (which must be
!      compiler-generated), do not check. See PR 84394.  */
! 
!   if (name && *name != '_' && gfc_current_state () != COMP_BLOCK_DATA)
!     return check_conflict (attr, name, where);
!   else
!     return true;
  }
  
  
*************** gfc_add_procedure (symbol_attribute *att
*** 1801,1807 ****
    if (where == NULL)
      where = &gfc_current_locus;
  
!   if (attr->proc != PROC_UNKNOWN && !attr->module_procedure)
      {
        if (attr->proc == PROC_ST_FUNCTION && t == PROC_INTERNAL
  	  && !gfc_notification_std (GFC_STD_F2008))
--- 1810,1817 ----
    if (where == NULL)
      where = &gfc_current_locus;
  
!   if (attr->proc != PROC_UNKNOWN && !attr->module_procedure
!       && attr->access == ACCESS_UNKNOWN)
      {
        if (attr->proc == PROC_ST_FUNCTION && t == PROC_INTERNAL
  	  && !gfc_notification_std (GFC_STD_F2008))
*************** gsym_compare (void *_s1, void *_s2)
*** 4352,4358 ****
  /* Get a global symbol, creating it if it doesn't exist.  */
  
  gfc_gsymbol *
! gfc_get_gsymbol (const char *name)
  {
    gfc_gsymbol *s;
  
--- 4362,4368 ----
  /* Get a global symbol, creating it if it doesn't exist.  */
  
  gfc_gsymbol *
! gfc_get_gsymbol (const char *name, bool bind_c)
  {
    gfc_gsymbol *s;
  
*************** gfc_get_gsymbol (const char *name)
*** 4363,4368 ****
--- 4373,4379 ----
    s = XCNEW (gfc_gsymbol);
    s->type = GSYM_UNKNOWN;
    s->name = gfc_get_string ("%s", name);
+   s->bind_c = bind_c;
  
    gfc_insert_bbt (&gfc_gsym_root, s, gsym_compare);
  
diff -Nrcpad gcc-8.3.0/gcc/fortran/target-memory.c gcc-8.4.0/gcc/fortran/target-memory.c
*** gcc-8.3.0/gcc/fortran/target-memory.c	Thu Mar  1 11:06:18 2018
--- gcc-8.4.0/gcc/fortran/target-memory.c	Wed Mar  4 08:30:00 2020
*************** size_character (gfc_charlen_t length, in
*** 73,98 ****
  
  
  /* Return the size of a single element of the given expression.
!    Identical to gfc_target_expr_size for scalars.  */
  
! size_t
! gfc_element_size (gfc_expr *e)
  {
    tree type;
  
    switch (e->ts.type)
      {
      case BT_INTEGER:
!       return size_integer (e->ts.kind);
      case BT_REAL:
!       return size_float (e->ts.kind);
      case BT_COMPLEX:
!       return size_complex (e->ts.kind);
      case BT_LOGICAL:
!       return size_logical (e->ts.kind);
      case BT_CHARACTER:
        if (e->expr_type == EXPR_CONSTANT)
! 	return size_character (e->value.character.length, e->ts.kind);
        else if (e->ts.u.cl != NULL && e->ts.u.cl->length != NULL
  	       && e->ts.u.cl->length->expr_type == EXPR_CONSTANT
  	       && e->ts.u.cl->length->ts.type == BT_INTEGER)
--- 73,102 ----
  
  
  /* Return the size of a single element of the given expression.
!    Equivalent to gfc_target_expr_size for scalars.  */
  
! bool
! gfc_element_size (gfc_expr *e, size_t *siz)
  {
    tree type;
  
    switch (e->ts.type)
      {
      case BT_INTEGER:
!       *siz = size_integer (e->ts.kind);
!       return true;
      case BT_REAL:
!       *siz = size_float (e->ts.kind);
!       return true;
      case BT_COMPLEX:
!       *siz = size_complex (e->ts.kind);
!       return true;
      case BT_LOGICAL:
!       *siz = size_logical (e->ts.kind);
!       return true;
      case BT_CHARACTER:
        if (e->expr_type == EXPR_CONSTANT)
! 	*siz = size_character (e->value.character.length, e->ts.kind);
        else if (e->ts.u.cl != NULL && e->ts.u.cl->length != NULL
  	       && e->ts.u.cl->length->expr_type == EXPR_CONSTANT
  	       && e->ts.u.cl->length->ts.type == BT_INTEGER)
*************** gfc_element_size (gfc_expr *e)
*** 100,116 ****
  	  HOST_WIDE_INT length;
  
  	  gfc_extract_hwi (e->ts.u.cl->length, &length);
! 	  return size_character (length, e->ts.kind);
  	}
        else
! 	return 0;
  
      case BT_HOLLERITH:
!       return e->representation.length;
      case BT_DERIVED:
      case BT_CLASS:
      case BT_VOID:
      case BT_ASSUMED:
        {
  	/* Determine type size without clobbering the typespec for ISO C
  	   binding types.  */
--- 104,126 ----
  	  HOST_WIDE_INT length;
  
  	  gfc_extract_hwi (e->ts.u.cl->length, &length);
! 	  *siz = size_character (length, e->ts.kind);
  	}
        else
! 	{
! 	  *siz = 0;
! 	  return false;
! 	}
!       return true;
  
      case BT_HOLLERITH:
!       *siz = e->representation.length;
!       return true;
      case BT_DERIVED:
      case BT_CLASS:
      case BT_VOID:
      case BT_ASSUMED:
+     case BT_PROCEDURE:
        {
  	/* Determine type size without clobbering the typespec for ISO C
  	   binding types.  */
*************** gfc_element_size (gfc_expr *e)
*** 120,155 ****
  	type = gfc_typenode_for_spec (&ts);
  	size = int_size_in_bytes (type);
  	gcc_assert (size >= 0);
! 	return size;
        }
      default:
        gfc_internal_error ("Invalid expression in gfc_element_size.");
!       return 0;
      }
  }
  
  
  /* Return the size of an expression in its target representation.  */
  
! size_t
! gfc_target_expr_size (gfc_expr *e)
  {
    mpz_t tmp;
!   size_t asz;
  
    gcc_assert (e != NULL);
  
    if (e->rank)
      {
        if (gfc_array_size (e, &tmp))
  	asz = mpz_get_ui (tmp);
        else
! 	asz = 0;
      }
    else
      asz = 1;
  
!   return asz * gfc_element_size (e);
  }
  
  
--- 130,172 ----
  	type = gfc_typenode_for_spec (&ts);
  	size = int_size_in_bytes (type);
  	gcc_assert (size >= 0);
! 	*siz = size;
        }
+       return true;
      default:
        gfc_internal_error ("Invalid expression in gfc_element_size.");
!       *siz = 0;
!       return false;
      }
+   return true;
  }
  
  
  /* Return the size of an expression in its target representation.  */
  
! bool
! gfc_target_expr_size (gfc_expr *e, size_t *size)
  {
    mpz_t tmp;
!   size_t asz, el_size;
  
    gcc_assert (e != NULL);
  
+   *size = 0;
    if (e->rank)
      {
        if (gfc_array_size (e, &tmp))
  	asz = mpz_get_ui (tmp);
        else
! 	return false;
      }
    else
      asz = 1;
  
!   if (!gfc_element_size (e, &el_size))
!     return false;
!   *size = asz * el_size;
!   return true;
  }
  
  
*************** expr_to_char (gfc_expr *e, locus *loc,
*** 675,681 ****
  
    /* Otherwise, use the target-memory machinery to write a bitwise image, appropriate
       to the target, in a buffer and check off the initialized part of the buffer.  */
!   len = gfc_target_expr_size (e);
    buffer = (unsigned char*)alloca (len);
    len = gfc_target_encode_expr (e, buffer, len);
  
--- 692,698 ----
  
    /* Otherwise, use the target-memory machinery to write a bitwise image, appropriate
       to the target, in a buffer and check off the initialized part of the buffer.  */
!   gfc_target_expr_size (e, &len);
    buffer = (unsigned char*)alloca (len);
    len = gfc_target_encode_expr (e, buffer, len);
  
*************** gfc_merge_initializers (gfc_typespec ts,
*** 722,728 ****
        for (c = gfc_constructor_first (e->value.constructor);
  	   c; c = gfc_constructor_next (c))
  	{
! 	  size_t elt_size = gfc_target_expr_size (c->expr);
  
  	  if (mpz_cmp_si (c->offset, 0) != 0)
  	    len = elt_size * (size_t)mpz_get_si (c->offset);
--- 739,747 ----
        for (c = gfc_constructor_first (e->value.constructor);
  	   c; c = gfc_constructor_next (c))
  	{
! 	  size_t elt_size;
! 
! 	  gfc_target_expr_size (c->expr, &elt_size);
  
  	  if (mpz_cmp_si (c->offset, 0) != 0)
  	    len = elt_size * (size_t)mpz_get_si (c->offset);
diff -Nrcpad gcc-8.3.0/gcc/fortran/target-memory.h gcc-8.4.0/gcc/fortran/target-memory.h
*** gcc-8.3.0/gcc/fortran/target-memory.h	Mon Jan 22 13:31:08 2018
--- gcc-8.4.0/gcc/fortran/target-memory.h	Wed Mar  4 08:30:00 2020
*************** along with GCC; see the file COPYING3.
*** 24,31 ****
  /* Convert a BOZ to REAL or COMPLEX.  */
  bool gfc_convert_boz (gfc_expr *, gfc_typespec *);
  
! size_t gfc_element_size (gfc_expr *);
! size_t gfc_target_expr_size (gfc_expr *);
  
  /* Write a constant expression in binary form to a target buffer.  */
  size_t gfc_encode_character (int, size_t, const gfc_char_t *, unsigned char *,
--- 24,31 ----
  /* Convert a BOZ to REAL or COMPLEX.  */
  bool gfc_convert_boz (gfc_expr *, gfc_typespec *);
  
! bool gfc_element_size (gfc_expr *, size_t *);
! bool gfc_target_expr_size (gfc_expr *, size_t *);
  
  /* Write a constant expression in binary form to a target buffer.  */
  size_t gfc_encode_character (int, size_t, const gfc_char_t *, unsigned char *,
diff -Nrcpad gcc-8.3.0/gcc/fortran/trans-array.c gcc-8.4.0/gcc/fortran/trans-array.c
*** gcc-8.3.0/gcc/fortran/trans-array.c	Tue Feb  5 21:12:41 2019
--- gcc-8.4.0/gcc/fortran/trans-array.c	Wed Mar  4 08:30:00 2020
*************** gfc_trans_create_temp_array (stmtblock_t
*** 1164,1169 ****
--- 1164,1170 ----
    tree nelem;
    tree cond;
    tree or_expr;
+   tree elemsize;
    tree class_expr = NULL_TREE;
    int n, dim, tmp_dim;
    int total_dim = 0;
*************** gfc_trans_create_temp_array (stmtblock_t
*** 1329,1349 ****
  	}
      }
  
    /* Get the size of the array.  */
    if (size && !callee_alloc)
      {
-       tree elemsize;
        /* If or_expr is true, then the extent in at least one
  	 dimension is zero and the size is set to zero.  */
        size = fold_build3_loc (input_location, COND_EXPR, gfc_array_index_type,
  			      or_expr, gfc_index_zero_node, size);
  
        nelem = size;
-       if (class_expr == NULL_TREE)
- 	elemsize = fold_convert (gfc_array_index_type,
- 			TYPE_SIZE_UNIT (gfc_get_element_type (type)));
-       else
- 	elemsize = gfc_class_vtab_size_get (class_expr);
  
        size = fold_build2_loc (input_location, MULT_EXPR, gfc_array_index_type,
  			      size, elemsize);
--- 1330,1350 ----
  	}
      }
  
+   if (class_expr == NULL_TREE)
+     elemsize = fold_convert (gfc_array_index_type,
+ 			     TYPE_SIZE_UNIT (gfc_get_element_type (type)));
+   else
+     elemsize = gfc_class_vtab_size_get (class_expr);
+ 
    /* Get the size of the array.  */
    if (size && !callee_alloc)
      {
        /* If or_expr is true, then the extent in at least one
  	 dimension is zero and the size is set to zero.  */
        size = fold_build3_loc (input_location, COND_EXPR, gfc_array_index_type,
  			      or_expr, gfc_index_zero_node, size);
  
        nelem = size;
  
        size = fold_build2_loc (input_location, MULT_EXPR, gfc_array_index_type,
  			      size, elemsize);
*************** gfc_trans_create_temp_array (stmtblock_t
*** 1354,1359 ****
--- 1355,1364 ----
        size = NULL_TREE;
      }
  
+   /* Set the span.  */
+   tmp = fold_convert (gfc_array_index_type, elemsize);
+   gfc_conv_descriptor_span_set (pre, desc, tmp);
+ 
    gfc_trans_allocate_array_storage (pre, post, info, size, nelem, initial,
  				    dynamic, dealloc);
  
*************** gfc_scalar_elemental_arg_saved_as_refere
*** 2652,2657 ****
--- 2657,2665 ----
    if (ss_info->type != GFC_SS_REFERENCE)
      return false;
  
+   if (ss_info->data.scalar.needs_temporary)
+     return false;
+ 
    /* If the actual argument can be absent (in other words, it can
       be a NULL reference), don't try to evaluate it; pass instead
       the reference directly.  */
*************** gfc_conv_scalarized_array_ref (gfc_se *
*** 3414,3423 ****
    if (build_class_array_ref (se, base, index))
      return;
  
!   if (expr && ((is_subref_array (expr)
! 		&& GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (info->descriptor)))
! 	       || (expr->ts.deferred && (expr->expr_type == EXPR_VARIABLE
! 					 || expr->expr_type == EXPR_FUNCTION))))
      decl = expr->symtree->n.sym->backend_decl;
  
    /* A pointer array component can be detected from its field decl. Fix
--- 3422,3429 ----
    if (build_class_array_ref (se, base, index))
      return;
  
!   if (expr && (expr->ts.deferred && (expr->expr_type == EXPR_VARIABLE
! 				     || expr->expr_type == EXPR_FUNCTION)))
      decl = expr->symtree->n.sym->backend_decl;
  
    /* A pointer array component can be detected from its field decl. Fix
*************** gfc_is_reallocatable_lhs (gfc_expr *expr
*** 9527,9535 ****
    if (sym->ts.type == BT_CLASS
        && !sym->attr.associate_var
        && CLASS_DATA (sym)->attr.allocatable
!       && expr->ref && expr->ref->type == REF_COMPONENT
!       && strcmp (expr->ref->u.c.component->name, "_data") == 0
!       && expr->ref->next == NULL)
      return true;
  
    /* An allocatable variable.  */
--- 9533,9547 ----
    if (sym->ts.type == BT_CLASS
        && !sym->attr.associate_var
        && CLASS_DATA (sym)->attr.allocatable
!       && expr->ref
!       && ((expr->ref->type == REF_ARRAY && expr->ref->u.ar.type == AR_FULL
! 	   && expr->ref->next == NULL)
! 	  || (expr->ref->type == REF_COMPONENT
! 	      && strcmp (expr->ref->u.c.component->name, "_data") == 0
! 	      && (expr->ref->next == NULL
! 		  || (expr->ref->next->type == REF_ARRAY
! 		      && expr->ref->next->u.ar.type == AR_FULL
! 		      && expr->ref->next->next == NULL)))))
      return true;
  
    /* An allocatable variable.  */
*************** gfc_walk_variable_expr (gfc_ss * ss, gfc
*** 10350,10355 ****
--- 10362,10369 ----
  {
    gfc_ref *ref;
  
+   gfc_fix_class_refs (expr);
+ 
    for (ref = expr->ref; ref; ref = ref->next)
      if (ref->type == REF_ARRAY && ref->u.ar.type != AR_ELEMENT)
        break;
diff -Nrcpad gcc-8.3.0/gcc/fortran/trans-decl.c gcc-8.4.0/gcc/fortran/trans-decl.c
*** gcc-8.3.0/gcc/fortran/trans-decl.c	Thu Feb  7 14:52:41 2019
--- gcc-8.4.0/gcc/fortran/trans-decl.c	Wed Mar  4 08:30:00 2020
*************** gfc_get_label_decl (gfc_st_label * lp)
*** 342,405 ****
      }
  }
  
  
! /* Convert a gfc_symbol to an identifier of the same name.  */
! 
! static tree
! gfc_sym_identifier (gfc_symbol * sym)
  {
    if (sym->attr.is_main_program && strcmp (sym->name, "main") == 0)
!     return (get_identifier ("MAIN__"));
    else
!     return (get_identifier (sym->name));
  }
  
! 
! /* Construct mangled name from symbol name.  */
  
  static tree
! gfc_sym_mangled_identifier (gfc_symbol * sym)
  {
!   char name[GFC_MAX_MANGLED_SYMBOL_LEN + 1];
  
    /* Prevent the mangling of identifiers that have an assigned
       binding label (mainly those that are bind(c)).  */
    if (sym->attr.is_bind_c == 1 && sym->binding_label)
!     return get_identifier (sym->binding_label);
  
!   if (!sym->fn_result_spec)
      {
        if (sym->module == NULL)
! 	return gfc_sym_identifier (sym);
        else
! 	{
! 	  snprintf (name, sizeof name, "__%s_MOD_%s", sym->module, sym->name);
! 	  return get_identifier (name);
! 	}
      }
    else
      {
        /* This is an entity that is actually local to a module procedure
  	 that appears in the result specification expression.  Since
  	 sym->module will be a zero length string, we use ns->proc_name
! 	 instead. */
!       if (sym->ns->proc_name && sym->ns->proc_name->module)
! 	{
! 	  snprintf (name, sizeof name, "__%s_MOD__%s_PROC_%s",
! 		    sym->ns->proc_name->module,
! 		    sym->ns->proc_name->name,
! 		    sym->name);
! 	  return get_identifier (name);
! 	}
        else
! 	{
! 	  snprintf (name, sizeof name, "__%s_PROC_%s",
! 		    sym->ns->proc_name->name, sym->name);
! 	  return get_identifier (name);
! 	}
      }
  }
  
  
  /* Construct mangled function name from symbol name.  */
  
--- 342,427 ----
      }
  }
  
+ /* Return the name of an identifier.  */
  
! static const char *
! sym_identifier (gfc_symbol *sym)
  {
    if (sym->attr.is_main_program && strcmp (sym->name, "main") == 0)
!     return "MAIN__";
    else
!     return sym->name;
  }
  
! /* Convert a gfc_symbol to an identifier of the same name.  */
  
  static tree
! gfc_sym_identifier (gfc_symbol * sym)
  {
!   return get_identifier (sym_identifier (sym));
! }
  
+ /* Construct mangled name from symbol name.   */
+ 
+ static const char *
+ mangled_identifier (gfc_symbol *sym)
+ {
+   gfc_symbol *proc = sym->ns->proc_name;
+   static char name[3*GFC_MAX_MANGLED_SYMBOL_LEN + 14];
    /* Prevent the mangling of identifiers that have an assigned
       binding label (mainly those that are bind(c)).  */
+ 
    if (sym->attr.is_bind_c == 1 && sym->binding_label)
!     return sym->binding_label;
  
!   if (!sym->fn_result_spec
!       || (sym->module && !(proc && proc->attr.flavor == FL_PROCEDURE)))
      {
        if (sym->module == NULL)
! 	return sym_identifier (sym);
        else
! 	snprintf (name, sizeof name, "__%s_MOD_%s", sym->module, sym->name);
      }
    else
      {
        /* This is an entity that is actually local to a module procedure
  	 that appears in the result specification expression.  Since
  	 sym->module will be a zero length string, we use ns->proc_name
! 	 to provide the module name instead. */
!       if (proc && proc->module)
! 	snprintf (name, sizeof name, "__%s_MOD__%s_PROC_%s",
! 		  proc->module, proc->name, sym->name);
        else
! 	snprintf (name, sizeof name, "__%s_PROC_%s",
! 		  proc->name, sym->name);
      }
+ 
+   return name;
  }
  
+ /* Get mangled identifier, adding the symbol to the global table if
+    it is not yet already there.  */
+ 
+ static tree
+ gfc_sym_mangled_identifier (gfc_symbol * sym)
+ {
+   tree result;
+   gfc_gsymbol *gsym;
+   const char *name;
+ 
+   name = mangled_identifier (sym);
+   result = get_identifier (name);
+ 
+   gsym = gfc_find_gsymbol (gfc_gsym_root, name);
+   if (gsym == NULL)
+     {
+       gsym = gfc_get_gsymbol (name, false);
+       gsym->ns = sym->ns;
+       gsym->sym_name = sym->name;
+     }
+ 
+   return result;
+ }
  
  /* Construct mangled function name from symbol name.  */
  
*************** gfc_get_module_backend_decl (gfc_symbol
*** 839,845 ****
  	{
  	  if (!gsym)
  	    {
! 	      gsym = gfc_get_gsymbol (sym->module);
  	      gsym->type = GSYM_MODULE;
  	      gsym->ns = gfc_get_namespace (NULL, 0);
  	    }
--- 861,867 ----
  	{
  	  if (!gsym)
  	    {
! 	      gsym = gfc_get_gsymbol (sym->module, false);
  	      gsym->type = GSYM_MODULE;
  	      gsym->ns = gfc_get_namespace (NULL, 0);
  	    }
*************** gfc_get_symbol_decl (gfc_symbol * sym)
*** 1604,1618 ****
  	      /* Add the string length to the same context as the symbol.  */
  	      if (DECL_CONTEXT (length) == NULL_TREE)
  		{
! 		  if (DECL_CONTEXT (sym->backend_decl)
! 		      == current_function_decl)
  		    gfc_add_decl_to_function (length);
  		  else
  		    gfc_add_decl_to_parent_function (length);
  		}
  
! 	      gcc_assert (DECL_CONTEXT (sym->backend_decl)
! 			  == DECL_CONTEXT (length));
  
  	      gfc_defer_symbol_init (sym);
  	    }
--- 1626,1643 ----
  	      /* Add the string length to the same context as the symbol.  */
  	      if (DECL_CONTEXT (length) == NULL_TREE)
  		{
! 		  if (sym->backend_decl == current_function_decl
! 		      || (DECL_CONTEXT (sym->backend_decl)
! 			  == current_function_decl))
  		    gfc_add_decl_to_function (length);
  		  else
  		    gfc_add_decl_to_parent_function (length);
  		}
  
! 	      gcc_assert (sym->backend_decl == current_function_decl
! 			  ? DECL_CONTEXT (length) == current_function_decl
! 			  : (DECL_CONTEXT (sym->backend_decl)
! 			     == DECL_CONTEXT (length)));
  
  	      gfc_defer_symbol_init (sym);
  	    }
*************** gfc_get_symbol_decl (gfc_symbol * sym)
*** 1863,1871 ****
    if (sym->attr.associate_var)
      GFC_DECL_ASSOCIATE_VAR_P (decl) = 1;
  
!   if (sym->attr.vtab
!       || (sym->name[0] == '_' && strncmp ("__def_init", sym->name, 10) == 0))
!     TREE_READONLY (decl) = 1;
  
    return decl;
  }
--- 1888,1905 ----
    if (sym->attr.associate_var)
      GFC_DECL_ASSOCIATE_VAR_P (decl) = 1;
  
!   /* We only mark __def_init as read-only if it actually has an
!      initializer so it does not needlessly take up space in the
!      read-only section and can go into the BSS instead, see PR 84487.
!      Marking this as artificial means that OpenMP will treat this as
!      predetermined shared.  */
! 
!   if (sym->attr.vtab || strncmp ("__def_init", sym->name, 10) == 0)
!     {
!       DECL_ARTIFICIAL (decl) = 1;
!       if (sym->attr.vtab || sym->value)
! 	TREE_READONLY (decl) = 1;
!     }
  
    return decl;
  }
*************** get_proc_pointer_decl (gfc_symbol *sym)
*** 1905,1910 ****
--- 1939,1960 ----
    tree decl;
    tree attributes;
  
+   if (sym->module || sym->fn_result_spec)
+     {
+       const char *name;
+       gfc_gsymbol *gsym;
+ 
+       name = mangled_identifier (sym);
+       gsym = gfc_find_gsymbol (gfc_gsym_root, name);
+       if (gsym != NULL)
+ 	{
+ 	  gfc_symbol *s;
+ 	  gfc_find_symbol (sym->name, gsym->ns, 0, &s);
+ 	  if (s && s->backend_decl)
+ 	    return s->backend_decl;
+ 	}
+     }
+ 
    decl = sym->backend_decl;
    if (decl)
      return decl;
*************** get_proc_pointer_decl (gfc_symbol *sym)
*** 1977,1983 ****
  /* Get a basic decl for an external function.  */
  
  tree
! gfc_get_extern_function_decl (gfc_symbol * sym)
  {
    tree type;
    tree fndecl;
--- 2027,2033 ----
  /* Get a basic decl for an external function.  */
  
  tree
! gfc_get_extern_function_decl (gfc_symbol * sym, gfc_actual_arglist *actual_args)
  {
    tree type;
    tree fndecl;
*************** gfc_get_extern_function_decl (gfc_symbol
*** 2002,2010 ****
      return get_proc_pointer_decl (sym);
  
    /* See if this is an external procedure from the same file.  If so,
!      return the backend_decl.  */
!   gsym =  gfc_find_gsymbol (gfc_gsym_root, sym->binding_label
! 					   ? sym->binding_label : sym->name);
  
    if (gsym && !gsym->defined)
      gsym = NULL;
--- 2052,2073 ----
      return get_proc_pointer_decl (sym);
  
    /* See if this is an external procedure from the same file.  If so,
!      return the backend_decl.  If we are looking at a BIND(C)
!      procedure and the symbol is not BIND(C), or vice versa, we
!      haven't found the right procedure.  */
! 
!   if (sym->binding_label)
!     {
!       gsym = gfc_find_gsymbol (gfc_gsym_root, sym->binding_label);
!       if (gsym && !gsym->bind_c)
! 	gsym = NULL;
!     }
!   else
!     {
!       gsym = gfc_find_gsymbol (gfc_gsym_root, sym->name);
!       if (gsym && gsym->bind_c)
! 	gsym = NULL;
!     }
  
    if (gsym && !gsym->defined)
      gsym = NULL;
*************** module_sym:
*** 2150,2156 ****
        mangled_name = gfc_sym_mangled_function_id (sym);
      }
  
!   type = gfc_get_function_type (sym);
    fndecl = build_decl (input_location,
  		       FUNCTION_DECL, name, type);
  
--- 2213,2219 ----
        mangled_name = gfc_sym_mangled_function_id (sym);
      }
  
!   type = gfc_get_function_type (sym, actual_args);
    fndecl = build_decl (input_location,
  		       FUNCTION_DECL, name, type);
  
*************** create_function_arglist (gfc_symbol * sy
*** 2500,2505 ****
--- 2563,2579 ----
  	  TREE_READONLY (length) = 1;
  	  gfc_finish_decl (length);
  
+ 	  /* Marking the length DECL_HIDDEN_STRING_LENGTH will lead
+ 	     to tail calls being disabled.  Only do that if we
+ 	     potentially have broken callers.  */
+ 	  if (flag_tail_call_workaround
+ 	      && f->sym->ts.u.cl
+ 	      && f->sym->ts.u.cl->length
+ 	      && f->sym->ts.u.cl->length->expr_type == EXPR_CONSTANT
+ 	      && (flag_tail_call_workaround == 2
+ 		  || f->sym->ns->implicit_interface_calls))
+ 	    DECL_HIDDEN_STRING_LENGTH (length) = 1;
+ 
  	  /* Remember the passed value.  */
            if (!f->sym->ts.u.cl ||  f->sym->ts.u.cl->passed_length)
              {
*************** generate_coarray_sym_init (gfc_symbol *s
*** 5384,5389 ****
--- 5458,5490 ----
    /* Handle "static" initializer.  */
    if (sym->value)
      {
+       if (sym->value->expr_type == EXPR_ARRAY)
+ 	{
+ 	  gfc_constructor *c, *cnext;
+ 
+ 	  /* Test if the array has more than one element.  */
+ 	  c = gfc_constructor_first (sym->value->value.constructor);
+ 	  gcc_assert (c);  /* Empty constructor should not happen here.  */
+ 	  cnext = gfc_constructor_next (c);
+ 
+ 	  if (cnext)
+ 	    {
+ 	      /* An EXPR_ARRAY with a rank > 1 here has to come from a
+ 		 DATA statement.  Set its rank here as not to confuse
+ 		 the following steps.   */
+ 	      sym->value->rank = 1;
+ 	    }
+ 	  else
+ 	    {
+ 	      /* There is only a single value in the constructor, use
+ 		 it directly for the assignment.  */
+ 	      gfc_expr *new_expr;
+ 	      new_expr = gfc_copy_expr (c->expr);
+ 	      gfc_free_expr (sym->value);
+ 	      sym->value = new_expr;
+ 	    }
+ 	}
+ 
        sym->attr.pointer = 1;
        tmp = gfc_trans_assignment (gfc_lval_expr_from_sym (sym), sym->value,
  				  true, false);
*************** generate_local_decl (gfc_symbol * sym)
*** 5628,5636 ****
  	    }
  	  else if (warn_unused_dummy_argument)
  	    {
! 	      gfc_warning (OPT_Wunused_dummy_argument,
! 			   "Unused dummy argument %qs at %L", sym->name,
! 			   &sym->declared_at);
  	      if (sym->backend_decl != NULL_TREE)
  		TREE_NO_WARNING(sym->backend_decl) = 1;
  	    }
--- 5729,5739 ----
  	    }
  	  else if (warn_unused_dummy_argument)
  	    {
! 	      if (!sym->attr.artificial)
! 		gfc_warning (OPT_Wunused_dummy_argument,
! 			     "Unused dummy argument %qs at %L", sym->name,
! 			     &sym->declared_at);
! 
  	      if (sym->backend_decl != NULL_TREE)
  		TREE_NO_WARNING(sym->backend_decl) = 1;
  	    }
*************** generate_local_decl (gfc_symbol * sym)
*** 5722,5728 ****
  
        if (sym->ns && sym->ns->construct_entities)
  	{
! 	  if (sym->attr.referenced)
  	    gfc_get_symbol_decl (sym);
  	  sym->mark = 1;
  	}
--- 5825,5838 ----
  
        if (sym->ns && sym->ns->construct_entities)
  	{
! 	  /* Construction of the intrinsic modules within a BLOCK
! 	     construct, where ONLY and RENAMED entities are included,
! 	     seems to be bogus.  This is a workaround that can be removed
! 	     if someone ever takes on the task to creating full-fledge
! 	     modules.  See PR 69455.  */
! 	  if (sym->attr.referenced
! 	      && sym->from_intmod != INTMOD_ISO_C_BINDING
! 	      && sym->from_intmod != INTMOD_ISO_FORTRAN_ENV)
  	    gfc_get_symbol_decl (sym);
  	  sym->mark = 1;
  	}
diff -Nrcpad gcc-8.3.0/gcc/fortran/trans-expr.c gcc-8.4.0/gcc/fortran/trans-expr.c
*** gcc-8.3.0/gcc/fortran/trans-expr.c	Sun Feb  3 14:50:07 2019
--- gcc-8.4.0/gcc/fortran/trans-expr.c	Wed Mar  4 08:30:00 2020
*************** gfc_vptr_size_get (tree vptr)
*** 352,358 ****
     of refs following.  */
  
  gfc_expr *
! gfc_find_and_cut_at_last_class_ref (gfc_expr *e)
  {
    gfc_expr *base_expr;
    gfc_ref *ref, *class_ref, *tail = NULL, *array_ref;
--- 352,358 ----
     of refs following.  */
  
  gfc_expr *
! gfc_find_and_cut_at_last_class_ref (gfc_expr *e, bool is_mold)
  {
    gfc_expr *base_expr;
    gfc_ref *ref, *class_ref, *tail = NULL, *array_ref;
*************** gfc_find_and_cut_at_last_class_ref (gfc_
*** 394,400 ****
        e->ref = NULL;
      }
  
!   base_expr = gfc_copy_expr (e);
  
    /* Restore the original tail expression.  */
    if (class_ref)
--- 394,403 ----
        e->ref = NULL;
      }
  
!   if (is_mold)
!     base_expr = gfc_expr_to_initialize (e);
!   else
!     base_expr = gfc_copy_expr (e);
  
    /* Restore the original tail expression.  */
    if (class_ref)
*************** conv_base_obj_fcn_val (gfc_se * se, tree
*** 3834,3840 ****
  
  
  static void
! conv_function_val (gfc_se * se, gfc_symbol * sym, gfc_expr * expr)
  {
    tree tmp;
  
--- 3837,3844 ----
  
  
  static void
! conv_function_val (gfc_se * se, gfc_symbol * sym, gfc_expr * expr,
! 		   gfc_actual_arglist *actual_args)
  {
    tree tmp;
  
*************** conv_function_val (gfc_se * se, gfc_symb
*** 3852,3858 ****
    else
      {
        if (!sym->backend_decl)
! 	sym->backend_decl = gfc_get_extern_function_decl (sym);
  
        TREE_USED (sym->backend_decl) = 1;
  
--- 3856,3862 ----
    else
      {
        if (!sym->backend_decl)
! 	sym->backend_decl = gfc_get_extern_function_decl (sym, actual_args);
  
        TREE_USED (sym->backend_decl) = 1;
  
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 6276,6282 ****
  
    /* Generate the actual call.  */
    if (base_object == NULL_TREE)
!     conv_function_val (se, sym, expr);
    else
      conv_base_obj_fcn_val (se, base_object, expr);
  
--- 6280,6286 ----
  
    /* Generate the actual call.  */
    if (base_object == NULL_TREE)
!     conv_function_val (se, sym, expr, args);
    else
      conv_base_obj_fcn_val (se, base_object, expr);
  
*************** trans_caf_token_assign (gfc_se *lse, gfc
*** 8385,8407 ****
      }
  }
  
- /* Indentify class valued proc_pointer assignments.  */
- 
- static bool
- pointer_assignment_is_proc_pointer (gfc_expr * expr1, gfc_expr * expr2)
- {
-   gfc_ref * ref;
- 
-   ref = expr1->ref;
-   while (ref && ref->next)
-      ref = ref->next;
- 
-   return ref && ref->type == REF_COMPONENT
-       && ref->u.c.component->attr.proc_pointer
-       && expr2->expr_type == EXPR_VARIABLE
-       && expr2->symtree->n.sym->attr.flavor == FL_PROCEDURE;
- }
- 
  
  /* Do everything that is needed for a CLASS function expr2.  */
  
--- 8389,8394 ----
*************** gfc_trans_pointer_assignment (gfc_expr *
*** 8454,8460 ****
    tree desc;
    tree tmp;
    tree expr1_vptr = NULL_TREE;
!   bool scalar, non_proc_pointer_assign;
    gfc_ss *ss;
  
    gfc_start_block (&block);
--- 8441,8447 ----
    tree desc;
    tree tmp;
    tree expr1_vptr = NULL_TREE;
!   bool scalar, non_proc_ptr_assign;
    gfc_ss *ss;
  
    gfc_start_block (&block);
*************** gfc_trans_pointer_assignment (gfc_expr *
*** 8462,8468 ****
    gfc_init_se (&lse, NULL);
  
    /* Usually testing whether this is not a proc pointer assignment.  */
!   non_proc_pointer_assign = !pointer_assignment_is_proc_pointer (expr1, expr2);
  
    /* Check whether the expression is a scalar or not; we cannot use
       expr1->rank as it can be nonzero for proc pointers.  */
--- 8449,8457 ----
    gfc_init_se (&lse, NULL);
  
    /* Usually testing whether this is not a proc pointer assignment.  */
!   non_proc_ptr_assign = !(gfc_expr_attr (expr1).proc_pointer
! 			&& expr2->expr_type == EXPR_VARIABLE
! 			&& expr2->symtree->n.sym->attr.flavor == FL_PROCEDURE);
  
    /* Check whether the expression is a scalar or not; we cannot use
       expr1->rank as it can be nonzero for proc pointers.  */
*************** gfc_trans_pointer_assignment (gfc_expr *
*** 8472,8478 ****
      gfc_free_ss_chain (ss);
  
    if (expr1->ts.type == BT_DERIVED && expr2->ts.type == BT_CLASS
!       && expr2->expr_type != EXPR_FUNCTION && non_proc_pointer_assign)
      {
        gfc_add_data_component (expr2);
        /* The following is required as gfc_add_data_component doesn't
--- 8461,8467 ----
      gfc_free_ss_chain (ss);
  
    if (expr1->ts.type == BT_DERIVED && expr2->ts.type == BT_CLASS
!       && expr2->expr_type != EXPR_FUNCTION && non_proc_ptr_assign)
      {
        gfc_add_data_component (expr2);
        /* The following is required as gfc_add_data_component doesn't
*************** gfc_trans_pointer_assignment (gfc_expr *
*** 8492,8498 ****
        else
  	gfc_conv_expr (&rse, expr2);
  
!       if (non_proc_pointer_assign && expr1->ts.type == BT_CLASS)
  	{
  	  trans_class_vptr_len_assignment (&block, expr1, expr2, &rse, NULL,
  					   NULL);
--- 8481,8487 ----
        else
  	gfc_conv_expr (&rse, expr2);
  
!       if (non_proc_ptr_assign && expr1->ts.type == BT_CLASS)
  	{
  	  trans_class_vptr_len_assignment (&block, expr1, expr2, &rse, NULL,
  					   NULL);
diff -Nrcpad gcc-8.3.0/gcc/fortran/trans-intrinsic.c gcc-8.4.0/gcc/fortran/trans-intrinsic.c
*** gcc-8.3.0/gcc/fortran/trans-intrinsic.c	Fri May 25 22:06:57 2018
--- gcc-8.4.0/gcc/fortran/trans-intrinsic.c	Wed Mar  4 08:30:00 2020
*************** gfc_conv_intrinsic_size (gfc_se * se, gf
*** 6820,6825 ****
--- 6820,6827 ----
    tree fncall0;
    tree fncall1;
    gfc_se argse;
+   gfc_expr *e;
+   gfc_symbol *sym = NULL;
  
    gfc_init_se (&argse, NULL);
    actual = expr->value.function.actual;
*************** gfc_conv_intrinsic_size (gfc_se * se, gf
*** 6827,6838 ****
    if (actual->expr->ts.type == BT_CLASS)
      gfc_add_class_array_ref (actual->expr);
  
    argse.data_not_needed = 1;
!   if (gfc_is_class_array_function (actual->expr))
      {
        /* For functions that return a class array conv_expr_descriptor is not
  	 able to get the descriptor right.  Therefore this special case.  */
!       gfc_conv_expr_reference (&argse, actual->expr);
        argse.expr = gfc_build_addr_expr (NULL_TREE,
  					gfc_class_data_get (argse.expr));
      }
--- 6829,6859 ----
    if (actual->expr->ts.type == BT_CLASS)
      gfc_add_class_array_ref (actual->expr);
  
+   e = actual->expr;
+ 
+   /* These are emerging from the interface mapping, when a class valued
+      function appears as the rhs in a realloc on assign statement, where
+      the size of the result is that of one of the actual arguments.  */
+   if (e->expr_type == EXPR_VARIABLE
+       && e->symtree->n.sym->ns == NULL /* This is distinctive!  */
+       && e->symtree->n.sym->ts.type == BT_CLASS
+       && e->ref && e->ref->type == REF_COMPONENT
+       && strcmp (e->ref->u.c.component->name, "_data") == 0)
+     sym = e->symtree->n.sym;
+ 
    argse.data_not_needed = 1;
!   if (gfc_is_class_array_function (e))
      {
        /* For functions that return a class array conv_expr_descriptor is not
  	 able to get the descriptor right.  Therefore this special case.  */
!       gfc_conv_expr_reference (&argse, e);
!       argse.expr = gfc_build_addr_expr (NULL_TREE,
! 					gfc_class_data_get (argse.expr));
!     }
!   else if (sym && sym->backend_decl)
!     {
!       gcc_assert (GFC_CLASS_TYPE_P (TREE_TYPE (sym->backend_decl)));
!       argse.expr = sym->backend_decl;
        argse.expr = gfc_build_addr_expr (NULL_TREE,
  					gfc_class_data_get (argse.expr));
      }
diff -Nrcpad gcc-8.3.0/gcc/fortran/trans-io.c gcc-8.4.0/gcc/fortran/trans-io.c
*** gcc-8.3.0/gcc/fortran/trans-io.c	Wed Mar 28 11:59:06 2018
--- gcc-8.4.0/gcc/fortran/trans-io.c	Wed Mar  4 08:30:00 2020
*************** transfer_expr (gfc_se * se, gfc_typespec
*** 2408,2415 ****
  
      case_bt_struct:
      case BT_CLASS:
-       if (ts->u.derived->components == NULL)
- 	return;
        if (gfc_bt_struct (ts->type) || ts->type == BT_CLASS)
  	{
  	  gfc_symbol *derived;
--- 2408,2413 ----
diff -Nrcpad gcc-8.3.0/gcc/fortran/trans-openmp.c gcc-8.4.0/gcc/fortran/trans-openmp.c
*** gcc-8.3.0/gcc/fortran/trans-openmp.c	Tue Jan  8 10:18:34 2019
--- gcc-8.4.0/gcc/fortran/trans-openmp.c	Wed Mar  4 08:30:00 2020
*************** gfc_omp_clause_default_ctor (tree clause
*** 548,553 ****
--- 548,556 ----
  			     build3_loc (input_location, COND_EXPR,
  					 void_type_node, cond, then_b,
  					 else_b));
+       /* Avoid -W*uninitialized warnings.  */
+       if (DECL_P (decl))
+ 	TREE_NO_WARNING (decl) = 1;
      }
    else
      gfc_add_expr_to_block (&block, then_b);
*************** gfc_omp_clause_copy_ctor (tree clause, t
*** 654,659 ****
--- 657,665 ----
    gfc_add_expr_to_block (&block,
  			 build3_loc (input_location, COND_EXPR,
  				     void_type_node, cond, then_b, else_b));
+   /* Avoid -W*uninitialized warnings.  */
+   if (DECL_P (dest))
+     TREE_NO_WARNING (dest) = 1;
  
    return gfc_finish_block (&block);
  }
*************** gfc_trans_omp_atomic (gfc_code *code)
*** 3176,3182 ****
    expr2 = code->expr2;
    if (((atomic_code->ext.omp_atomic & GFC_OMP_ATOMIC_MASK)
         != GFC_OMP_ATOMIC_WRITE)
-       && (atomic_code->ext.omp_atomic & GFC_OMP_ATOMIC_SWAP) == 0
        && expr2->expr_type == EXPR_FUNCTION
        && expr2->value.function.isym
        && expr2->value.function.isym->id == GFC_ISYM_CONVERSION)
--- 3182,3187 ----
*************** gfc_trans_omp_target (gfc_code *code)
*** 4740,4745 ****
--- 4745,4751 ----
        {
  	stmtblock_t iblock;
  
+ 	pushlevel ();
  	gfc_start_block (&iblock);
  	tree inner_clauses
  	  = gfc_trans_omp_clauses (&block, &clausesa[GFC_OMP_SPLIT_PARALLEL],
diff -Nrcpad gcc-8.3.0/gcc/fortran/trans-stmt.c gcc-8.4.0/gcc/fortran/trans-stmt.c
*** gcc-8.3.0/gcc/fortran/trans-stmt.c	Mon Oct  8 13:02:36 2018
--- gcc-8.4.0/gcc/fortran/trans-stmt.c	Wed Mar  4 08:30:00 2020
*************** trans_associate_var (gfc_symbol *sym, gf
*** 1842,1848 ****
  	    {
  	      if (e->symtree
  		  && DECL_LANG_SPECIFIC (e->symtree->n.sym->backend_decl)
! 		 && GFC_DECL_SAVED_DESCRIPTOR (e->symtree->n.sym->backend_decl))
  		/* Use the original class descriptor stored in the saved
  		   descriptor to get the target_expr.  */
  		target_expr =
--- 1842,1849 ----
  	    {
  	      if (e->symtree
  		  && DECL_LANG_SPECIFIC (e->symtree->n.sym->backend_decl)
! 		  && GFC_DECL_SAVED_DESCRIPTOR (e->symtree->n.sym->backend_decl)
! 		  && TREE_CODE (target_expr) != COMPONENT_REF)
  		/* Use the original class descriptor stored in the saved
  		   descriptor to get the target_expr.  */
  		target_expr =
*************** gfc_trans_allocate (gfc_code * code)
*** 6606,6612 ****
  	  /* Use class_init_assign to initialize expr.  */
  	  gfc_code *ini;
  	  ini = gfc_get_code (EXEC_INIT_ASSIGN);
! 	  ini->expr1 = gfc_find_and_cut_at_last_class_ref (expr);
  	  tmp = gfc_trans_class_init_assign (ini);
  	  gfc_free_statements (ini);
  	  gfc_add_expr_to_block (&block, tmp);
--- 6607,6613 ----
  	  /* Use class_init_assign to initialize expr.  */
  	  gfc_code *ini;
  	  ini = gfc_get_code (EXEC_INIT_ASSIGN);
! 	  ini->expr1 = gfc_find_and_cut_at_last_class_ref (expr, true);
  	  tmp = gfc_trans_class_init_assign (ini);
  	  gfc_free_statements (ini);
  	  gfc_add_expr_to_block (&block, tmp);
diff -Nrcpad gcc-8.3.0/gcc/fortran/trans-types.c gcc-8.4.0/gcc/fortran/trans-types.c
*** gcc-8.3.0/gcc/fortran/trans-types.c	Sun May 13 18:07:54 2018
--- gcc-8.4.0/gcc/fortran/trans-types.c	Wed Mar  4 08:30:00 2020
*************** gfc_typenode_for_spec (gfc_typespec * sp
*** 1213,1219 ****
          {
            spec->type = BT_INTEGER;
            spec->kind = gfc_index_integer_kind;
!           spec->f90_type = BT_VOID;
          }
        break;
      case BT_VOID:
--- 1213,1220 ----
          {
            spec->type = BT_INTEGER;
            spec->kind = gfc_index_integer_kind;
! 	  spec->f90_type = BT_VOID;
! 	  spec->is_c_interop = 1;  /* Mark as escaping later.  */
          }
        break;
      case BT_VOID:
*************** gfc_typenode_for_spec (gfc_typespec * sp
*** 1230,1235 ****
--- 1231,1239 ----
  	    basetype = pfunc_type_node;
  	}
         break;
+     case BT_PROCEDURE:
+       basetype = pfunc_type_node;
+       break;
      default:
        gcc_unreachable ();
      }
*************** create_fn_spec (gfc_symbol *sym, tree fn
*** 2978,2984 ****
  		    || f->sym->ts.u.derived->attr.pointer_comp))
  	    || (f->sym->ts.type == BT_CLASS
  		&& (CLASS_DATA (f->sym)->ts.u.derived->attr.proc_pointer_comp
! 		    || CLASS_DATA (f->sym)->ts.u.derived->attr.pointer_comp)))
  	  spec[spec_len++] = '.';
  	else if (f->sym->attr.intent == INTENT_IN)
  	  spec[spec_len++] = 'r';
--- 2982,2989 ----
  		    || f->sym->ts.u.derived->attr.pointer_comp))
  	    || (f->sym->ts.type == BT_CLASS
  		&& (CLASS_DATA (f->sym)->ts.u.derived->attr.proc_pointer_comp
! 		    || CLASS_DATA (f->sym)->ts.u.derived->attr.pointer_comp))
! 	    || (f->sym->ts.type == BT_INTEGER && f->sym->ts.is_c_interop))
  	  spec[spec_len++] = '.';
  	else if (f->sym->attr.intent == INTENT_IN)
  	  spec[spec_len++] = 'r';
*************** create_fn_spec (gfc_symbol *sym, tree fn
*** 2991,2999 ****
    return build_type_attribute_variant (fntype, tmp);
  }
  
  
  tree
! gfc_get_function_type (gfc_symbol * sym)
  {
    tree type;
    vec<tree, va_gc> *typelist = NULL;
--- 2996,3060 ----
    return build_type_attribute_variant (fntype, tmp);
  }
  
+ /* Helper function - if we do not find an interface for a procedure,
+    construct it from the actual arglist.  Luckily, this can only
+    happen for call by reference, so the information we actually need
+    to provide (and which would be impossible to guess from the call
+    itself) is not actually needed.  */
+ 
+ static void
+ get_formal_from_actual_arglist (gfc_symbol *sym, gfc_actual_arglist *actual_args)
+ {
+   gfc_actual_arglist *a;
+   gfc_formal_arglist **f;
+   gfc_symbol *s;
+   char name[GFC_MAX_SYMBOL_LEN + 1];
+   static int var_num;
+ 
+   f = &sym->formal;
+   for (a = actual_args; a != NULL; a = a->next)
+     {
+       (*f) = gfc_get_formal_arglist ();
+       if (a->expr)
+ 	{
+ 	  snprintf (name, GFC_MAX_SYMBOL_LEN, "_formal_%d", var_num ++);
+ 	  gfc_get_symbol (name, gfc_current_ns, &s);
+ 	  if (a->expr->ts.type == BT_PROCEDURE)
+ 	    {
+ 	      s->attr.flavor = FL_PROCEDURE;
+ 	    }
+ 	  else
+ 	    {
+ 	      s->ts = a->expr->ts;
+ 
+ 	      if (s->ts.type == BT_CHARACTER)
+ 		  s->ts.u.cl = gfc_get_charlen ();
+ 
+ 	      s->ts.deferred = 0;
+ 	      s->ts.is_iso_c = 0;
+ 	      s->ts.is_c_interop = 0;
+ 	      s->attr.flavor = FL_VARIABLE;
+ 	      if (a->expr->rank > 0)
+ 		{
+ 		  s->attr.dimension = 1;
+ 		  s->as = gfc_get_array_spec ();
+ 		  s->as->type = AS_ASSUMED_SIZE;
+ 		}
+ 	    }
+ 	  s->attr.dummy = 1;
+ 	  s->attr.artificial = 1;
+ 	  s->attr.intent = INTENT_UNKNOWN;
+ 	  (*f)->sym = s;
+ 	}
+       else  /* If a->expr is NULL, this is an alternate rerturn.  */
+ 	(*f)->sym = NULL;
+ 
+       f = &((*f)->next);
+     }
+ }
  
  tree
! gfc_get_function_type (gfc_symbol * sym, gfc_actual_arglist *actual_args)
  {
    tree type;
    vec<tree, va_gc> *typelist = NULL;
*************** gfc_get_function_type (gfc_symbol * sym)
*** 3051,3056 ****
--- 3112,3121 ----
  	    vec_safe_push (typelist, build_pointer_type(gfc_charlen_type_node));
  	}
      }
+   if (sym->backend_decl == error_mark_node && actual_args != NULL
+       && sym->formal == NULL && (sym->attr.proc == PROC_EXTERNAL
+ 				 || sym->attr.proc == PROC_UNKNOWN))
+     get_formal_from_actual_arglist (sym, actual_args);
  
    /* Build the argument types for the function.  */
    for (f = gfc_sym_get_dummy_args (sym); f; f = f->next)
diff -Nrcpad gcc-8.3.0/gcc/fortran/trans-types.h gcc-8.4.0/gcc/fortran/trans-types.h
*** gcc-8.3.0/gcc/fortran/trans-types.h	Thu Jan 25 19:09:40 2018
--- gcc-8.4.0/gcc/fortran/trans-types.h	Wed Mar  4 08:30:00 2020
*************** tree gfc_sym_type (gfc_symbol *);
*** 88,94 ****
  tree gfc_typenode_for_spec (gfc_typespec *, int c = 0);
  int gfc_copy_dt_decls_ifequal (gfc_symbol *, gfc_symbol *, bool);
  
! tree gfc_get_function_type (gfc_symbol *);
  
  tree gfc_type_for_size (unsigned, int);
  tree gfc_type_for_mode (machine_mode, int);
--- 88,94 ----
  tree gfc_typenode_for_spec (gfc_typespec *, int c = 0);
  int gfc_copy_dt_decls_ifequal (gfc_symbol *, gfc_symbol *, bool);
  
! tree gfc_get_function_type (gfc_symbol *, gfc_actual_arglist *args = NULL);
  
  tree gfc_type_for_size (unsigned, int);
  tree gfc_type_for_mode (machine_mode, int);
diff -Nrcpad gcc-8.3.0/gcc/fortran/trans.h gcc-8.4.0/gcc/fortran/trans.h
*** gcc-8.3.0/gcc/fortran/trans.h	Sat Jun  9 14:15:53 2018
--- gcc-8.4.0/gcc/fortran/trans.h	Wed Mar  4 08:30:00 2020
*************** tree gfc_class_data_get (tree);
*** 412,418 ****
  tree gfc_class_vptr_get (tree);
  tree gfc_class_len_get (tree);
  tree gfc_class_len_or_zero_get (tree);
! gfc_expr * gfc_find_and_cut_at_last_class_ref (gfc_expr *);
  /* Get an accessor to the class' vtab's * field, when a class handle is
     available.  */
  tree gfc_class_vtab_hash_get (tree);
--- 412,418 ----
  tree gfc_class_vptr_get (tree);
  tree gfc_class_len_get (tree);
  tree gfc_class_len_or_zero_get (tree);
! gfc_expr * gfc_find_and_cut_at_last_class_ref (gfc_expr *, bool is_mold = false);
  /* Get an accessor to the class' vtab's * field, when a class handle is
     available.  */
  tree gfc_class_vtab_hash_get (tree);
*************** void gfc_merge_block_scope (stmtblock_t
*** 579,585 ****
  tree gfc_get_label_decl (gfc_st_label *);
  
  /* Return the decl for an external function.  */
! tree gfc_get_extern_function_decl (gfc_symbol *);
  
  /* Return the decl for a function.  */
  tree gfc_get_function_decl (gfc_symbol *);
--- 579,586 ----
  tree gfc_get_label_decl (gfc_st_label *);
  
  /* Return the decl for an external function.  */
! tree gfc_get_extern_function_decl (gfc_symbol *,
! 				   gfc_actual_arglist *args = NULL);
  
  /* Return the decl for a function.  */
  tree gfc_get_function_decl (gfc_symbol *);
diff -Nrcpad gcc-8.3.0/gcc/function.c gcc-8.4.0/gcc/function.c
*** gcc-8.3.0/gcc/function.c	Sat Dec 15 12:05:08 2018
--- gcc-8.4.0/gcc/function.c	Wed Mar  4 08:30:00 2020
*************** assign_parm_find_data_types (struct assi
*** 2477,2484 ****
    /* If the parm is to be passed as a transparent union or record, use the
       type of the first field for the tests below.  We have already verified
       that the modes are the same.  */
!   if ((TREE_CODE (passed_type) == UNION_TYPE
!        || TREE_CODE (passed_type) == RECORD_TYPE)
        && TYPE_TRANSPARENT_AGGR (passed_type))
      passed_type = TREE_TYPE (first_field (passed_type));
  
--- 2477,2483 ----
    /* If the parm is to be passed as a transparent union or record, use the
       type of the first field for the tests below.  We have already verified
       that the modes are the same.  */
!   if (RECORD_OR_UNION_TYPE_P (passed_type)
        && TYPE_TRANSPARENT_AGGR (passed_type))
      passed_type = TREE_TYPE (first_field (passed_type));
  
*************** assign_parm_setup_block (struct assign_p
*** 3098,3104 ****
  	move_block_from_reg (REGNO (entry_parm), mem,
  			     size_stored / UNITS_PER_WORD);
      }
!   else if (data->stack_parm == 0)
      {
        push_to_sequence2 (all->first_conversion_insn, all->last_conversion_insn);
        emit_block_move (stack_parm, data->entry_parm, GEN_INT (size),
--- 3097,3103 ----
  	move_block_from_reg (REGNO (entry_parm), mem,
  			     size_stored / UNITS_PER_WORD);
      }
!   else if (data->stack_parm == 0 && !TYPE_EMPTY_P (data->passed_type))
      {
        push_to_sequence2 (all->first_conversion_insn, all->last_conversion_insn);
        emit_block_move (stack_parm, data->entry_parm, GEN_INT (size),
*************** assign_parm_setup_stack (struct assign_p
*** 3474,3480 ****
        dest = validize_mem (copy_rtx (data->stack_parm));
        src = validize_mem (copy_rtx (data->entry_parm));
  
!       if (MEM_P (src))
  	{
  	  /* Use a block move to handle potentially misaligned entry_parm.  */
  	  if (!to_conversion)
--- 3473,3481 ----
        dest = validize_mem (copy_rtx (data->stack_parm));
        src = validize_mem (copy_rtx (data->entry_parm));
  
!       if (TYPE_EMPTY_P (data->passed_type))
! 	/* Empty types don't really need to be copied.  */;
!       else if (MEM_P (src))
  	{
  	  /* Use a block move to handle potentially misaligned entry_parm.  */
  	  if (!to_conversion)
*************** assign_parms (tree fndecl)
*** 3749,3754 ****
--- 3750,3765 ----
  	{
  	  assign_parm_find_stack_rtl (parm, &data);
  	  assign_parm_adjust_entry_rtl (&data);
+ 	  /* For arguments that occupy no space in the parameter
+ 	     passing area, have non-zero size and have address taken,
+ 	     force creation of a stack slot so that they have distinct
+ 	     address from other parameters.  */
+ 	  if (TYPE_EMPTY_P (data.passed_type)
+ 	      && TREE_ADDRESSABLE (parm)
+ 	      && data.entry_parm == data.stack_parm
+ 	      && MEM_P (data.entry_parm)
+ 	      && int_size_in_bytes (data.passed_type))
+ 	    data.stack_parm = NULL_RTX;
  	}
        if (!POINTER_BOUNDS_TYPE_P (data.passed_type))
  	{
diff -Nrcpad gcc-8.3.0/gcc/gcov.c gcc-8.4.0/gcc/gcov.c
*** gcc-8.3.0/gcc/gcov.c	Tue Sep 18 09:32:09 2018
--- gcc-8.4.0/gcc/gcov.c	Wed Mar  4 08:30:00 2020
*************** bool function_info::group_line_p (unsign
*** 604,630 ****
  typedef vector<arc_info *> arc_vector_t;
  typedef vector<const block_info *> block_vector_t;
  
- /* Enum with types of loop in CFG.  */
- 
- enum loop_type
- {
-   NO_LOOP = 0,
-   LOOP = 1,
-   NEGATIVE_LOOP = 3
- };
- 
- /* Loop_type operator that merges two values: A and B.  */
- 
- inline loop_type& operator |= (loop_type& a, loop_type b)
- {
-     return a = static_cast<loop_type> (a | b);
- }
- 
  /* Handle cycle identified by EDGES, where the function finds minimum cs_count
     and subtract the value from all counts.  The subtracted value is added
     to COUNT.  Returns type of loop.  */
  
! static loop_type
  handle_cycle (const arc_vector_t &edges, int64_t &count)
  {
    /* Find the minimum edge of the cycle, and reduce all nodes in the cycle by
--- 604,614 ----
  typedef vector<arc_info *> arc_vector_t;
  typedef vector<const block_info *> block_vector_t;
  
  /* Handle cycle identified by EDGES, where the function finds minimum cs_count
     and subtract the value from all counts.  The subtracted value is added
     to COUNT.  Returns type of loop.  */
  
! static void
  handle_cycle (const arc_vector_t &edges, int64_t &count)
  {
    /* Find the minimum edge of the cycle, and reduce all nodes in the cycle by
*************** handle_cycle (const arc_vector_t &edges,
*** 640,646 ****
    for (unsigned i = 0; i < edges.size (); i++)
      edges[i]->cs_count -= cycle_count;
  
!   return cycle_count < 0 ? NEGATIVE_LOOP : LOOP;
  }
  
  /* Unblock a block U from BLOCKED.  Apart from that, iterate all blocks
--- 624,630 ----
    for (unsigned i = 0; i < edges.size (); i++)
      edges[i]->cs_count -= cycle_count;
  
!   gcc_assert (cycle_count > 0);
  }
  
  /* Unblock a block U from BLOCKED.  Apart from that, iterate all blocks
*************** unblock (const block_info *u, block_vect
*** 666,682 ****
      unblock (*it, blocked, block_lists);
  }
  
  /* Find circuit going to block V, PATH is provisional seen cycle.
     BLOCKED is vector of blocked vertices, BLOCK_LISTS contains vertices
     blocked by a block.  COUNT is accumulated count of the current LINE.
     Returns what type of loop it contains.  */
  
! static loop_type
  circuit (block_info *v, arc_vector_t &path, block_info *start,
  	 block_vector_t &blocked, vector<block_vector_t> &block_lists,
  	 line_info &linfo, int64_t &count)
  {
!   loop_type result = NO_LOOP;
  
    /* Add v to the block list.  */
    gcc_assert (find (blocked.begin (), blocked.end (), v) == blocked.end ());
--- 650,677 ----
      unblock (*it, blocked, block_lists);
  }
  
+ /* Return true when PATH contains a zero cycle arc count.  */
+ 
+ static bool
+ path_contains_zero_cycle_arc (arc_vector_t &path)
+ {
+   for (unsigned i = 0; i < path.size (); i++)
+     if (path[i]->cs_count == 0)
+       return true;
+   return false;
+ }
+ 
  /* Find circuit going to block V, PATH is provisional seen cycle.
     BLOCKED is vector of blocked vertices, BLOCK_LISTS contains vertices
     blocked by a block.  COUNT is accumulated count of the current LINE.
     Returns what type of loop it contains.  */
  
! static bool
  circuit (block_info *v, arc_vector_t &path, block_info *start,
  	 block_vector_t &blocked, vector<block_vector_t> &block_lists,
  	 line_info &linfo, int64_t &count)
  {
!   bool loop_found = false;
  
    /* Add v to the block list.  */
    gcc_assert (find (blocked.begin (), blocked.end (), v) == blocked.end ());
*************** circuit (block_info *v, arc_vector_t &pa
*** 686,711 ****
    for (arc_info *arc = v->succ; arc; arc = arc->succ_next)
      {
        block_info *w = arc->dst;
!       if (w < start || !linfo.has_block (w))
  	continue;
  
        path.push_back (arc);
        if (w == start)
! 	/* Cycle has been found.  */
! 	result |= handle_cycle (path, count);
!       else if (find (blocked.begin (), blocked.end (), w) == blocked.end ())
! 	result |= circuit (w, path, start, blocked, block_lists, linfo, count);
  
        path.pop_back ();
      }
  
!   if (result != NO_LOOP)
      unblock (v, blocked, block_lists);
    else
      for (arc_info *arc = v->succ; arc; arc = arc->succ_next)
        {
  	block_info *w = arc->dst;
! 	if (w < start || !linfo.has_block (w))
  	  continue;
  
  	size_t index
--- 681,715 ----
    for (arc_info *arc = v->succ; arc; arc = arc->succ_next)
      {
        block_info *w = arc->dst;
!       if (w < start
! 	  || arc->cs_count == 0
! 	  || !linfo.has_block (w))
  	continue;
  
        path.push_back (arc);
        if (w == start)
! 	{
! 	  /* Cycle has been found.  */
! 	  handle_cycle (path, count);
! 	  loop_found = true;
! 	}
!       else if (!path_contains_zero_cycle_arc (path)
! 	       &&  find (blocked.begin (), blocked.end (), w) == blocked.end ())
! 	loop_found |= circuit (w, path, start, blocked, block_lists, linfo,
! 			       count);
  
        path.pop_back ();
      }
  
!   if (loop_found)
      unblock (v, blocked, block_lists);
    else
      for (arc_info *arc = v->succ; arc; arc = arc->succ_next)
        {
  	block_info *w = arc->dst;
! 	if (w < start
! 	    || arc->cs_count == 0
! 	    || !linfo.has_block (w))
  	  continue;
  
  	size_t index
*************** circuit (block_info *v, arc_vector_t &pa
*** 716,729 ****
  	  list.push_back (v);
        }
  
!   return result;
  }
  
! /* Find cycles for a LINFO.  If HANDLE_NEGATIVE_CYCLES is set and the line
!    contains a negative loop, then perform the same function once again.  */
  
  static gcov_type
! get_cycles_count (line_info &linfo, bool handle_negative_cycles = true)
  {
    /* Note that this algorithm works even if blocks aren't in sorted order.
       Each iteration of the circuit detection is completely independent
--- 720,732 ----
  	  list.push_back (v);
        }
  
!   return loop_found;
  }
  
! /* Find cycles for a LINFO.  */
  
  static gcov_type
! get_cycles_count (line_info &linfo)
  {
    /* Note that this algorithm works even if blocks aren't in sorted order.
       Each iteration of the circuit detection is completely independent
*************** get_cycles_count (line_info &linfo, bool
*** 731,737 ****
       Therefore, operating on a permuted order (i.e., non-sorted) only
       has the effect of permuting the output cycles.  */
  
!   loop_type result = NO_LOOP;
    gcov_type count = 0;
    for (vector<block_info *>::iterator it = linfo.blocks.begin ();
         it != linfo.blocks.end (); it++)
--- 734,740 ----
       Therefore, operating on a permuted order (i.e., non-sorted) only
       has the effect of permuting the output cycles.  */
  
!   bool loop_found = false;
    gcov_type count = 0;
    for (vector<block_info *>::iterator it = linfo.blocks.begin ();
         it != linfo.blocks.end (); it++)
*************** get_cycles_count (line_info &linfo, bool
*** 739,752 ****
        arc_vector_t path;
        block_vector_t blocked;
        vector<block_vector_t > block_lists;
!       result |= circuit (*it, path, *it, blocked, block_lists, linfo,
! 			 count);
      }
  
-   /* If we have a negative cycle, repeat the find_cycles routine.  */
-   if (result == NEGATIVE_LOOP && handle_negative_cycles)
-     count += get_cycles_count (linfo, false);
- 
    return count;
  }
  
--- 742,751 ----
        arc_vector_t path;
        block_vector_t blocked;
        vector<block_vector_t > block_lists;
!       loop_found |= circuit (*it, path, *it, blocked, block_lists, linfo,
! 			     count);
      }
  
    return count;
  }
  
diff -Nrcpad gcc-8.3.0/gcc/gcse.c gcc-8.4.0/gcc/gcse.c
*** gcc-8.3.0/gcc/gcse.c	Sun Jan 27 17:36:30 2019
--- gcc-8.4.0/gcc/gcse.c	Wed Mar  4 08:30:00 2020
*************** compute_hash_table_work (struct gcse_has
*** 1532,1538 ****
  					      0, regno, hrsi)
  		record_last_reg_set_info (insn, regno);
  
! 	      if (! RTL_CONST_OR_PURE_CALL_P (insn))
  		record_last_mem_set_info (insn);
  	    }
  
--- 1532,1539 ----
  					      0, regno, hrsi)
  		record_last_reg_set_info (insn, regno);
  
! 	      if (! RTL_CONST_OR_PURE_CALL_P (insn)
! 		  || RTL_LOOPING_CONST_OR_PURE_CALL_P (insn))
  		record_last_mem_set_info (insn);
  	    }
  
diff -Nrcpad gcc-8.3.0/gcc/gengtype-lex.c gcc-8.4.0/gcc/gengtype-lex.c
*** gcc-8.3.0/gcc/gengtype-lex.c	Fri Feb 22 14:23:15 2019
--- gcc-8.4.0/gcc/gengtype-lex.c	Wed Mar  4 08:33:13 2020
*************** int yy_flex_debug = 0;
*** 1192,1198 ****
  #define YY_MORE_ADJ 0
  #define YY_RESTORE_YY_MORE_OFFSET
  char *yytext;
! #line 1 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  /* -*- indented-text -*- */
  /* Process source files and output type information.
     Copyright (C) 2002-2018 Free Software Foundation, Inc.
--- 1192,1198 ----
  #define YY_MORE_ADJ 0
  #define YY_RESTORE_YY_MORE_OFFSET
  char *yytext;
! #line 1 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  /* -*- indented-text -*- */
  /* Process source files and output type information.
     Copyright (C) 2002-2018 Free Software Foundation, Inc.
*************** You should have received a copy of the G
*** 1213,1219 ****
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  #define YY_NO_INPUT 1
! #line 24 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  #ifdef HOST_GENERATOR_FILE
  #include "config.h"
  #define GENERATOR_FILE 1
--- 1213,1219 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  #define YY_NO_INPUT 1
! #line 24 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  #ifdef HOST_GENERATOR_FILE
  #include "config.h"
  #define GENERATOR_FILE 1
*************** YY_DECL
*** 1465,1471 ****
  		}
  
  	{
! #line 66 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  
    /* Do this on entry to yylex():  */
    *yylval = 0;
--- 1465,1471 ----
  		}
  
  	{
! #line 66 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  
    /* Do this on entry to yylex():  */
    *yylval = 0;
*************** YY_LINENO_REWIND_TO(yy_cp - 1);
*** 1537,1543 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 77 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return TYPEDEF;
--- 1537,1543 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 77 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return TYPEDEF;
*************** YY_LINENO_REWIND_TO(yy_cp - 1);
*** 1550,1556 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 81 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STRUCT;
--- 1550,1556 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 81 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STRUCT;
*************** YY_LINENO_REWIND_TO(yy_cp - 1);
*** 1563,1569 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 85 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return UNION;
--- 1563,1569 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 85 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return UNION;
*************** YY_LINENO_REWIND_TO(yy_cp - 1);
*** 1576,1582 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 89 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STRUCT;
--- 1576,1582 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 89 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STRUCT;
*************** YY_LINENO_REWIND_TO(yy_cp - 1);
*** 1589,1595 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 93 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return EXTERN;
--- 1589,1595 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 93 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return EXTERN;
*************** YY_LINENO_REWIND_TO(yy_cp - 1);
*** 1602,1608 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 97 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STATIC;
--- 1602,1608 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 97 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STATIC;
*************** YY_RULE_SETUP
*** 1613,1637 ****
  
  case 7:
  YY_RULE_SETUP
! #line 105 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { BEGIN(in_struct_comment); }
  	YY_BREAK
  case 8:
  /* rule 8 can match eol */
  YY_RULE_SETUP
! #line 106 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 9:
  /* rule 9 can match eol */
  YY_RULE_SETUP
! #line 108 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { update_lineno (yytext, yyleng); }
  	YY_BREAK
  case 10:
  /* rule 10 can match eol */
  YY_RULE_SETUP
! #line 109 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 11:
--- 1613,1637 ----
  
  case 7:
  YY_RULE_SETUP
! #line 105 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { BEGIN(in_struct_comment); }
  	YY_BREAK
  case 8:
  /* rule 8 can match eol */
  YY_RULE_SETUP
! #line 106 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 9:
  /* rule 9 can match eol */
  YY_RULE_SETUP
! #line 108 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { update_lineno (yytext, yyleng); }
  	YY_BREAK
  case 10:
  /* rule 10 can match eol */
  YY_RULE_SETUP
! #line 109 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 11:
*************** YY_LINENO_REWIND_TO(yy_bp + 5);
*** 1641,1647 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 111 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  /* don't care */
  	YY_BREAK
  case 12:
--- 1641,1647 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 111 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  /* don't care */
  	YY_BREAK
  case 12:
*************** case 12:
*** 1650,1666 ****
  YY_LINENO_REWIND_TO(yy_cp - 1);
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
! #line 113 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  case 13:
  /* rule 13 can match eol */
! #line 114 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  case 14:
  /* rule 14 can match eol */
! #line 115 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  case 15:
  /* rule 15 can match eol */
  YY_RULE_SETUP
! #line 115 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {
      *yylval = XDUPVAR (const char, yytext, yyleng, yyleng + 1);
      return IGNORABLE_CXX_KEYWORD;
--- 1650,1666 ----
  YY_LINENO_REWIND_TO(yy_cp - 1);
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
! #line 113 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  case 13:
  /* rule 13 can match eol */
! #line 114 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  case 14:
  /* rule 14 can match eol */
! #line 115 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  case 15:
  /* rule 15 can match eol */
  YY_RULE_SETUP
! #line 115 "/d/gcc-8.4.0/gcc-8.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);
*** 1673,1679 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 3;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 119 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { return GTY_TOKEN; }
  	YY_BREAK
  case 17:
--- 1673,1679 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 3;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 119 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { return GTY_TOKEN; }
  	YY_BREAK
  case 17:
*************** YY_LINENO_REWIND_TO(yy_bp + 5);
*** 1683,1689 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 120 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { return UNION; }
  	YY_BREAK
  case 18:
--- 1683,1689 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 120 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { return UNION; }
  	YY_BREAK
  case 18:
*************** YY_LINENO_REWIND_TO(yy_bp + 6);
*** 1693,1699 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 6;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 121 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { return STRUCT; }
  	YY_BREAK
  case 19:
--- 1693,1699 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 6;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 121 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { return STRUCT; }
  	YY_BREAK
  case 19:
*************** YY_LINENO_REWIND_TO(yy_bp + 5);
*** 1703,1709 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 122 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { return STRUCT; }
  	YY_BREAK
  case 20:
--- 1703,1709 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 122 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { return STRUCT; }
  	YY_BREAK
  case 20:
*************** YY_LINENO_REWIND_TO(yy_bp + 7);
*** 1713,1719 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 7;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 123 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { return TYPEDEF; }
  	YY_BREAK
  case 21:
--- 1713,1719 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 7;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 123 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { return TYPEDEF; }
  	YY_BREAK
  case 21:
*************** YY_LINENO_REWIND_TO(yy_bp + 4);
*** 1723,1729 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 4;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 124 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { return ENUM; }
  	YY_BREAK
  case 22:
--- 1723,1729 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 4;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 124 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { return ENUM; }
  	YY_BREAK
  case 22:
*************** YY_LINENO_REWIND_TO(yy_bp + 9);
*** 1733,1739 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 9;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 125 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { return PTR_ALIAS; }
  	YY_BREAK
  case 23:
--- 1733,1739 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 9;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 125 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { return PTR_ALIAS; }
  	YY_BREAK
  case 23:
*************** YY_LINENO_REWIND_TO(yy_bp + 10);
*** 1743,1749 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 10;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 126 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { return NESTED_PTR; }
  	YY_BREAK
  case 24:
--- 1743,1749 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 10;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 126 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { return NESTED_PTR; }
  	YY_BREAK
  case 24:
*************** YY_LINENO_REWIND_TO(yy_bp + 4);
*** 1753,1764 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 4;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 127 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { return USER_GTY; }
  	YY_BREAK
  case 25:
  YY_RULE_SETUP
! #line 128 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { return NUM; }
  	YY_BREAK
  case 26:
--- 1753,1764 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 4;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 127 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { return USER_GTY; }
  	YY_BREAK
  case 25:
  YY_RULE_SETUP
! #line 128 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { return NUM; }
  	YY_BREAK
  case 26:
*************** case 26:
*** 1767,1777 ****
  YY_LINENO_REWIND_TO(yy_cp - 1);
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
! #line 131 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  case 27:
  /* rule 27 can match eol */
  YY_RULE_SETUP
! #line 131 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {
    size_t len;
  
--- 1767,1777 ----
  YY_LINENO_REWIND_TO(yy_cp - 1);
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
! #line 131 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  case 27:
  /* rule 27 can match eol */
  YY_RULE_SETUP
! #line 131 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  {
    size_t len;
  
*************** YY_LINENO_REWIND_TO(yy_cp - 1);
*** 1790,1796 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 142 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
    return ID;
--- 1790,1796 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 142 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
    return ID;
*************** YY_RULE_SETUP
*** 1799,1805 ****
  case 29:
  /* rule 29 can match eol */
  YY_RULE_SETUP
! #line 147 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
    return STRING;
--- 1799,1805 ----
  case 29:
  /* rule 29 can match eol */
  YY_RULE_SETUP
! #line 147 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
    return STRING;
*************** YY_RULE_SETUP
*** 1809,1815 ****
  case 30:
  /* rule 30 can match eol */
  YY_RULE_SETUP
! #line 152 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
    return ARRAY;
--- 1809,1815 ----
  case 30:
  /* rule 30 can match eol */
  YY_RULE_SETUP
! #line 152 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
    return ARRAY;
*************** YY_RULE_SETUP
*** 1818,1824 ****
  case 31:
  /* rule 31 can match eol */
  YY_RULE_SETUP
! #line 156 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng);
    return CHAR;
--- 1818,1824 ----
  case 31:
  /* rule 31 can match eol */
  YY_RULE_SETUP
! #line 156 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng);
    return CHAR;
*************** YY_RULE_SETUP
*** 1826,1849 ****
  	YY_BREAK
  case 32:
  YY_RULE_SETUP
! #line 161 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { return ELLIPSIS; }
  	YY_BREAK
  case 33:
  YY_RULE_SETUP
! #line 162 "/d/gcc-8.3.0/gcc-8.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 165 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {lexer_line.line++;}
  	YY_BREAK
  case 35:
  YY_RULE_SETUP
! #line 167 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {
    error_at_line (&lexer_line, "unexpected character `%s'", yytext);
  }
--- 1826,1849 ----
  	YY_BREAK
  case 32:
  YY_RULE_SETUP
! #line 161 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { return ELLIPSIS; }
  	YY_BREAK
  case 33:
  YY_RULE_SETUP
! #line 162 "/d/gcc-8.4.0/gcc-8.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 165 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  {lexer_line.line++;}
  	YY_BREAK
  case 35:
  YY_RULE_SETUP
! #line 167 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  {
    error_at_line (&lexer_line, "unexpected character `%s'", yytext);
  }
*************** YY_RULE_SETUP
*** 1851,1886 ****
  
  case 36:
  YY_RULE_SETUP
! #line 172 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { BEGIN(in_comment); }
  	YY_BREAK
  case 37:
  /* rule 37 can match eol */
  YY_RULE_SETUP
! #line 173 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 38:
  /* rule 38 can match eol */
  YY_RULE_SETUP
! #line 174 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 39:
! #line 176 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  case 40:
  /* rule 40 can match eol */
! #line 177 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  case 41:
  /* rule 41 can match eol */
  YY_RULE_SETUP
! #line 177 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 42:
  /* rule 42 can match eol */
  YY_RULE_SETUP
! #line 178 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { update_lineno (yytext, yyleng); }
  	YY_BREAK
  case 43:
--- 1851,1886 ----
  
  case 36:
  YY_RULE_SETUP
! #line 172 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { BEGIN(in_comment); }
  	YY_BREAK
  case 37:
  /* rule 37 can match eol */
  YY_RULE_SETUP
! #line 173 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 38:
  /* rule 38 can match eol */
  YY_RULE_SETUP
! #line 174 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 39:
! #line 176 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  case 40:
  /* rule 40 can match eol */
! #line 177 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  case 41:
  /* rule 41 can match eol */
  YY_RULE_SETUP
! #line 177 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 42:
  /* rule 42 can match eol */
  YY_RULE_SETUP
! #line 178 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { update_lineno (yytext, yyleng); }
  	YY_BREAK
  case 43:
*************** YY_LINENO_REWIND_TO(yy_bp + 1);
*** 1890,1910 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 179 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  
  case 44:
  /* rule 44 can match eol */
  YY_RULE_SETUP
! #line 182 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 45:
! #line 184 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  case 46:
  YY_RULE_SETUP
! #line 184 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 47:
--- 1890,1910 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 179 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  
  case 44:
  /* rule 44 can match eol */
  YY_RULE_SETUP
! #line 182 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 45:
! #line 184 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  case 46:
  YY_RULE_SETUP
! #line 184 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 47:
*************** YY_LINENO_REWIND_TO(yy_bp + 1);
*** 1914,1938 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 185 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  
  case 48:
  YY_RULE_SETUP
! #line 188 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { BEGIN(INITIAL); } 
  	YY_BREAK
  case 49:
  YY_RULE_SETUP
! #line 189 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  { BEGIN(in_struct); }
  	YY_BREAK
  case 50:
! #line 192 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  case 51:
  YY_RULE_SETUP
! #line 192 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  {
    error_at_line (&lexer_line, 
  		 "unterminated comment or string; unexpected EOF");
--- 1914,1938 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 185 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  
  case 48:
  YY_RULE_SETUP
! #line 188 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { BEGIN(INITIAL); } 
  	YY_BREAK
  case 49:
  YY_RULE_SETUP
! #line 189 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  { BEGIN(in_struct); }
  	YY_BREAK
  case 50:
! #line 192 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  case 51:
  YY_RULE_SETUP
! #line 192 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  {
    error_at_line (&lexer_line, 
  		 "unterminated comment or string; unexpected EOF");
*************** YY_RULE_SETUP
*** 1941,1952 ****
  case 52:
  /* rule 52 can match eol */
  YY_RULE_SETUP
! #line 197 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 53:
  YY_RULE_SETUP
! #line 199 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  YY_FATAL_ERROR( "flex scanner jammed" );
  	YY_BREAK
  #line 1948 "gengtype-lex.c"
--- 1941,1952 ----
  case 52:
  /* rule 52 can match eol */
  YY_RULE_SETUP
! #line 197 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 53:
  YY_RULE_SETUP
! #line 199 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  YY_FATAL_ERROR( "flex scanner jammed" );
  	YY_BREAK
  #line 1948 "gengtype-lex.c"
*************** void yyfree (void * ptr )
*** 2920,2926 ****
  
  #define YYTABLES_NAME "yytables"
  
! #line 199 "/d/gcc-8.3.0/gcc-8.3.0/gcc/gengtype-lex.l"
  
  
  
--- 2920,2926 ----
  
  #define YYTABLES_NAME "yytables"
  
! #line 199 "/d/gcc-8.4.0/gcc-8.4.0/gcc/gengtype-lex.l"
  
  
  
diff -Nrcpad gcc-8.3.0/gcc/ggc-page.c gcc-8.4.0/gcc/ggc-page.c
*** gcc-8.3.0/gcc/ggc-page.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/ggc-page.c	Wed Mar  4 08:30:00 2020
*************** ggc_pch_read (FILE *f, void *addr)
*** 2555,2560 ****
--- 2555,2563 ----
  
    count_old_page_tables = G.by_depth_in_use;
  
+   if (fread (&d, sizeof (d), 1, f) != 1)
+     fatal_error (input_location, "cannot read PCH file: %m");
+ 
    /* We've just read in a PCH file.  So, every object that used to be
       allocated is now free.  */
    clear_marks ();
*************** ggc_pch_read (FILE *f, void *addr)
*** 2583,2590 ****
  
    /* Allocate the appropriate page-table entries for the pages read from
       the PCH file.  */
-   if (fread (&d, sizeof (d), 1, f) != 1)
-     fatal_error (input_location, "can%'t read PCH file: %m");
  
    for (i = 0; i < NUM_ORDERS; i++)
      {
--- 2586,2591 ----
diff -Nrcpad gcc-8.3.0/gcc/gimple-fold.c gcc-8.4.0/gcc/gimple-fold.c
*** gcc-8.3.0/gcc/gimple-fold.c	Fri Jul 13 13:36:35 2018
--- gcc-8.4.0/gcc/gimple-fold.c	Wed Mar  4 08:30:00 2020
*************** gimple_fold_builtin_sprintf (gimple_stmt
*** 3031,3041 ****
        gimple_seq stmts = NULL;
        gimple *repl = gimple_build_call (fn, 2, dest, fmt);
        gimple_seq_add_stmt_without_update (&stmts, repl);
!       if (gimple_call_lhs (stmt))
  	{
! 	  repl = gimple_build_assign (gimple_call_lhs (stmt),
! 				      build_int_cst (integer_type_node,
! 						     strlen (fmt_str)));
  	  gimple_seq_add_stmt_without_update (&stmts, repl);
  	  gsi_replace_with_seq_vops (gsi, stmts);
  	  /* gsi now points at the assignment to the lhs, get a
--- 3031,3040 ----
        gimple_seq stmts = NULL;
        gimple *repl = gimple_build_call (fn, 2, dest, fmt);
        gimple_seq_add_stmt_without_update (&stmts, repl);
!       if (tree lhs = gimple_call_lhs (stmt))
  	{
! 	  repl = gimple_build_assign (lhs, build_int_cst (TREE_TYPE (lhs),
! 							  strlen (fmt_str)));
  	  gimple_seq_add_stmt_without_update (&stmts, repl);
  	  gsi_replace_with_seq_vops (gsi, stmts);
  	  /* gsi now points at the assignment to the lhs, get a
*************** gimple_fold_builtin_sprintf (gimple_stmt
*** 3079,3090 ****
        gimple_seq stmts = NULL;
        gimple *repl = gimple_build_call (fn, 2, dest, orig);
        gimple_seq_add_stmt_without_update (&stmts, repl);
!       if (gimple_call_lhs (stmt))
  	{
! 	  if (!useless_type_conversion_p (integer_type_node,
  					  TREE_TYPE (orig_len)))
! 	    orig_len = fold_convert (integer_type_node, orig_len);
! 	  repl = gimple_build_assign (gimple_call_lhs (stmt), orig_len);
  	  gimple_seq_add_stmt_without_update (&stmts, repl);
  	  gsi_replace_with_seq_vops (gsi, stmts);
  	  /* gsi now points at the assignment to the lhs, get a
--- 3078,3089 ----
        gimple_seq stmts = NULL;
        gimple *repl = gimple_build_call (fn, 2, dest, orig);
        gimple_seq_add_stmt_without_update (&stmts, repl);
!       if (tree lhs = gimple_call_lhs (stmt))
  	{
! 	  if (!useless_type_conversion_p (TREE_TYPE (lhs),
  					  TREE_TYPE (orig_len)))
! 	    orig_len = fold_convert (TREE_TYPE (lhs), orig_len);
! 	  repl = gimple_build_assign (lhs, orig_len);
  	  gimple_seq_add_stmt_without_update (&stmts, repl);
  	  gsi_replace_with_seq_vops (gsi, stmts);
  	  /* gsi now points at the assignment to the lhs, get a
*************** gimple_fold_builtin_snprintf (gimple_stm
*** 3164,3173 ****
        gimple_seq stmts = NULL;
        gimple *repl = gimple_build_call (fn, 2, dest, fmt);
        gimple_seq_add_stmt_without_update (&stmts, repl);
!       if (gimple_call_lhs (stmt))
  	{
! 	  repl = gimple_build_assign (gimple_call_lhs (stmt),
! 				      build_int_cst (integer_type_node, len));
  	  gimple_seq_add_stmt_without_update (&stmts, repl);
  	  gsi_replace_with_seq_vops (gsi, stmts);
  	  /* gsi now points at the assignment to the lhs, get a
--- 3163,3172 ----
        gimple_seq stmts = NULL;
        gimple *repl = gimple_build_call (fn, 2, dest, fmt);
        gimple_seq_add_stmt_without_update (&stmts, repl);
!       if (tree lhs = gimple_call_lhs (stmt))
  	{
! 	  repl = gimple_build_assign (lhs,
! 				      build_int_cst (TREE_TYPE (lhs), len));
  	  gimple_seq_add_stmt_without_update (&stmts, repl);
  	  gsi_replace_with_seq_vops (gsi, stmts);
  	  /* gsi now points at the assignment to the lhs, get a
*************** gimple_fold_builtin_snprintf (gimple_stm
*** 3216,3227 ****
        gimple_seq stmts = NULL;
        gimple *repl = gimple_build_call (fn, 2, dest, orig);
        gimple_seq_add_stmt_without_update (&stmts, repl);
!       if (gimple_call_lhs (stmt))
  	{
! 	  if (!useless_type_conversion_p (integer_type_node,
  					  TREE_TYPE (orig_len)))
! 	    orig_len = fold_convert (integer_type_node, orig_len);
! 	  repl = gimple_build_assign (gimple_call_lhs (stmt), orig_len);
  	  gimple_seq_add_stmt_without_update (&stmts, repl);
  	  gsi_replace_with_seq_vops (gsi, stmts);
  	  /* gsi now points at the assignment to the lhs, get a
--- 3215,3226 ----
        gimple_seq stmts = NULL;
        gimple *repl = gimple_build_call (fn, 2, dest, orig);
        gimple_seq_add_stmt_without_update (&stmts, repl);
!       if (tree lhs = gimple_call_lhs (stmt))
  	{
! 	  if (!useless_type_conversion_p (TREE_TYPE (lhs),
  					  TREE_TYPE (orig_len)))
! 	    orig_len = fold_convert (TREE_TYPE (lhs), orig_len);
! 	  repl = gimple_build_assign (lhs, orig_len);
  	  gimple_seq_add_stmt_without_update (&stmts, repl);
  	  gsi_replace_with_seq_vops (gsi, stmts);
  	  /* gsi now points at the assignment to the lhs, get a
*************** fold_const_aggregate_ref_1 (tree t, tree
*** 6721,6734 ****
  		= wi::sext (wi::to_poly_offset (idx)
  			    - wi::to_poly_offset (low_bound),
  			    TYPE_PRECISION (TREE_TYPE (idx)));
! 
  	      if (woffset.to_shwi (&offset))
  		{
- 		  /* TODO: This code seems wrong, multiply then check
- 		     to see if it fits.  */
- 		  offset *= tree_to_uhwi (unit_size);
- 		  offset *= BITS_PER_UNIT;
- 
  		  base = TREE_OPERAND (t, 0);
  		  ctor = get_base_constructor (base, &offset, valueize);
  		  /* Empty constructor.  Always fold to 0.  */
--- 6720,6729 ----
  		= wi::sext (wi::to_poly_offset (idx)
  			    - wi::to_poly_offset (low_bound),
  			    TYPE_PRECISION (TREE_TYPE (idx)));
! 	      woffset *= tree_to_uhwi (unit_size);
! 	      woffset *= BITS_PER_UNIT;
  	      if (woffset.to_shwi (&offset))
  		{
  		  base = TREE_OPERAND (t, 0);
  		  ctor = get_base_constructor (base, &offset, valueize);
  		  /* Empty constructor.  Always fold to 0.  */
diff -Nrcpad gcc-8.3.0/gcc/gimple-ssa-sprintf.c gcc-8.4.0/gcc/gimple-ssa-sprintf.c
*** gcc-8.3.0/gcc/gimple-ssa-sprintf.c	Sat Jul 14 21:32:10 2018
--- gcc-8.4.0/gcc/gimple-ssa-sprintf.c	Wed Mar  4 08:30:00 2020
*************** target_to_host (char *hostr, size_t host
*** 376,384 ****
       overlong strings just like the translated strings are.  */
    if (target_to_host_charmap['\0'] == 1)
      {
!       strncpy (hostr, targstr, hostsz - 4);
!       if (strlen (targstr) >= hostsz)
! 	strcpy (hostr + hostsz - 4, "...");
        return hostr;
      }
  
--- 376,389 ----
       overlong strings just like the translated strings are.  */
    if (target_to_host_charmap['\0'] == 1)
      {
!       size_t len = strlen (targstr);
!       if (len >= hostsz)
! 	{
! 	  memcpy (hostr, targstr, hostsz - 4);
! 	  strcpy (hostr + hostsz - 4, "...");
! 	}
!       else
! 	memcpy (hostr, targstr, len + 1);
        return hostr;
      }
  
*************** target_to_host (char *hostr, size_t host
*** 392,401 ****
        if (!*targstr)
  	break;
  
!       if (size_t (ph - hostr) == hostsz - 4)
  	{
! 	  *ph = '\0';
! 	  strcat (ph, "...");
  	  break;
  	}
      }
--- 397,405 ----
        if (!*targstr)
  	break;
  
!       if (size_t (ph - hostr) == hostsz)
  	{
! 	  strcpy (ph - 4, "...");
  	  break;
  	}
      }
*************** try_substitute_return_value (gimple_stmt
*** 3662,3671 ****
  	 are badly declared.  */
        && !stmt_ends_bb_p (info.callstmt))
      {
!       tree cst = build_int_cst (integer_type_node, retval[0]);
  
!       if (lhs == NULL_TREE
! 	  && info.nowrite)
  	{
  	  /* Remove the call to the bounded function with a zero size
  	     (e.g., snprintf(0, 0, "%i", 123)) if there is no lhs.  */
--- 3666,3675 ----
  	 are badly declared.  */
        && !stmt_ends_bb_p (info.callstmt))
      {
!       tree cst = build_int_cst (lhs ? TREE_TYPE (lhs) : integer_type_node,
! 				retval[0]);
  
!       if (lhs == NULL_TREE && info.nowrite)
  	{
  	  /* Remove the call to the bounded function with a zero size
  	     (e.g., snprintf(0, 0, "%i", 123)) if there is no lhs.  */
*************** try_substitute_return_value (gimple_stmt
*** 3706,3712 ****
  	    }
  	}
      }
!   else if (lhs)
      {
        bool setrange = false;
  
--- 3710,3716 ----
  	    }
  	}
      }
!   else if (lhs && types_compatible_p (TREE_TYPE (lhs), integer_type_node))
      {
        bool setrange = false;
  
diff -Nrcpad gcc-8.3.0/gcc/gimple-ssa-store-merging.c gcc-8.4.0/gcc/gimple-ssa-store-merging.c
*** gcc-8.3.0/gcc/gimple-ssa-store-merging.c	Mon Nov  5 14:12:15 2018
--- gcc-8.4.0/gcc/gimple-ssa-store-merging.c	Wed Mar  4 08:30:00 2020
*************** gather_bswap_load_refs (vec<tree> *refs,
*** 2308,2315 ****
  /* Check if there are any stores in M_STORE_INFO after index I
     (where M_STORE_INFO must be sorted by sort_by_bitpos) that overlap
     a potential group ending with END that have their order
!    smaller than LAST_ORDER.  RHS_CODE is the kind of store in the
!    group.  Return true if there are no such stores.
     Consider:
       MEM[(long long int *)p_28] = 0;
       MEM[(long long int *)p_28 + 8B] = 0;
--- 2308,2316 ----
  /* Check if there are any stores in M_STORE_INFO after index I
     (where M_STORE_INFO must be sorted by sort_by_bitpos) that overlap
     a potential group ending with END that have their order
!    smaller than LAST_ORDER.  ALL_INTEGER_CST_P is true if
!    all the stores already merged and the one under consideration
!    have rhs_code of INTEGER_CST.  Return true if there are no such stores.
     Consider:
       MEM[(long long int *)p_28] = 0;
       MEM[(long long int *)p_28 + 8B] = 0;
*************** gather_bswap_load_refs (vec<tree> *refs,
*** 2332,2344 ****
     the MEM[(long long int *)p_28 + 8B] = 0; would now be before it,
     so we need to refuse merging MEM[(long long int *)p_28 + 8B] = 0;
     into the group.  That way it will be its own store group and will
!    not be touched.  If RHS_CODE is INTEGER_CST and there are overlapping
     INTEGER_CST stores, those are mergeable using merge_overlapping,
     so don't return false for those.  */
  
  static bool
  check_no_overlap (vec<store_immediate_info *> m_store_info, unsigned int i,
! 		  enum tree_code rhs_code, unsigned int last_order,
  		  unsigned HOST_WIDE_INT end)
  {
    unsigned int len = m_store_info.length ();
--- 2333,2345 ----
     the MEM[(long long int *)p_28 + 8B] = 0; would now be before it,
     so we need to refuse merging MEM[(long long int *)p_28 + 8B] = 0;
     into the group.  That way it will be its own store group and will
!    not be touched.  If ALL_INTEGER_CST_P and there are overlapping
     INTEGER_CST stores, those are mergeable using merge_overlapping,
     so don't return false for those.  */
  
  static bool
  check_no_overlap (vec<store_immediate_info *> m_store_info, unsigned int i,
! 		  bool all_integer_cst_p, unsigned int last_order,
  		  unsigned HOST_WIDE_INT end)
  {
    unsigned int len = m_store_info.length ();
*************** check_no_overlap (vec<store_immediate_in
*** 2348,2354 ****
        if (info->bitpos >= end)
  	break;
        if (info->order < last_order
! 	  && (rhs_code != INTEGER_CST || info->rhs_code != INTEGER_CST))
  	return false;
      }
    return true;
--- 2349,2355 ----
        if (info->bitpos >= end)
  	break;
        if (info->order < last_order
! 	  && (!all_integer_cst_p || info->rhs_code != INTEGER_CST))
  	return false;
      }
    return true;
*************** imm_store_chain_info::try_coalesce_bswap
*** 2501,2507 ****
    if (n.base_addr == NULL_TREE && !is_gimple_val (n.src))
      return false;
  
!   if (!check_no_overlap (m_store_info, last, LROTATE_EXPR, last_order, end))
      return false;
  
    /* Don't handle memory copy this way if normal non-bswap processing
--- 2502,2508 ----
    if (n.base_addr == NULL_TREE && !is_gimple_val (n.src))
      return false;
  
!   if (!check_no_overlap (m_store_info, last, false, last_order, end))
      return false;
  
    /* Don't handle memory copy this way if normal non-bswap processing
*************** imm_store_chain_info::coalesce_immediate
*** 2649,2655 ****
  	       |---store 2---|
  	 Overlapping stores.  */
        else if (IN_RANGE (info->bitpos, merged_store->start,
! 			 merged_store->start + merged_store->width - 1))
  	{
  	  /* Only allow overlapping stores of constants.  */
  	  if (info->rhs_code == INTEGER_CST
--- 2650,2662 ----
  	       |---store 2---|
  	 Overlapping stores.  */
        else if (IN_RANGE (info->bitpos, merged_store->start,
! 			 merged_store->start + merged_store->width - 1)
! 	       /* |---store 1---||---store 2---|
! 		  Handle also the consecutive INTEGER_CST stores case here,
! 		  as we have here the code to deal with overlaps.  */
! 	       || (info->bitregion_start <= merged_store->bitregion_end
! 		   && info->rhs_code == INTEGER_CST
! 		   && merged_store->stores[0]->rhs_code == INTEGER_CST))
  	{
  	  /* Only allow overlapping stores of constants.  */
  	  if (info->rhs_code == INTEGER_CST
*************** imm_store_chain_info::coalesce_immediate
*** 2660,2667 ****
  	      unsigned HOST_WIDE_INT end
  		= MAX (merged_store->start + merged_store->width,
  		       info->bitpos + info->bitsize);
! 	      if (check_no_overlap (m_store_info, i, INTEGER_CST,
! 				    last_order, end))
  		{
  		  /* check_no_overlap call above made sure there are no
  		     overlapping stores with non-INTEGER_CST rhs_code
--- 2667,2673 ----
  	      unsigned HOST_WIDE_INT end
  		= MAX (merged_store->start + merged_store->width,
  		       info->bitpos + info->bitsize);
! 	      if (check_no_overlap (m_store_info, i, true, last_order, end))
  		{
  		  /* check_no_overlap call above made sure there are no
  		     overlapping stores with non-INTEGER_CST rhs_code
*************** imm_store_chain_info::coalesce_immediate
*** 2821,2827 ****
  	      && (infof->ops[1].base_addr
  		  ? compatible_load_p (merged_store, info, base_addr, 1)
  		  : !info->ops[1].base_addr)
! 	      && check_no_overlap (m_store_info, i, info->rhs_code,
  				   MAX (merged_store->last_order,
  					info->order),
  				   MAX (merged_store->start
--- 2827,2833 ----
  	      && (infof->ops[1].base_addr
  		  ? compatible_load_p (merged_store, info, base_addr, 1)
  		  : !info->ops[1].base_addr)
! 	      && check_no_overlap (m_store_info, i, false,
  				   MAX (merged_store->last_order,
  					info->order),
  				   MAX (merged_store->start
diff -Nrcpad gcc-8.3.0/gcc/gimple-ssa-warn-restrict.c gcc-8.4.0/gcc/gimple-ssa-warn-restrict.c
*** gcc-8.3.0/gcc/gimple-ssa-warn-restrict.c	Fri Apr 20 23:43:51 2018
--- gcc-8.4.0/gcc/gimple-ssa-warn-restrict.c	Wed Mar  4 08:30:00 2020
*************** builtin_memref::extend_offset_range (tre
*** 314,326 ****
  	  offrange[0] += offset_int::from (min, SIGNED);
  	  offrange[1] += offset_int::from (max, SIGNED);
  	}
-       else if (rng == VR_ANTI_RANGE)
- 	{
- 	  offrange[0] += offset_int::from (max + 1, SIGNED);
- 	  offrange[1] += offset_int::from (min - 1, SIGNED);
- 	}
        else
  	{
  	  gimple *stmt = SSA_NAME_DEF_STMT (offset);
  	  tree type;
  	  if (is_gimple_assign (stmt)
--- 314,322 ----
  	  offrange[0] += offset_int::from (min, SIGNED);
  	  offrange[1] += offset_int::from (max, SIGNED);
  	}
        else
  	{
+ 	  /* Handle an anti-range the same as no range at all.  */
  	  gimple *stmt = SSA_NAME_DEF_STMT (offset);
  	  tree type;
  	  if (is_gimple_assign (stmt)
*************** builtin_access::builtin_access (gcall *c
*** 702,707 ****
--- 698,707 ----
    offset_int bounds[2] = { maxobjsize, maxobjsize };
    if (dstref->strbounded_p)
      {
+       unsigned nargs = gimple_call_num_args (call);
+       if (nargs <= sizeargno)
+ 	return;
+ 
        tree size = gimple_call_arg (call, sizeargno);
        tree range[2];
        if (get_size_range (size, range, true))
diff -Nrcpad gcc-8.3.0/gcc/gimplify.c gcc-8.4.0/gcc/gimplify.c
*** gcc-8.3.0/gcc/gimplify.c	Thu Feb  7 14:44:31 2019
--- gcc-8.4.0/gcc/gimplify.c	Wed Mar  4 08:30:00 2020
*************** struct gimplify_omp_ctx
*** 191,196 ****
--- 191,197 ----
    bool target_map_scalars_firstprivate;
    bool target_map_pointers_as_0len_arrays;
    bool target_firstprivatize_array_bases;
+   bool add_safelen1;
  };
  
  static struct gimplify_ctx *gimplify_ctxp;
*************** gimplify_bind_expr (tree *expr_p, gimple
*** 1294,1305 ****
  		  || splay_tree_lookup (ctx->variables,
  					(splay_tree_key) t) == NULL))
  	    {
  	      if (ctx->region_type == ORT_SIMD
  		  && TREE_ADDRESSABLE (t)
  		  && !TREE_STATIC (t))
! 		omp_add_variable (ctx, t, GOVD_PRIVATE | GOVD_SEEN);
! 	      else
! 		omp_add_variable (ctx, t, GOVD_LOCAL | GOVD_SEEN);
  	    }
  
  	  DECL_SEEN_IN_BIND_EXPR_P (t) = 1;
--- 1295,1311 ----
  		  || splay_tree_lookup (ctx->variables,
  					(splay_tree_key) t) == NULL))
  	    {
+ 	      int flag = GOVD_LOCAL;
  	      if (ctx->region_type == ORT_SIMD
  		  && TREE_ADDRESSABLE (t)
  		  && !TREE_STATIC (t))
! 		{
! 		  if (TREE_CODE (DECL_SIZE_UNIT (t)) != INTEGER_CST)
! 		    ctx->add_safelen1 = true;
! 		  else
! 		    flag = GOVD_PRIVATE;
! 		}
! 	      omp_add_variable (ctx, t, flag | GOVD_SEEN);
  	    }
  
  	  DECL_SEEN_IN_BIND_EXPR_P (t) = 1;
*************** gimplify_compound_literal_expr (tree *ex
*** 4650,4655 ****
--- 4656,4662 ----
       otherwise we'd generate a new temporary, and we can as well just
       use the decl we already have.  */
    else if (!TREE_ADDRESSABLE (decl)
+ 	   && !TREE_THIS_VOLATILE (decl)
  	   && init
  	   && (fallback & fb_lvalue) == 0
  	   && gimple_test_f (init))
*************** gimplify_init_constructor (tree *expr_p,
*** 4946,4952 ****
  	   one field to assign, initialize the target from a temporary.  */
  	if (TREE_THIS_VOLATILE (object)
  	    && !TREE_ADDRESSABLE (type)
! 	    && num_nonzero_elements > 0
  	    && vec_safe_length (elts) > 1)
  	  {
  	    tree temp = create_tmp_var (TYPE_MAIN_VARIANT (type));
--- 4953,4959 ----
  	   one field to assign, initialize the target from a temporary.  */
  	if (TREE_THIS_VOLATILE (object)
  	    && !TREE_ADDRESSABLE (type)
! 	    && (num_nonzero_elements > 0 || !cleared)
  	    && vec_safe_length (elts) > 1)
  	  {
  	    tree temp = create_tmp_var (TYPE_MAIN_VARIANT (type));
*************** gimplify_asm_expr (tree *expr_p, gimple_
*** 6144,6149 ****
--- 6151,6169 ----
  	  is_inout = false;
  	}
  
+       /* If we can't make copies, we can only accept memory.  */
+       if (TREE_ADDRESSABLE (TREE_TYPE (TREE_VALUE (link))))
+ 	{
+ 	  if (allows_mem)
+ 	    allows_reg = 0;
+ 	  else
+ 	    {
+ 	      error ("impossible constraint in %<asm%>");
+ 	      error ("non-memory output %d must stay in memory", i);
+ 	      return GS_ERROR;
+ 	    }
+ 	}
+ 
        if (!allows_reg && allows_mem)
  	mark_addressable (TREE_VALUE (link));
  
*************** gimplify_target_expr (tree *expr_p, gimp
*** 6639,6644 ****
--- 6659,6665 ----
  	    }
  	  if (asan_poisoned_variables
  	      && DECL_ALIGN (temp) <= MAX_SUPPORTED_STACK_ALIGNMENT
+ 	      && !TREE_STATIC (temp)
  	      && dbg_cnt (asan_use_after_scope)
  	      && !gimplify_omp_ctxp)
  	    {
*************** gimplify_scan_omp_clauses (tree *list_p,
*** 8160,8167 ****
  			      break;
  			    if (scp)
  			      continue;
! 			    gcc_assert (offset == NULL_TREE
! 					|| poly_int_tree_p (offset));
  			    tree d1 = OMP_CLAUSE_DECL (*sc);
  			    tree d2 = OMP_CLAUSE_DECL (c);
  			    while (TREE_CODE (d1) == ARRAY_REF)
--- 8181,8188 ----
  			      break;
  			    if (scp)
  			      continue;
! 			    gcc_assert (offset2 == NULL_TREE
! 					|| poly_int_tree_p (offset2));
  			    tree d1 = OMP_CLAUSE_DECL (*sc);
  			    tree d2 = OMP_CLAUSE_DECL (c);
  			    while (TREE_CODE (d1) == ARRAY_REF)
*************** gimplify_adjust_omp_clauses (gimple_seq
*** 9011,9016 ****
--- 9032,9050 ----
  			   omp_find_stores_op, &wi);
  	}
      }
+ 
+   if (ctx->add_safelen1)
+     {
+       /* If there are VLAs in the body of simd loop, prevent
+ 	 vectorization.  */
+       gcc_assert (ctx->region_type == ORT_SIMD);
+       c = build_omp_clause (UNKNOWN_LOCATION, OMP_CLAUSE_SAFELEN);
+       OMP_CLAUSE_SAFELEN_EXPR (c) = integer_one_node;
+       OMP_CLAUSE_CHAIN (c) = *list_p;
+       *list_p = c;
+       list_p = &OMP_CLAUSE_CHAIN (c);
+     }
+ 
    while ((c = *list_p) != NULL)
      {
        splay_tree_node n;
*************** gimplify_expr (tree *expr_p, gimple_seq
*** 12534,12540 ****
  	{
  	  /* Avoid the extra copy if possible.  */
  	  *expr_p = create_tmp_reg (TREE_TYPE (name));
! 	  gimple_set_lhs (SSA_NAME_DEF_STMT (name), *expr_p);
  	  release_ssa_name (name);
  	}
      }
--- 12568,12575 ----
  	{
  	  /* Avoid the extra copy if possible.  */
  	  *expr_p = create_tmp_reg (TREE_TYPE (name));
! 	  if (!gimple_nop_p (SSA_NAME_DEF_STMT (name)))
! 	    gimple_set_lhs (SSA_NAME_DEF_STMT (name), *expr_p);
  	  release_ssa_name (name);
  	}
      }
diff -Nrcpad gcc-8.3.0/gcc/go/ChangeLog gcc-8.4.0/gcc/go/ChangeLog
*** gcc-8.3.0/gcc/go/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/go/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/gcc/graphite-scop-detection.c gcc-8.4.0/gcc/graphite-scop-detection.c
*** gcc-8.3.0/gcc/graphite-scop-detection.c	Fri Jan 25 10:12:37 2019
--- gcc-8.4.0/gcc/graphite-scop-detection.c	Wed Mar  4 08:30:00 2020
*************** build_alias_set (scop_p scop)
*** 1414,1422 ****
    int i, j;
    int *all_vertices;
  
    FOR_EACH_VEC_ELT (scop->drs, i, dr1)
      for (j = i+1; scop->drs.iterate (j, &dr2); j++)
!       if (dr_may_alias_p (dr1->dr, dr2->dr, true))
  	{
  	  /* Dependences in the same alias set need to be handled
  	     by just looking at DR_ACCESS_FNs.  */
--- 1414,1426 ----
    int i, j;
    int *all_vertices;
  
+   struct loop *nest
+     = find_common_loop (scop->scop_info->region.entry->dest->loop_father,
+ 			scop->scop_info->region.exit->src->loop_father);
+ 
    FOR_EACH_VEC_ELT (scop->drs, i, dr1)
      for (j = i+1; scop->drs.iterate (j, &dr2); j++)
!       if (dr_may_alias_p (dr1->dr, dr2->dr, nest))
  	{
  	  /* Dependences in the same alias set need to be handled
  	     by just looking at DR_ACCESS_FNs.  */
diff -Nrcpad gcc-8.3.0/gcc/input.c gcc-8.4.0/gcc/input.c
*** gcc-8.3.0/gcc/input.c	Wed Mar 14 13:58:13 2018
--- gcc-8.4.0/gcc/input.c	Wed Mar  4 08:30:00 2020
*************** for_each_line_table_case (void (*testcas
*** 3538,3543 ****
--- 3538,3571 ----
    ASSERT_EQ (num_cases_tested, 2 * 12);
  }
  
+ /* Verify that when presented with a consecutive pair of locations with
+    a very large line offset, we don't attempt to consolidate them into
+    a single ordinary linemap where the line offsets within the line map
+    would lead to overflow (PR lto/88147).  */
+ 
+ static void
+ test_line_offset_overflow ()
+ {
+   line_table_test ltt (line_table_case (5, 0));
+ 
+   linemap_add (line_table, LC_ENTER, false, "foo.c", 0);
+   linemap_line_start (line_table, 1, 100);
+   location_t loc_a = linemap_line_start (line_table, 2578, 255);
+   assert_loceq ("foo.c", 2578, 0, loc_a);
+ 
+   const line_map_ordinary *ordmap_a = LINEMAPS_LAST_ORDINARY_MAP (line_table);
+   ASSERT_EQ (ordmap_a->m_column_and_range_bits, 13);
+   ASSERT_EQ (ordmap_a->m_range_bits, 5);
+ 
+   location_t loc_b = linemap_line_start (line_table, 404198, 512);
+   assert_loceq ("foo.c", 404198, 0, loc_b);
+ 
+   /* We should have started a new linemap, rather than attempting to store
+      a very large line offset.  */
+   const line_map_ordinary *ordmap_b = LINEMAPS_LAST_ORDINARY_MAP (line_table);
+   ASSERT_NE (ordmap_a, ordmap_b);
+ }
+ 
  /* Run all of the selftests within this file.  */
  
  void
*************** input_c_tests ()
*** 3577,3582 ****
--- 3605,3612 ----
    for_each_line_table_case (test_lexer_char_constants);
  
    test_reading_source_line ();
+ 
+   test_line_offset_overflow ();
  }
  
  } // namespace selftest
diff -Nrcpad gcc-8.3.0/gcc/internal-fn.c gcc-8.4.0/gcc/internal-fn.c
*** gcc-8.3.0/gcc/internal-fn.c	Tue Feb 20 14:44:24 2018
--- gcc-8.4.0/gcc/internal-fn.c	Wed Mar  4 08:30:00 2020
*************** expand_mul_overflow (location_t loc, tre
*** 1385,1391 ****
    /* s1 * s2 -> ur  */
    if (!uns0_p && !uns1_p && unsr_p)
      {
!       rtx tem, tem2;
        switch (pos_neg0 | pos_neg1)
  	{
  	case 1: /* Both operands known to be non-negative.  */
--- 1385,1391 ----
    /* s1 * s2 -> ur  */
    if (!uns0_p && !uns1_p && unsr_p)
      {
!       rtx tem;
        switch (pos_neg0 | pos_neg1)
  	{
  	case 1: /* Both operands known to be non-negative.  */
*************** expand_mul_overflow (location_t loc, tre
*** 1415,1424 ****
  	      ops.op2 = NULL_TREE;
  	      ops.location = loc;
  	      res = expand_expr_real_2 (&ops, NULL_RTX, mode, EXPAND_NORMAL);
! 	      tem = expand_binop (mode, and_optab, op0, op1, NULL_RTX, false,
! 				  OPTAB_LIB_WIDEN);
! 	      do_compare_rtx_and_jump (tem, const0_rtx, EQ, true, mode,
! 				       NULL_RTX, NULL, done_label,
  				       profile_probability::very_likely ());
  	      goto do_error_label;
  	    }
--- 1415,1422 ----
  	      ops.op2 = NULL_TREE;
  	      ops.location = loc;
  	      res = expand_expr_real_2 (&ops, NULL_RTX, mode, EXPAND_NORMAL);
! 	      do_compare_rtx_and_jump (pos_neg0 == 1 ? op0 : op1, const0_rtx, EQ,
! 				       true, mode, NULL_RTX, NULL, done_label,
  				       profile_probability::very_likely ());
  	      goto do_error_label;
  	    }
*************** expand_mul_overflow (location_t loc, tre
*** 1449,1464 ****
  	  arg1 = error_mark_node;
  	  emit_jump (do_main_label);
  	  emit_label (after_negate_label);
! 	  tem2 = expand_binop (mode, xor_optab, op0, op1, NULL_RTX, false,
! 			       OPTAB_LIB_WIDEN);
! 	  do_compare_rtx_and_jump (tem2, const0_rtx, GE, false, mode, NULL_RTX,
! 				   NULL, do_main_label, profile_probability::very_likely ());
  	  /* One argument is negative here, the other positive.  This
  	     overflows always, unless one of the arguments is 0.  But
  	     if e.g. s2 is 0, (U) s1 * 0 doesn't overflow, whatever s1
  	     is, thus we can keep do_main code oring in overflow as is.  */
! 	  do_compare_rtx_and_jump (tem, const0_rtx, EQ, true, mode, NULL_RTX,
! 				   NULL, do_main_label, profile_probability::very_likely ());
  	  expand_arith_set_overflow (lhs, target);
  	  emit_label (do_main_label);
  	  goto do_main;
--- 1447,1469 ----
  	  arg1 = error_mark_node;
  	  emit_jump (do_main_label);
  	  emit_label (after_negate_label);
! 	  tem = expand_binop (mode, xor_optab, op0, op1, NULL_RTX, false,
! 			      OPTAB_LIB_WIDEN);
! 	  do_compare_rtx_and_jump (tem, const0_rtx, GE, false, mode, NULL_RTX,
! 				   NULL, do_main_label,
! 				   profile_probability::very_likely ());
  	  /* One argument is negative here, the other positive.  This
  	     overflows always, unless one of the arguments is 0.  But
  	     if e.g. s2 is 0, (U) s1 * 0 doesn't overflow, whatever s1
  	     is, thus we can keep do_main code oring in overflow as is.  */
! 	  if (pos_neg0 != 2)
! 	    do_compare_rtx_and_jump (op0, const0_rtx, EQ, true, mode, NULL_RTX,
! 				     NULL, do_main_label,
! 				     profile_probability::very_unlikely ());
! 	  if (pos_neg1 != 2)
! 	    do_compare_rtx_and_jump (op1, const0_rtx, EQ, true, mode, NULL_RTX,
! 				     NULL, do_main_label,
! 				     profile_probability::very_unlikely ());
  	  expand_arith_set_overflow (lhs, target);
  	  emit_label (do_main_label);
  	  goto do_main;
diff -Nrcpad gcc-8.3.0/gcc/ipa-cp.c gcc-8.4.0/gcc/ipa-cp.c
*** gcc-8.3.0/gcc/ipa-cp.c	Thu Feb 14 11:24:45 2019
--- gcc-8.4.0/gcc/ipa-cp.c	Wed Mar  4 08:30:00 2020
*************** ipcp_bits_lattice::meet_with (ipcp_bits_
*** 1082,1088 ****
    if (TREE_CODE_CLASS (code) == tcc_binary)
      {
        tree type = TREE_TYPE (operand);
-       gcc_assert (INTEGRAL_TYPE_P (type));
        widest_int o_value, o_mask;
        get_value_and_mask (operand, &o_value, &o_mask);
  
--- 1082,1087 ----
*************** perform_estimation_of_a_value (cgraph_no
*** 2852,2862 ****
    base_time -= time;
    if (base_time > 65535)
      base_time = 65535;
!   time_benefit = base_time.to_int ()
!     + devirtualization_time_bonus (node, known_csts, known_contexts,
! 				   known_aggs_ptrs)
!     + hint_time_bonus (hints)
!     + removable_params_cost + est_move_cost;
  
    gcc_checking_assert (size >=0);
    /* The inliner-heuristics based estimates may think that in certain
--- 2851,2868 ----
    base_time -= time;
    if (base_time > 65535)
      base_time = 65535;
! 
!   /* Extern inline functions have no cloning local time benefits because they
!      will be inlined anyway.  The only reason to clone them is if it enables
!      optimization in any of the functions they call.  */
!   if (DECL_EXTERNAL (node->decl) && DECL_DECLARED_INLINE_P (node->decl))
!     time_benefit = 0;
!   else
!     time_benefit = base_time.to_int ()
!       + devirtualization_time_bonus (node, known_csts, known_contexts,
! 				     known_aggs_ptrs)
!       + hint_time_bonus (hints)
!       + removable_params_cost + est_move_cost;
  
    gcc_checking_assert (size >=0);
    /* The inliner-heuristics based estimates may think that in certain
*************** cgraph_edge_brings_all_agg_vals_for_node
*** 4471,4477 ****
  
    for (i = 0; i < count; i++)
      {
-       static vec<ipa_agg_jf_item> values = vec<ipa_agg_jf_item>();
        struct ipcp_param_lattices *plats;
        bool interesting = false;
        for (struct ipa_agg_replacement_value *av = aggval; av; av = av->next)
--- 4477,4482 ----
*************** cgraph_edge_brings_all_agg_vals_for_node
*** 4487,4493 ****
        if (plats->aggs_bottom)
  	return false;
  
!       values = intersect_aggregates_with_edge (cs, i, values);
        if (!values.exists ())
  	return false;
  
--- 4492,4499 ----
        if (plats->aggs_bottom)
  	return false;
  
!       vec<ipa_agg_jf_item> values
! 	= intersect_aggregates_with_edge (cs, i, vNULL);
        if (!values.exists ())
  	return false;
  
*************** cgraph_edge_brings_all_agg_vals_for_node
*** 4511,4516 ****
--- 4517,4523 ----
  		return false;
  	      }
  	  }
+       values.release ();
      }
    return true;
  }
diff -Nrcpad gcc-8.3.0/gcc/ipa-devirt.c gcc-8.4.0/gcc/ipa-devirt.c
*** gcc-8.3.0/gcc/ipa-devirt.c	Thu Jan 10 19:56:47 2019
--- gcc-8.4.0/gcc/ipa-devirt.c	Wed Mar  4 08:30:00 2020
*************** warn_types_mismatch (tree t1, tree t2, l
*** 1241,1246 ****
--- 1241,1264 ----
      inform (loc_t2, "the incompatible type is defined here");
  }
  
+ /* Return true if T should be ignored in TYPE_FIELDS for ODR comparsion.  */
+ 
+ static bool
+ skip_in_fields_list_p (tree t)
+ {
+   if (TREE_CODE (t) != FIELD_DECL)
+     return true;
+   /* C++ FE introduces zero sized fields depending on -std setting, see
+      PR89358.  */
+   if (DECL_SIZE (t)
+       && integer_zerop (DECL_SIZE (t))
+       && DECL_ARTIFICIAL (t)
+       && DECL_IGNORED_P (t)
+       && !DECL_NAME (t))
+     return true;
+   return false;
+ }
+ 
  /* Compare T1 and T2, report ODR violations if WARN is true and set
     WARNED to true if anything is reported.  Return true if types match.
     If true is returned, the types are also compatible in the sense of
*************** odr_types_equivalent_p (tree t1, tree t2
*** 1525,1533 ****
  		 f1 = TREE_CHAIN (f1), f2 = TREE_CHAIN (f2))
  	      {
  		/* Skip non-fields.  */
! 		while (f1 && TREE_CODE (f1) != FIELD_DECL)
  		  f1 = TREE_CHAIN (f1);
! 		while (f2 && TREE_CODE (f2) != FIELD_DECL)
  		  f2 = TREE_CHAIN (f2);
  		if (!f1 || !f2)
  		  break;
--- 1543,1551 ----
  		 f1 = TREE_CHAIN (f1), f2 = TREE_CHAIN (f2))
  	      {
  		/* Skip non-fields.  */
! 		while (f1 && skip_in_fields_list_p (f1))
  		  f1 = TREE_CHAIN (f1);
! 		while (f2 && skip_in_fields_list_p (f2))
  		  f2 = TREE_CHAIN (f2);
  		if (!f1 || !f2)
  		  break;
diff -Nrcpad gcc-8.3.0/gcc/ipa-fnsummary.c gcc-8.4.0/gcc/ipa-fnsummary.c
*** gcc-8.3.0/gcc/ipa-fnsummary.c	Thu Jan 25 15:32:02 2018
--- gcc-8.4.0/gcc/ipa-fnsummary.c	Wed Mar  4 08:30:00 2020
*************** static void
*** 3413,3436 ****
  ipa_fn_summary_write (void)
  {
    struct output_block *ob = create_output_block (LTO_section_ipa_fn_summary);
    lto_symtab_encoder_t encoder = ob->decl_state->symtab_node_encoder;
    unsigned int count = 0;
-   int i;
  
!   for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
      {
!       symtab_node *snode = lto_symtab_encoder_deref (encoder, i);
!       cgraph_node *cnode = dyn_cast <cgraph_node *> (snode);
!       if (cnode && cnode->definition && !cnode->alias)
  	count++;
      }
    streamer_write_uhwi (ob, count);
  
!   for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
      {
!       symtab_node *snode = lto_symtab_encoder_deref (encoder, i);
!       cgraph_node *cnode = dyn_cast <cgraph_node *> (snode);
!       if (cnode && cnode->definition && !cnode->alias)
  	{
  	  struct ipa_fn_summary *info = ipa_fn_summaries->get (cnode);
  	  struct bitpack_d bp;
--- 3413,3436 ----
  ipa_fn_summary_write (void)
  {
    struct output_block *ob = create_output_block (LTO_section_ipa_fn_summary);
+   lto_symtab_encoder_iterator lsei;
    lto_symtab_encoder_t encoder = ob->decl_state->symtab_node_encoder;
    unsigned int count = 0;
  
!   for (lsei = lsei_start_function_in_partition (encoder); !lsei_end_p (lsei);
!        lsei_next_function_in_partition (&lsei))
      {
!       cgraph_node *cnode = lsei_cgraph_node (lsei);
!       if (cnode->definition && !cnode->alias)
  	count++;
      }
    streamer_write_uhwi (ob, count);
  
!   for (lsei = lsei_start_function_in_partition (encoder); !lsei_end_p (lsei);
!        lsei_next_function_in_partition (&lsei))
      {
!       cgraph_node *cnode = lsei_cgraph_node (lsei);
!       if (cnode->definition && !cnode->alias)
  	{
  	  struct ipa_fn_summary *info = ipa_fn_summaries->get (cnode);
  	  struct bitpack_d bp;
diff -Nrcpad gcc-8.3.0/gcc/ipa-prop.c gcc-8.4.0/gcc/ipa-prop.c
*** gcc-8.3.0/gcc/ipa-prop.c	Wed Jan 16 15:37:33 2019
--- gcc-8.4.0/gcc/ipa-prop.c	Wed Mar  4 08:30:00 2020
*************** read_ipcp_transformation_info (lto_input
*** 4685,4693 ****
  	  bool known = bp_unpack_value (&bp, 1);
  	  if (known)
  	    {
  	      ipa_bits *bits
! 		= ipa_get_ipa_bits_for_value (streamer_read_widest_int (ib),
! 					      streamer_read_widest_int (ib));
  	      (*ts->bits)[i] = bits;
  	    }
  	}
--- 4685,4694 ----
  	  bool known = bp_unpack_value (&bp, 1);
  	  if (known)
  	    {
+ 	      const widest_int value = streamer_read_widest_int (ib);
+ 	      const widest_int mask = streamer_read_widest_int (ib);
  	      ipa_bits *bits
! 		= ipa_get_ipa_bits_for_value (value, mask);
  	      (*ts->bits)[i] = bits;
  	    }
  	}
diff -Nrcpad gcc-8.3.0/gcc/ipa-pure-const.c gcc-8.4.0/gcc/ipa-pure-const.c
*** gcc-8.3.0/gcc/ipa-pure-const.c	Thu Feb 14 11:24:45 2019
--- gcc-8.4.0/gcc/ipa-pure-const.c	Wed Mar  4 08:30:00 2020
*************** special_builtin_state (enum pure_const_s
*** 565,571 ****
  	case BUILT_IN_CXA_END_CLEANUP:
  	case BUILT_IN_EH_COPY_VALUES:
  	case BUILT_IN_FRAME_ADDRESS:
- 	case BUILT_IN_APPLY:
  	case BUILT_IN_APPLY_ARGS:
  	case BUILT_IN_ASAN_BEFORE_DYNAMIC_INIT:
  	case BUILT_IN_ASAN_AFTER_DYNAMIC_INIT:
--- 565,570 ----
diff -Nrcpad gcc-8.3.0/gcc/ira.c gcc-8.4.0/gcc/ira.c
*** gcc-8.3.0/gcc/ira.c	Mon Feb  5 10:47:56 2018
--- gcc-8.4.0/gcc/ira.c	Wed Mar  4 08:30:00 2020
*************** ira (FILE *f)
*** 5147,5152 ****
--- 5147,5154 ----
    int ira_max_point_before_emit;
    bool saved_flag_caller_saves = flag_caller_saves;
    enum ira_region saved_flag_ira_region = flag_ira_region;
+   unsigned int i;
+   int num_used_regs = 0;
  
    clear_bb_flags ();
  
*************** ira (FILE *f)
*** 5162,5173 ****
  
    ira_conflicts_p = optimize > 0;
  
    /* If there are too many pseudos and/or basic blocks (e.g. 10K
       pseudos and 10K blocks or 100K pseudos and 1K blocks), we will
       use simplified and faster algorithms in LRA.  */
    lra_simple_p
      = (ira_use_lra_p
!        && max_reg_num () >= (1 << 26) / last_basic_block_for_fn (cfun));
    if (lra_simple_p)
      {
        /* It permits to skip live range splitting in LRA.  */
--- 5164,5180 ----
  
    ira_conflicts_p = optimize > 0;
  
+   /* Determine the number of pseudos actually requiring coloring.  */
+   for (i = FIRST_PSEUDO_REGISTER; i < DF_REG_SIZE (df); i++)
+     num_used_regs += !!(DF_REG_USE_COUNT (i) + DF_REG_DEF_COUNT (i));
+ 
    /* If there are too many pseudos and/or basic blocks (e.g. 10K
       pseudos and 10K blocks or 100K pseudos and 1K blocks), we will
       use simplified and faster algorithms in LRA.  */
    lra_simple_p
      = (ira_use_lra_p
!        && num_used_regs >= (1 << 26) / last_basic_block_for_fn (cfun));
! 
    if (lra_simple_p)
      {
        /* It permits to skip live range splitting in LRA.  */
diff -Nrcpad gcc-8.3.0/gcc/jit/ChangeLog gcc-8.4.0/gcc/jit/ChangeLog
*** gcc-8.3.0/gcc/jit/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/jit/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/gcc/loop-iv.c gcc-8.4.0/gcc/loop-iv.c
*** gcc-8.3.0/gcc/loop-iv.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/loop-iv.c	Wed Mar  4 08:30:00 2020
*************** simple_rhs_p (rtx rhs)
*** 1380,1403 ****
  static rtx
  find_single_def_src (unsigned int regno)
  {
!   df_ref adef;
!   rtx set, src;
  
!   for (;;)
      {
!       rtx note;
!       adef = DF_REG_DEF_CHAIN (regno);
        if (adef == NULL || DF_REF_NEXT_REG (adef) != NULL
  	  || DF_REF_IS_ARTIFICIAL (adef))
  	return NULL_RTX;
  
!       set = single_set (DF_REF_INSN (adef));
        if (set == NULL || !REG_P (SET_DEST (set))
  	  || REGNO (SET_DEST (set)) != regno)
  	return NULL_RTX;
  
!       note = find_reg_equal_equiv_note (DF_REF_INSN (adef));
! 
        if (note && function_invariant_p (XEXP (note, 0)))
  	{
  	  src = XEXP (note, 0);
--- 1380,1402 ----
  static rtx
  find_single_def_src (unsigned int regno)
  {
!   rtx src = NULL_RTX;
  
!   /* Don't look through unbounded number of single definition REG copies,
!      there might be loops for sources with uninitialized variables.  */
!   for (int cnt = 0; cnt < 128; cnt++)
      {
!       df_ref adef = DF_REG_DEF_CHAIN (regno);
        if (adef == NULL || DF_REF_NEXT_REG (adef) != NULL
  	  || DF_REF_IS_ARTIFICIAL (adef))
  	return NULL_RTX;
  
!       rtx set = single_set (DF_REF_INSN (adef));
        if (set == NULL || !REG_P (SET_DEST (set))
  	  || REGNO (SET_DEST (set)) != regno)
  	return NULL_RTX;
  
!       rtx note = find_reg_equal_equiv_note (DF_REF_INSN (adef));
        if (note && function_invariant_p (XEXP (note, 0)))
  	{
  	  src = XEXP (note, 0);
diff -Nrcpad gcc-8.3.0/gcc/loop-unroll.c gcc-8.4.0/gcc/loop-unroll.c
*** gcc-8.3.0/gcc/loop-unroll.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/loop-unroll.c	Wed Mar  4 08:30:00 2020
*************** decide_unroll_constant_iterations (struc
*** 399,405 ****
      {
        /* However we cannot unroll completely at the RTL level a loop with
  	 constant number of iterations; it should have been peeled instead.  */
!       if ((unsigned) loop->unroll - 1 > desc->niter - 2)
  	{
  	  if (dump_file)
  	    fprintf (dump_file, ";; Loop should have been peeled\n");
--- 399,405 ----
      {
        /* However we cannot unroll completely at the RTL level a loop with
  	 constant number of iterations; it should have been peeled instead.  */
!       if (desc->niter == 0 || (unsigned) loop->unroll > desc->niter - 1)
  	{
  	  if (dump_file)
  	    fprintf (dump_file, ";; Loop should have been peeled\n");
*************** unroll_loop_constant_iterations (struct
*** 651,657 ****
    if (loop->any_likely_upper_bound)
      loop->nb_iterations_likely_upper_bound
        = wi::udiv_trunc (loop->nb_iterations_likely_upper_bound, max_unroll + 1);
!   desc->niter_expr = GEN_INT (desc->niter);
  
    /* Remove the edges.  */
    FOR_EACH_VEC_ELT (remove_edges, i, e)
--- 651,657 ----
    if (loop->any_likely_upper_bound)
      loop->nb_iterations_likely_upper_bound
        = wi::udiv_trunc (loop->nb_iterations_likely_upper_bound, max_unroll + 1);
!   desc->niter_expr = gen_int_mode (desc->niter, desc->mode);
  
    /* Remove the edges.  */
    FOR_EACH_VEC_ELT (remove_edges, i, e)
*************** unroll_loop_runtime_iterations (struct l
*** 1019,1027 ****
        preheader = split_edge (loop_preheader_edge (loop));
        /* Add in count of edge from switch block.  */
        preheader->count += iter_count;
!       branch_code = compare_and_jump_seq (copy_rtx (niter), GEN_INT (j), EQ,
! 					  block_label (preheader), p,
! 					  NULL);
  
        /* We rely on the fact that the compare and jump cannot be optimized out,
  	 and hence the cfg we create is correct.  */
--- 1019,1027 ----
        preheader = split_edge (loop_preheader_edge (loop));
        /* Add in count of edge from switch block.  */
        preheader->count += iter_count;
!       branch_code = compare_and_jump_seq (copy_rtx (niter),
! 					  gen_int_mode (j, desc->mode), EQ,
! 					  block_label (preheader), p, NULL);
  
        /* We rely on the fact that the compare and jump cannot be optimized out,
  	 and hence the cfg we create is correct.  */
diff -Nrcpad gcc-8.3.0/gcc/lra-constraints.c gcc-8.4.0/gcc/lra-constraints.c
*** gcc-8.3.0/gcc/lra-constraints.c	Thu Mar 29 18:29:12 2018
--- gcc-8.4.0/gcc/lra-constraints.c	Wed Mar  4 08:30:00 2020
*************** uses_hard_regs_p (rtx x, HARD_REG_SET se
*** 1774,1787 ****
      return false;
    code = GET_CODE (x);
    mode = GET_MODE (x);
    if (code == SUBREG)
      {
        mode = wider_subreg_mode (x);
!       x = SUBREG_REG (x);
!       code = GET_CODE (x);
      }
  
!   if (REG_P (x))
      {
        x_hard_regno = get_hard_regno (x, true);
        return (x_hard_regno >= 0
--- 1774,1797 ----
      return false;
    code = GET_CODE (x);
    mode = GET_MODE (x);
+ 
    if (code == SUBREG)
      {
+       /* For all SUBREGs we want to check whether the full multi-register
+ 	 overlaps the set.  For normal SUBREGs this means 'get_hard_regno' of
+ 	 the inner register, for paradoxical SUBREGs this means the
+ 	 'get_hard_regno' of the full SUBREG and for complete SUBREGs either is
+ 	 fine.  Use the wider mode for all cases.  */
+       rtx subreg = SUBREG_REG (x);
        mode = wider_subreg_mode (x);
!       if (mode == GET_MODE (subreg))
! 	{
! 	  x = subreg;
! 	  code = GET_CODE (x);
! 	}
      }
  
!   if (REG_P (x) || SUBREG_P (x))
      {
        x_hard_regno = get_hard_regno (x, true);
        return (x_hard_regno >= 0
*************** process_alt_operands (int only_alternati
*** 2315,2320 ****
--- 2325,2332 ----
  		  break;
  
  		reg:
+ 		  if (mode == BLKmode)
+ 		    break;
  		  this_alternative = reg_class_subunion[this_alternative][cl];
  		  IOR_HARD_REG_SET (this_alternative_set,
  				    reg_class_contents[cl]);
*************** process_alt_operands (int only_alternati
*** 2325,2332 ****
  		      IOR_HARD_REG_SET (this_costly_alternative_set,
  					reg_class_contents[cl]);
  		    }
- 		  if (mode == BLKmode)
- 		    break;
  		  winreg = true;
  		  if (REG_P (op))
  		    {
--- 2337,2342 ----
*************** invariant_p (const_rtx x)
*** 5767,5772 ****
--- 5777,5785 ----
    enum rtx_code code;
    int i, j;
  
+   if (side_effects_p (x))
+     return false;
+ 
    code = GET_CODE (x);
    mode = GET_MODE (x);
    if (code == SUBREG)
*************** inherit_in_ebb (rtx_insn *head, rtx_insn
*** 6293,6298 ****
--- 6306,6312 ----
  			add_to_hard_reg_set (&s, PSEUDO_REGNO_MODE (dst_regno),
  					     reg_renumber[dst_regno]);
  		      AND_COMPL_HARD_REG_SET (live_hard_regs, s);
+ 		      AND_COMPL_HARD_REG_SET (potential_reload_hard_regs, s);
  		    }
  		  /* We should invalidate potential inheritance or
  		     splitting for the current insn usages to the next
diff -Nrcpad gcc-8.3.0/gcc/lto/ChangeLog gcc-8.4.0/gcc/lto/ChangeLog
*** gcc-8.3.0/gcc/lto/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/lto/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,16 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2020-01-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2020-01-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* lto-partition.c (lto_balanced_map): Remember
+ 	best_noreorder_pos and then restore to it
+ 	when we revert.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/gcc/lto/lto-partition.c gcc-8.4.0/gcc/lto/lto-partition.c
*** gcc-8.3.0/gcc/lto/lto-partition.c	Mon Jun 25 17:20:09 2018
--- gcc-8.4.0/gcc/lto/lto-partition.c	Wed Mar  4 08:30:00 2020
*************** void
*** 507,512 ****
--- 507,513 ----
  lto_balanced_map (int n_lto_partitions, int max_partition_size)
  {
    int n_varpool_nodes = 0, varpool_pos = 0, best_varpool_pos = 0;
+   int best_noreorder_pos = 0;
    auto_vec <cgraph_node *> order (symtab->cgraph_count);
    auto_vec<cgraph_node *> noreorder;
    auto_vec<varpool_node *> varpool_order;
*************** lto_balanced_map (int n_lto_partitions,
*** 769,774 ****
--- 770,776 ----
  	  best_i = i;
  	  best_n_nodes = lto_symtab_encoder_size (partition->encoder);
  	  best_varpool_pos = varpool_pos;
+ 	  best_noreorder_pos = noreorder_pos;
  	}
        if (symtab->dump_file)
  	fprintf (symtab->dump_file, "Step %i: added %s/%i, size %i, "
*************** lto_balanced_map (int n_lto_partitions,
*** 789,794 ****
--- 791,797 ----
  			 i - best_i, best_i);
  	      undo_partition (partition, best_n_nodes);
  	      varpool_pos = best_varpool_pos;
+ 	      noreorder_pos = best_noreorder_pos;
  	    }
  	  gcc_assert (best_size == partition->insns);
  	  i = best_i;
diff -Nrcpad gcc-8.3.0/gcc/lto-streamer-in.c gcc-8.4.0/gcc/lto-streamer-in.c
*** gcc-8.3.0/gcc/lto-streamer-in.c	Wed Jan  3 21:43:02 2018
--- gcc-8.4.0/gcc/lto-streamer-in.c	Wed Mar  4 08:30:00 2020
*************** input_cfg (struct lto_input_block *ib, s
*** 826,831 ****
--- 826,832 ----
        /* Read OMP SIMD related info.  */
        loop->safelen = streamer_read_hwi (ib);
        loop->unroll = streamer_read_hwi (ib);
+       loop->owned_clique = streamer_read_hwi (ib);
        loop->dont_vectorize = streamer_read_hwi (ib);
        loop->force_vectorize = streamer_read_hwi (ib);
        loop->simduid = stream_read_tree (ib, data_in);
*************** input_function (tree fn_decl, struct dat
*** 1131,1136 ****
--- 1132,1145 ----
  		      ? !MAY_HAVE_DEBUG_MARKER_STMTS
  		      : !MAY_HAVE_DEBUG_BIND_STMTS))
  		remove = true;
+ 	      /* In case the linemap overflows locations can be dropped
+ 		 to zero.  Thus do not keep nonsensical inline entry markers
+ 		 we'd later ICE on.  */
+ 	      tree block;
+ 	      if (gimple_debug_inline_entry_p (stmt)
+ 		  && (block = gimple_block (stmt))
+ 		  && !inlined_function_outer_scope_p (block))
+ 		remove = true;
  	      if (is_gimple_call (stmt)
  		  && gimple_call_internal_p (stmt))
  		{
diff -Nrcpad gcc-8.3.0/gcc/lto-streamer-out.c gcc-8.4.0/gcc/lto-streamer-out.c
*** gcc-8.3.0/gcc/lto-streamer-out.c	Fri Feb  8 14:34:49 2019
--- gcc-8.4.0/gcc/lto-streamer-out.c	Wed Mar  4 08:30:00 2020
*************** output_cfg (struct output_block *ob, str
*** 1945,1950 ****
--- 1945,1951 ----
        /* Write OMP SIMD related info.  */
        streamer_write_hwi (ob, loop->safelen);
        streamer_write_hwi (ob, loop->unroll);
+       streamer_write_hwi (ob, loop->owned_clique);
        streamer_write_hwi (ob, loop->dont_vectorize);
        streamer_write_hwi (ob, loop->force_vectorize);
        stream_write_tree (ob, loop->simduid, true);
diff -Nrcpad gcc-8.3.0/gcc/lto-streamer.h gcc-8.4.0/gcc/lto-streamer.h
*** gcc-8.3.0/gcc/lto-streamer.h	Wed Feb 13 11:24:28 2019
--- gcc-8.4.0/gcc/lto-streamer.h	Wed Mar  4 08:30:00 2020
*************** along with GCC; see the file COPYING3.
*** 121,127 ****
       form followed by the data for the string.  */
  
  #define LTO_major_version 7
! #define LTO_minor_version 1
  
  typedef unsigned char	lto_decl_flags_t;
  
--- 121,127 ----
       form followed by the data for the string.  */
  
  #define LTO_major_version 7
! #define LTO_minor_version 3
  
  typedef unsigned char	lto_decl_flags_t;
  
diff -Nrcpad gcc-8.3.0/gcc/lto-wrapper.c gcc-8.4.0/gcc/lto-wrapper.c
*** gcc-8.3.0/gcc/lto-wrapper.c	Sun Jan  6 15:51:45 2019
--- gcc-8.4.0/gcc/lto-wrapper.c	Wed Mar  4 08:30:00 2020
*************** cont:
*** 1669,1675 ****
  	  struct pex_obj *pex;
  	  char jobs[32];
  
! 	  fprintf (mstream, "all:");
  	  for (i = 0; i < nr; ++i)
  	    {
  	      int j = ltrans_priorities[i*2 + 1];
--- 1669,1677 ----
  	  struct pex_obj *pex;
  	  char jobs[32];
  
! 	  fprintf (mstream,
! 		   ".PHONY: all\n"
! 		   "all:");
  	  for (i = 0; i < nr; ++i)
  	    {
  	      int j = ltrans_priorities[i*2 + 1];
diff -Nrcpad gcc-8.3.0/gcc/match.pd gcc-8.4.0/gcc/match.pd
*** gcc-8.3.0/gcc/match.pd	Mon Nov  5 14:11:32 2018
--- gcc-8.4.0/gcc/match.pd	Wed Mar  4 08:30:00 2020
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 1229,1235 ****
  (for cmp (gt lt ge le)
  (simplify
   (mult (convert (cmp @0 @1)) @2)
!   (cond (cmp @0 @1) @2 { build_zero_cst (type); })))
  
  /* For integral types with undefined overflow and C != 0 fold
     x * C EQ/NE y * C into x EQ/NE y.  */
--- 1229,1236 ----
  (for cmp (gt lt ge le)
  (simplify
   (mult (convert (cmp @0 @1)) @2)
!   (if (GIMPLE || !TREE_SIDE_EFFECTS (@2))
!    (cond (cmp @0 @1) @2 { build_zero_cst (type); }))))
  
  /* For integral types with undefined overflow and C != 0 fold
     x * C EQ/NE y * C into x EQ/NE y.  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 2406,2411 ****
--- 2407,2419 ----
  	       && TYPE_UNSIGNED (TREE_TYPE (@1)))))
     (view_convert @1)))
  
+ /* Simplify a view-converted empty constructor.  */
+ (simplify
+   (view_convert CONSTRUCTOR@0)
+   (if (TREE_CODE (@0) != SSA_NAME
+        && CONSTRUCTOR_NELTS (@0) == 0)
+    { build_zero_cst (type); }))
+ 
  /* Re-association barriers around constants and other re-association
     barriers can be removed.  */
  (simplify
diff -Nrcpad gcc-8.3.0/gcc/modulo-sched.c gcc-8.4.0/gcc/modulo-sched.c
*** gcc-8.3.0/gcc/modulo-sched.c	Tue Jan  9 08:03:45 2018
--- gcc-8.4.0/gcc/modulo-sched.c	Wed Mar  4 08:30:00 2020
*************** sms_schedule (void)
*** 1605,1610 ****
--- 1605,1611 ----
        mii = 1; /* Need to pass some estimate of mii.  */
        rec_mii = sms_order_nodes (g, mii, node_order, &max_asap);
        mii = MAX (res_MII (g), rec_mii);
+       mii = MAX (mii, 1);
        maxii = MAX (max_asap, MAXII_FACTOR * mii);
  
        if (dump_file)
*************** ps_insn_find_column (partial_schedule_pt
*** 3004,3012 ****
              last_must_precede = next_ps_i;
          }
        /* The closing branch must be the last in the row.  */
!       if (must_precede 
! 	  && bitmap_bit_p (must_precede, next_ps_i->id)
! 	  && JUMP_P (ps_rtl_insn (ps, next_ps_i->id)))
  	return false;
               
         last_in_row = next_ps_i;
--- 3005,3011 ----
              last_must_precede = next_ps_i;
          }
        /* The closing branch must be the last in the row.  */
!       if (JUMP_P (ps_rtl_insn (ps, next_ps_i->id)))
  	return false;
               
         last_in_row = next_ps_i;
*************** ps_add_node_check_conflicts (partial_sch
*** 3210,3216 ****
     			     int c, sbitmap must_precede,
  			     sbitmap must_follow)
  {
!   int has_conflicts = 0;
    ps_insn_ptr ps_i;
  
    /* First add the node to the PS, if this succeeds check for
--- 3209,3215 ----
     			     int c, sbitmap must_precede,
  			     sbitmap must_follow)
  {
!   int i, first, amount, has_conflicts = 0;
    ps_insn_ptr ps_i;
  
    /* First add the node to the PS, if this succeeds check for
*************** ps_add_node_check_conflicts (partial_sch
*** 3218,3240 ****
    if (! (ps_i = add_node_to_ps (ps, n, c, must_precede, must_follow)))
      return NULL; /* Failed to insert the node at the given cycle.  */
  
!   has_conflicts = ps_has_conflicts (ps, c, c)
! 		  || (ps->history > 0
! 		      && ps_has_conflicts (ps,
! 					   c - ps->history,
! 					   c + ps->history));
! 
!   /* Try different issue slots to find one that the given node can be
!      scheduled in without conflicts.  */
!   while (has_conflicts)
      {
        if (! ps_insn_advance_column (ps, ps_i, must_follow))
  	break;
-       has_conflicts = ps_has_conflicts (ps, c, c)
- 		      || (ps->history > 0
- 			  && ps_has_conflicts (ps,
- 					       c - ps->history,
- 					       c + ps->history));
      }
  
    if (has_conflicts)
--- 3217,3248 ----
    if (! (ps_i = add_node_to_ps (ps, n, c, must_precede, must_follow)))
      return NULL; /* Failed to insert the node at the given cycle.  */
  
!   while (1)
      {
+       has_conflicts = ps_has_conflicts (ps, c, c);
+       if (ps->history > 0 && !has_conflicts)
+ 	{
+ 	  /* Check all 2h+1 intervals, starting from c-2h..c up to c..2h,
+ 	     but not more than ii intervals.  */
+ 	  first = c - ps->history;
+ 	  amount = 2 * ps->history + 1;
+ 	  if (amount > ps->ii)
+ 	    amount = ps->ii;
+ 	  for (i = first; i < first + amount; i++)
+ 	    {
+ 	      has_conflicts = ps_has_conflicts (ps,
+ 						i - ps->history,
+ 						i + ps->history);
+ 	      if (has_conflicts)
+ 		break;
+ 	    }
+ 	}
+       if (!has_conflicts)
+ 	break;
+       /* Try different issue slots to find one that the given node can be
+ 	 scheduled in without conflicts.  */
        if (! ps_insn_advance_column (ps, ps_i, must_follow))
  	break;
      }
  
    if (has_conflicts)
diff -Nrcpad gcc-8.3.0/gcc/multiple_target.c gcc-8.4.0/gcc/multiple_target.c
*** gcc-8.3.0/gcc/multiple_target.c	Tue Apr 17 05:40:39 2018
--- gcc-8.4.0/gcc/multiple_target.c	Wed Mar  4 08:30:00 2020
*************** create_dispatcher_calls (struct cgraph_n
*** 103,112 ****
      inode->resolve_alias (cgraph_node::get (resolver_decl));
  
    auto_vec<cgraph_edge *> edges_to_redirect;
!   auto_vec<ipa_ref *> references_to_redirect;
  
!   for (unsigned i = 0; node->iterate_referring (i, ref); i++)
!     references_to_redirect.safe_push (ref);
  
    /* We need to remember NEXT_CALLER as it could be modified in the loop.  */
    for (cgraph_edge *e = node->callers; e ; e = e->next_caller)
--- 103,118 ----
      inode->resolve_alias (cgraph_node::get (resolver_decl));
  
    auto_vec<cgraph_edge *> edges_to_redirect;
!   /* We need to capture the references by value rather than just pointers to them
!      and remove them right away, as removing them later would invalidate what
!      some other reference pointers point to.  */
!   auto_vec<ipa_ref> references_to_redirect;
  
!   while (node->iterate_referring (0, ref))
!     {
!       references_to_redirect.safe_push (*ref);
!       ref->remove_reference ();
!     }
  
    /* We need to remember NEXT_CALLER as it could be modified in the loop.  */
    for (cgraph_edge *e = node->callers; e ; e = e->next_caller)
*************** create_dispatcher_calls (struct cgraph_n
*** 146,160 ****
  		}
  
  	      symtab_node *source = ref->referring;
- 	      ref->remove_reference ();
  	      source->create_reference (inode, IPA_REF_ADDR);
  	    }
  	  else if (ref->use == IPA_REF_ALIAS)
  	    {
  	      symtab_node *source = ref->referring;
- 	      ref->remove_reference ();
  	      source->create_reference (inode, IPA_REF_ALIAS);
! 	      source->add_to_same_comdat_group (inode);
  	    }
  	  else
  	    gcc_unreachable ();
--- 152,165 ----
  		}
  
  	      symtab_node *source = ref->referring;
  	      source->create_reference (inode, IPA_REF_ADDR);
  	    }
  	  else if (ref->use == IPA_REF_ALIAS)
  	    {
  	      symtab_node *source = ref->referring;
  	      source->create_reference (inode, IPA_REF_ALIAS);
! 	      if (inode->get_comdat_group ())
! 		source->add_to_same_comdat_group (inode);
  	    }
  	  else
  	    gcc_unreachable ();
*************** create_new_asm_name (char *old_asm_name,
*** 294,300 ****
  /*  Creates target clone of NODE.  */
  
  static cgraph_node *
! create_target_clone (cgraph_node *node, bool definition, char *name)
  {
    cgraph_node *new_node;
  
--- 299,306 ----
  /*  Creates target clone of NODE.  */
  
  static cgraph_node *
! create_target_clone (cgraph_node *node, bool definition, char *name,
! 		     tree attributes)
  {
    cgraph_node *new_node;
  
*************** create_target_clone (cgraph_node *node,
*** 303,315 ****
        new_node = node->create_version_clone_with_body (vNULL, NULL,
      						       NULL, false,
  						       NULL, NULL,
! 						       name);
        new_node->force_output = true;
      }
    else
      {
        tree new_decl = copy_node (node->decl);
        new_node = cgraph_node::get_create (new_decl);
        /* Generate a new name for the new version.  */
        symtab->change_decl_assembler_name (new_node->decl,
  					  clone_function_name (node->decl,
--- 309,324 ----
        new_node = node->create_version_clone_with_body (vNULL, NULL,
      						       NULL, false,
  						       NULL, NULL,
! 						       name, attributes);
!       if (new_node == NULL)
! 	return NULL;
        new_node->force_output = true;
      }
    else
      {
        tree new_decl = copy_node (node->decl);
        new_node = cgraph_node::get_create (new_decl);
+       DECL_ATTRIBUTES (new_decl) = attributes;
        /* Generate a new name for the new version.  */
        symtab->change_decl_assembler_name (new_node->decl,
  					  clone_function_name (node->decl,
*************** expand_target_clones (struct cgraph_node
*** 399,420 ****
  
        create_new_asm_name (attr, suffix);
        /* Create new target clone.  */
-       cgraph_node *new_node = create_target_clone (node, definition, suffix);
-       new_node->local.local = false;
-       XDELETEVEC (suffix);
- 
-       /* Set new attribute for the clone.  */
        tree attributes = make_attribute ("target", attr,
! 					DECL_ATTRIBUTES (new_node->decl));
!       DECL_ATTRIBUTES (new_node->decl) = attributes;
!       location_t saved_loc = input_location;
!       input_location = DECL_SOURCE_LOCATION (node->decl);
!       if (!targetm.target_option.valid_attribute_p (new_node->decl, NULL,
! 						    TREE_VALUE (attributes),
! 						    0))
  	return false;
  
-       input_location = saved_loc;
        decl2_v = new_node->function_version ();
        if (decl2_v != NULL)
          continue;
--- 408,423 ----
  
        create_new_asm_name (attr, suffix);
        /* Create new target clone.  */
        tree attributes = make_attribute ("target", attr,
! 					DECL_ATTRIBUTES (node->decl));
! 
!       cgraph_node *new_node = create_target_clone (node, definition, suffix,
! 						   attributes);
!       if (new_node == NULL)
  	return false;
+       new_node->local.local = false;
+       XDELETEVEC (suffix);
  
        decl2_v = new_node->function_version ();
        if (decl2_v != NULL)
          continue;
*************** expand_target_clones (struct cgraph_node
*** 441,453 ****
  				    DECL_ATTRIBUTES (node->decl));
    DECL_ATTRIBUTES (node->decl) = attributes;
    node->local.local = false;
!   location_t saved_loc = input_location;
!   input_location = DECL_SOURCE_LOCATION (node->decl);
!   bool ret
!     = targetm.target_option.valid_attribute_p (node->decl, NULL,
! 					       TREE_VALUE (attributes), 0);
!   input_location = saved_loc;
!   return ret;
  }
  
  static unsigned int
--- 444,450 ----
  				    DECL_ATTRIBUTES (node->decl));
    DECL_ATTRIBUTES (node->decl) = attributes;
    node->local.local = false;
!   return true;
  }
  
  static unsigned int
diff -Nrcpad gcc-8.3.0/gcc/objc/ChangeLog gcc-8.4.0/gcc/objc/ChangeLog
*** gcc-8.3.0/gcc/objc/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/objc/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,26 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2019-08-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR pch/90326
+ 	* config-lang.in (gtfiles): Add c-family/c-format.c.
+ 
+ 2019-08-28  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* objc/objc-act.h (OCTI_INSTANCE_TYPE, OCTI_INSTANCETYPE_NAME): New.
+ 	(objc_global_trees): Add instance type and name.
+ 	(INSTANCE_TYPEDEF_NAME): New.
+ 	* objc/objc-act.c (synth_module_prologue): Build decls for
+ 	objc_instancetype_type and objc_instancetype_name.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/gcc/objc/config-lang.in gcc-8.4.0/gcc/objc/config-lang.in
*** gcc-8.3.0/gcc/objc/config-lang.in	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/objc/config-lang.in	Wed Mar  4 08:30:00 2020
*************** lang_requires="c"
*** 35,38 ****
  # Order is important.  If you change this list, make sure you test
  # building without C++ as well; that is, remove the gcc/cp directory,
  # and build with --enable-languages=c,objc.
! gtfiles="\$(srcdir)/objc/objc-map.h \$(srcdir)/c-family/c-objc.h \$(srcdir)/objc/objc-act.h \$(srcdir)/objc/objc-act.c \$(srcdir)/objc/objc-runtime-shared-support.c \$(srcdir)/objc/objc-gnu-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-02.c \$(srcdir)/c/c-parser.h \$(srcdir)/c/c-parser.c \$(srcdir)/c/c-tree.h \$(srcdir)/c/c-decl.c \$(srcdir)/c/c-lang.h \$(srcdir)/c/c-objc-common.c \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-common.h \$(srcdir)/c-family/c-cppbuiltin.c \$(srcdir)/c-family/c-pragma.h \$(srcdir)/c-family/c-pragma.c"
--- 35,38 ----
  # Order is important.  If you change this list, make sure you test
  # building without C++ as well; that is, remove the gcc/cp directory,
  # and build with --enable-languages=c,objc.
! gtfiles="\$(srcdir)/objc/objc-map.h \$(srcdir)/c-family/c-objc.h \$(srcdir)/objc/objc-act.h \$(srcdir)/objc/objc-act.c \$(srcdir)/objc/objc-runtime-shared-support.c \$(srcdir)/objc/objc-gnu-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-02.c \$(srcdir)/c/c-parser.h \$(srcdir)/c/c-parser.c \$(srcdir)/c/c-tree.h \$(srcdir)/c/c-decl.c \$(srcdir)/c/c-lang.h \$(srcdir)/c/c-objc-common.c \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-common.h \$(srcdir)/c-family/c-cppbuiltin.c \$(srcdir)/c-family/c-pragma.h \$(srcdir)/c-family/c-pragma.c \$(srcdir)/c-family/c-format.c"
diff -Nrcpad gcc-8.3.0/gcc/objc/objc-act.c gcc-8.4.0/gcc/objc/objc-act.c
*** gcc-8.3.0/gcc/objc/objc-act.c	Fri Apr 20 12:55:36 2018
--- gcc-8.4.0/gcc/objc/objc-act.c	Wed Mar  4 08:30:00 2020
*************** synth_module_prologue (void)
*** 2944,2955 ****
    objc_class_reference = xref_tag (RECORD_TYPE, objc_class_id);
  
    objc_object_type = build_pointer_type (objc_object_reference);
    objc_class_type = build_pointer_type (objc_class_reference);
  
    objc_object_name = get_identifier (OBJECT_TYPEDEF_NAME);
    objc_class_name = get_identifier (CLASS_TYPEDEF_NAME);
  
!   /* Declare the 'id' and 'Class' typedefs.  */
    type = lang_hooks.decls.pushdecl (build_decl (input_location,
  						TYPE_DECL,
  						objc_object_name,
--- 2944,2957 ----
    objc_class_reference = xref_tag (RECORD_TYPE, objc_class_id);
  
    objc_object_type = build_pointer_type (objc_object_reference);
+   objc_instancetype_type = build_pointer_type (objc_object_reference);
    objc_class_type = build_pointer_type (objc_class_reference);
  
    objc_object_name = get_identifier (OBJECT_TYPEDEF_NAME);
+   objc_instancetype_name = get_identifier (INSTANCE_TYPEDEF_NAME);
    objc_class_name = get_identifier (CLASS_TYPEDEF_NAME);
  
!   /* Declare the 'id', 'instancetype' and 'Class' typedefs.  */
    type = lang_hooks.decls.pushdecl (build_decl (input_location,
  						TYPE_DECL,
  						objc_object_name,
*************** synth_module_prologue (void)
*** 2957,2962 ****
--- 2959,2970 ----
    TREE_NO_WARNING (type) = 1;
  
    type = lang_hooks.decls.pushdecl (build_decl (input_location,
+ 						TYPE_DECL,
+ 						objc_instancetype_name,
+ 						objc_instancetype_type));
+   TREE_NO_WARNING (type) = 1;
+ 
+   type = lang_hooks.decls.pushdecl (build_decl (input_location,
  						TYPE_DECL,
  						objc_class_name,
  						objc_class_type));
diff -Nrcpad gcc-8.3.0/gcc/objc/objc-act.h gcc-8.4.0/gcc/objc/objc-act.h
*** gcc-8.3.0/gcc/objc/objc-act.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/objc/objc-act.h	Wed Mar  4 08:30:00 2020
*************** enum objc_tree_index
*** 313,318 ****
--- 313,319 ----
      OCTI_SUPER_TYPE,
      OCTI_SEL_TYPE,
      OCTI_ID_TYPE,
+     OCTI_INSTANCE_TYPE,
      OCTI_CLS_TYPE,
      OCTI_NST_TYPE,
      OCTI_PROTO_TYPE,
*************** enum objc_tree_index
*** 368,373 ****
--- 369,375 ----
      OCTI_OBJ_ID,
      OCTI_CLS_ID,
      OCTI_ID_NAME,
+     OCTI_INSTANCETYPE_NAME,
      OCTI_CLASS_NAME,
      OCTI_CNST_STR_ID,
      OCTI_CNST_STR_TYPE,
*************** extern GTY(()) tree objc_global_trees[OC
*** 443,448 ****
--- 445,451 ----
  #define objc_super_type		objc_global_trees[OCTI_SUPER_TYPE]
  #define objc_selector_type		objc_global_trees[OCTI_SEL_TYPE]
  #define objc_object_type	objc_global_trees[OCTI_ID_TYPE]
+ #define objc_instancetype_type	objc_global_trees[OCTI_INSTANCE_TYPE]
  #define objc_class_type		objc_global_trees[OCTI_CLS_TYPE]
  #define objc_instance_type	objc_global_trees[OCTI_NST_TYPE]
  #define objc_protocol_type	objc_global_trees[OCTI_PROTO_TYPE]
*************** extern GTY(()) tree objc_global_trees[OC
*** 570,576 ****
  
  #define objc_object_id		objc_global_trees[OCTI_OBJ_ID]
  #define objc_class_id		objc_global_trees[OCTI_CLS_ID]
! #define objc_object_name		objc_global_trees[OCTI_ID_NAME]
  #define objc_class_name		objc_global_trees[OCTI_CLASS_NAME]
  
  /* Constant string classes.  */
--- 573,580 ----
  
  #define objc_object_id		objc_global_trees[OCTI_OBJ_ID]
  #define objc_class_id		objc_global_trees[OCTI_CLS_ID]
! #define objc_object_name        objc_global_trees[OCTI_ID_NAME]
! #define objc_instancetype_name	objc_global_trees[OCTI_INSTANCETYPE_NAME]
  #define objc_class_name		objc_global_trees[OCTI_CLASS_NAME]
  
  /* Constant string classes.  */
*************** extern GTY(()) tree objc_global_trees[OC
*** 608,613 ****
--- 612,618 ----
  /* Reserved tag definitions.  */
  
  #define OBJECT_TYPEDEF_NAME		"id"
+ #define INSTANCE_TYPEDEF_NAME		"instancetype"
  #define CLASS_TYPEDEF_NAME		"Class"
  
  #define TAG_OBJECT			"objc_object"
diff -Nrcpad gcc-8.3.0/gcc/objcp/ChangeLog gcc-8.4.0/gcc/objcp/ChangeLog
*** gcc-8.3.0/gcc/objcp/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/objcp/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,15 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2019-08-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR pch/90326
+ 	* config-lang.in (gtfiles): Don't add c-family/c-cppbuiltin.c.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/gcc/objcp/config-lang.in gcc-8.4.0/gcc/objcp/config-lang.in
*** gcc-8.3.0/gcc/objcp/config-lang.in	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/objcp/config-lang.in	Wed Mar  4 08:30:00 2020
*************** gtfiles="$(. $srcdir/cp/config-lang.in ;
*** 52,58 ****
  gtfiles="$gtfiles \
  \$(srcdir)/objc/objc-act.h \
  \$(srcdir)/objc/objc-map.h \
- \$(srcdir)/c-family/c-cppbuiltin.c \
  \$(srcdir)/objc/objc-act.c \
  \$(srcdir)/objc/objc-gnu-runtime-abi-01.c \
  \$(srcdir)/objc/objc-next-runtime-abi-01.c \
--- 52,57 ----
diff -Nrcpad gcc-8.3.0/gcc/omp-low.c gcc-8.4.0/gcc/omp-low.c
*** gcc-8.3.0/gcc/omp-low.c	Mon Nov  5 14:07:47 2018
--- gcc-8.4.0/gcc/omp-low.c	Wed Mar  4 08:30:00 2020
*************** use_pointer_for_field (tree decl, omp_co
*** 404,421 ****
  	  omp_context *up;
  
  	  for (up = shared_ctx->outer; up; up = up->outer)
! 	    if (is_taskreg_ctx (up) && maybe_lookup_decl (decl, up))
  	      break;
  
  	  if (up)
  	    {
  	      tree c;
  
! 	      for (c = gimple_omp_taskreg_clauses (up->stmt);
! 		   c; c = OMP_CLAUSE_CHAIN (c))
! 		if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_SHARED
! 		    && OMP_CLAUSE_DECL (c) == decl)
! 		  break;
  
  	      if (c)
  		goto maybe_mark_addressable_and_ret;
--- 404,433 ----
  	  omp_context *up;
  
  	  for (up = shared_ctx->outer; up; up = up->outer)
! 	    if ((is_taskreg_ctx (up)
! 		 || (gimple_code (up->stmt) == GIMPLE_OMP_TARGET
! 		     && is_gimple_omp_offloaded (up->stmt)))
! 		&& maybe_lookup_decl (decl, up))
  	      break;
  
  	  if (up)
  	    {
  	      tree c;
  
! 	      if (gimple_code (up->stmt) == GIMPLE_OMP_TARGET)
! 		{
! 		  for (c = gimple_omp_target_clauses (up->stmt);
! 		       c; c = OMP_CLAUSE_CHAIN (c))
! 		    if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_MAP
! 			&& OMP_CLAUSE_DECL (c) == decl)
! 		      break;
! 		}
! 	      else
! 		for (c = gimple_omp_taskreg_clauses (up->stmt);
! 		     c; c = OMP_CLAUSE_CHAIN (c))
! 		  if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_SHARED
! 		      && OMP_CLAUSE_DECL (c) == decl)
! 		    break;
  
  	      if (c)
  		goto maybe_mark_addressable_and_ret;
*************** new_omp_context (gimple *stmt, omp_conte
*** 851,856 ****
--- 863,869 ----
        ctx->cb.copy_decl = omp_copy_decl;
        ctx->cb.eh_lp_nr = 0;
        ctx->cb.transform_call_graph_edges = CB_CGE_MOVE;
+       ctx->cb.dont_remap_vla_if_no_change = true;
        ctx->depth = 1;
      }
  
*************** scan_omp_1_stmt (gimple_stmt_iterator *g
*** 3173,3179 ****
        break;
  
      case GIMPLE_OMP_TARGET:
!       scan_omp_target (as_a <gomp_target *> (stmt), ctx);
        break;
  
      case GIMPLE_OMP_TEAMS:
--- 3186,3199 ----
        break;
  
      case GIMPLE_OMP_TARGET:
!       if (is_gimple_omp_offloaded (stmt))
! 	{
! 	  taskreg_nesting_level++;
! 	  scan_omp_target (as_a <gomp_target *> (stmt), ctx);
! 	  taskreg_nesting_level--;
! 	}
!       else
! 	scan_omp_target (as_a <gomp_target *> (stmt), ctx);
        break;
  
      case GIMPLE_OMP_TEAMS:
diff -Nrcpad gcc-8.3.0/gcc/omp-simd-clone.c gcc-8.4.0/gcc/omp-simd-clone.c
*** gcc-8.3.0/gcc/omp-simd-clone.c	Thu Feb  7 14:45:41 2019
--- gcc-8.4.0/gcc/omp-simd-clone.c	Wed Mar  4 08:30:00 2020
*************** ipa_simd_modify_stmt_ops (tree *tp, int
*** 868,873 ****
--- 868,885 ----
  
    if (tp != orig_tp)
      {
+       if (gimple_code (info->stmt) == GIMPLE_PHI
+ 	  && cand
+ 	  && TREE_CODE (*orig_tp) == ADDR_EXPR
+ 	  && TREE_CODE (TREE_OPERAND (*orig_tp, 0)) == PARM_DECL
+ 	  && cand->alias_ptr_type)
+ 	{
+ 	  gcc_assert (TREE_CODE (cand->alias_ptr_type) == SSA_NAME);
+ 	  *orig_tp = cand->alias_ptr_type;
+ 	  info->modified = true;
+ 	  return NULL_TREE;
+ 	}
+ 
        repl = build_fold_addr_expr (repl);
        gimple *stmt;
        if (is_gimple_debug (info->stmt))
*************** ipa_simd_modify_stmt_ops (tree *tp, int
*** 884,890 ****
  	  stmt = gimple_build_assign (make_ssa_name (TREE_TYPE (repl)), repl);
  	  repl = gimple_assign_lhs (stmt);
  	}
!       gimple_stmt_iterator gsi = gsi_for_stmt (info->stmt);
        gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
        *orig_tp = repl;
      }
--- 896,913 ----
  	  stmt = gimple_build_assign (make_ssa_name (TREE_TYPE (repl)), repl);
  	  repl = gimple_assign_lhs (stmt);
  	}
!       gimple_stmt_iterator gsi;
!       if (gimple_code (info->stmt) == GIMPLE_PHI)
! 	{
! 	  gsi = gsi_after_labels (single_succ (ENTRY_BLOCK_PTR_FOR_FN (cfun)));
! 	  /* Cache SSA_NAME for next time.  */
! 	  if (cand
! 	      && TREE_CODE (*orig_tp) == ADDR_EXPR
! 	      && TREE_CODE (TREE_OPERAND (*orig_tp, 0)) == PARM_DECL)
! 	    cand->alias_ptr_type = repl;
! 	}
!       else
! 	gsi = gsi_for_stmt (info->stmt);
        gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
        *orig_tp = repl;
      }
*************** ipa_simd_modify_function_body (struct cg
*** 985,990 ****
--- 1008,1038 ----
      {
        gimple_stmt_iterator gsi;
  
+       for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+ 	{
+ 	  gphi *phi = as_a <gphi *> (gsi_stmt (gsi));
+ 	  int i, n = gimple_phi_num_args (phi);
+ 	  info.stmt = phi;
+ 	  struct walk_stmt_info wi;
+ 	  memset (&wi, 0, sizeof (wi));
+ 	  info.modified = false;
+ 	  wi.info = &info;
+ 	  for (i = 0; i < n; ++i)
+ 	    {
+ 	      int walk_subtrees = 1;
+ 	      tree arg = gimple_phi_arg_def (phi, i);
+ 	      tree op = arg;
+ 	      ipa_simd_modify_stmt_ops (&op, &walk_subtrees, &wi);
+ 	      if (op != arg)
+ 		{
+ 		  SET_PHI_ARG_DEF (phi, i, op);
+ 		  gcc_assert (TREE_CODE (op) == SSA_NAME);
+ 		  if (gimple_phi_arg_edge (phi, i)->flags & EDGE_ABNORMAL)
+ 		    SSA_NAME_OCCURS_IN_ABNORMAL_PHI (op) = 1;
+ 		}
+ 	    }
+ 	}
+ 
        gsi = gsi_start_bb (bb);
        while (!gsi_end_p (gsi))
  	{
*************** expand_simd_clones (struct cgraph_node *
*** 1661,1674 ****
  	     already.  */
  	  tree id = simd_clone_mangle (node, clone);
  	  if (id == NULL_TREE)
! 	    continue;
  
  	  /* Only when we are sure we want to create the clone actually
  	     clone the function (or definitions) or create another
  	     extern FUNCTION_DECL (for prototypes without definitions).  */
  	  struct cgraph_node *n = simd_clone_create (node);
  	  if (n == NULL)
! 	    continue;
  
  	  n->simdclone = clone;
  	  clone->origin = node;
--- 1709,1730 ----
  	     already.  */
  	  tree id = simd_clone_mangle (node, clone);
  	  if (id == NULL_TREE)
! 	    {
! 	      if (i == 0)
! 		clone->nargs += clone->inbranch;
! 	      continue;
! 	    }
  
  	  /* Only when we are sure we want to create the clone actually
  	     clone the function (or definitions) or create another
  	     extern FUNCTION_DECL (for prototypes without definitions).  */
  	  struct cgraph_node *n = simd_clone_create (node);
  	  if (n == NULL)
! 	    {
! 	      if (i == 0)
! 		clone->nargs += clone->inbranch;
! 	      continue;
! 	    }
  
  	  n->simdclone = clone;
  	  clone->origin = node;
diff -Nrcpad gcc-8.3.0/gcc/optabs.c gcc-8.4.0/gcc/optabs.c
*** gcc-8.3.0/gcc/optabs.c	Thu Feb 14 07:40:33 2019
--- gcc-8.4.0/gcc/optabs.c	Wed Mar  4 08:30:00 2020
*************** expand_vec_cond_expr (tree vec_cond_type
*** 5778,5783 ****
--- 5778,5802 ----
    icode = get_vcond_icode (mode, cmp_op_mode, unsignedp);
    if (icode == CODE_FOR_nothing)
      {
+       if (tcode == LT_EXPR
+ 	  && op0a == op0
+ 	  && TREE_CODE (op0) == VECTOR_CST)
+ 	{
+ 	  /* A VEC_COND_EXPR condition could be folded from EQ_EXPR/NE_EXPR
+ 	     into a constant when only get_vcond_eq_icode is supported.
+ 	     Verify < 0 and != 0 behave the same and change it to NE_EXPR.  */
+ 	  unsigned HOST_WIDE_INT nelts;
+ 	  if (!VECTOR_CST_NELTS (op0).is_constant (&nelts))
+ 	    {
+ 	      if (VECTOR_CST_STEPPED_P (op0))
+ 		return 0;
+ 	      nelts = vector_cst_encoded_nelts (op0);
+ 	    }
+ 	  for (unsigned int i = 0; i < nelts; ++i)
+ 	    if (tree_int_cst_sgn (vector_cst_elt (op0, i)) == 1)
+ 	      return 0;
+ 	  tcode = NE_EXPR;
+ 	}
        if (tcode == EQ_EXPR || tcode == NE_EXPR)
  	icode = get_vcond_eq_icode (mode, cmp_op_mode);
        if (icode == CODE_FOR_nothing)
diff -Nrcpad gcc-8.3.0/gcc/opts-common.c gcc-8.4.0/gcc/opts-common.c
*** gcc-8.3.0/gcc/opts-common.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/opts-common.c	Wed Mar  4 08:30:00 2020
*************** decode_cmdline_option (const char **argv
*** 463,469 ****
  
    extra_args = 0;
  
!   opt_index = find_opt (argv[0] + 1, lang_mask);
    i = 0;
    while (opt_index == OPT_SPECIAL_unknown
  	 && i < ARRAY_SIZE (option_map))
--- 463,470 ----
  
    extra_args = 0;
  
!   const char *opt_value = argv[0] + 1;
!   opt_index = find_opt (opt_value, lang_mask);
    i = 0;
    while (opt_index == OPT_SPECIAL_unknown
  	 && i < ARRAY_SIZE (option_map))
*************** decode_cmdline_option (const char **argv
*** 666,671 ****
--- 667,689 ----
    /* Check if this is a switch for a different front end.  */
    if (!option_ok_for_language (option, lang_mask))
      errors |= CL_ERR_WRONG_LANG;
+   else if (strcmp (option->opt_text, "-Werror=") == 0
+ 	   && strchr (opt_value, ',') == NULL)
+     {
+       /* Verify that -Werror argument is a valid warning
+ 	 for a language.  */
+       char *werror_arg = xstrdup (opt_value + 6);
+       werror_arg[0] = 'W';
+ 
+       size_t warning_index = find_opt (werror_arg, lang_mask);
+       if (warning_index != OPT_SPECIAL_unknown)
+ 	{
+ 	  const struct cl_option *warning_option
+ 	    = &cl_options[warning_index];
+ 	  if (!option_ok_for_language (warning_option, lang_mask))
+ 	    errors |= CL_ERR_WRONG_LANG;
+ 	}
+     }
  
    /* Convert the argument to lowercase if appropriate.  */
    if (arg && option->cl_tolower)
diff -Nrcpad gcc-8.3.0/gcc/opts-global.c gcc-8.4.0/gcc/opts-global.c
*** gcc-8.3.0/gcc/opts-global.c	Thu Jan 18 13:17:37 2018
--- gcc-8.4.0/gcc/opts-global.c	Wed Mar  4 08:30:00 2020
*************** complain_wrong_lang (const struct cl_dec
*** 103,112 ****
  	   text, bad_lang);
    else if (lang_mask == CL_DRIVER)
      gcc_unreachable ();
!   else
      /* Eventually this should become a hard error IMO.  */
      warning (0, "command line option %qs is valid for %s but not for %s",
  	     text, ok_langs, bad_lang);
  
    free (ok_langs);
    free (bad_lang);
--- 103,116 ----
  	   text, bad_lang);
    else if (lang_mask == CL_DRIVER)
      gcc_unreachable ();
!   else if (ok_langs[0] != '\0')
      /* Eventually this should become a hard error IMO.  */
      warning (0, "command line option %qs is valid for %s but not for %s",
  	     text, ok_langs, bad_lang);
+   else
+     /* Happens for -Werror=warning_name.  */
+     warning (0, "%<-Werror=%> argument %qs is not valid for %s",
+ 	     text, bad_lang);
  
    free (ok_langs);
    free (bad_lang);
diff -Nrcpad gcc-8.3.0/gcc/opts.c gcc-8.4.0/gcc/opts.c
*** gcc-8.3.0/gcc/opts.c	Thu Jan 31 10:00:26 2019
--- gcc-8.4.0/gcc/opts.c	Wed Mar  4 08:30:00 2020
*************** finish_options (struct gcc_options *opts
*** 922,927 ****
--- 922,935 ----
  		      "linker plugin");
  	  opts->x_flag_fat_lto_objects = 1;
  	}
+ 
+       /* -gsplit-dwarf isn't compatible with LTO, see PR88389.  */
+       if (opts->x_dwarf_split_debug_info)
+ 	{
+ 	  inform (loc, "%<-gsplit-dwarf%> is not supported with LTO,"
+ 		  " disabling");
+ 	  opts->x_dwarf_split_debug_info = 0;
+ 	}
      }
  
    /* We initialize opts->x_flag_split_stack to -1 so that targets can set a
diff -Nrcpad gcc-8.3.0/gcc/output.h gcc-8.4.0/gcc/output.h
*** gcc-8.3.0/gcc/output.h	Fri Feb  9 05:47:24 2018
--- gcc-8.4.0/gcc/output.h	Wed Mar  4 08:30:00 2020
*************** extern void assemble_label (FILE *, cons
*** 240,245 ****
--- 240,251 ----
     addition of an underscore).  */
  extern void assemble_name_raw (FILE *, const char *);
  
+ /* Return NAME that should actually be emitted, looking through
+    transparent aliases.  If NAME refers to an entity that is also
+    represented as a tree (like a function or variable), mark the entity
+    as referenced.  */
+ extern const char *assemble_name_resolve (const char *);
+ 
  /* Like assemble_name_raw, but should be used when NAME might refer to
     an entity that is also represented as a tree (like a function or
     variable).  If NAME does refer to such an entity, that entity will
diff -Nrcpad gcc-8.3.0/gcc/params.def gcc-8.4.0/gcc/params.def
*** gcc-8.3.0/gcc/params.def	Mon Feb 19 09:54:09 2018
--- gcc-8.4.0/gcc/params.def	Wed Mar  4 08:30:00 2020
*************** DEFPARAM(PARAM_SMS_MIN_SC,
*** 387,393 ****
  DEFPARAM(PARAM_SMS_DFA_HISTORY,
  	 "sms-dfa-history",
  	 "The number of cycles the swing modulo scheduler considers when checking conflicts using DFA.",
! 	 0, 0, 0)
  DEFPARAM(PARAM_SMS_LOOP_AVERAGE_COUNT_THRESHOLD,
  	 "sms-loop-average-count-threshold",
  	 "A threshold on the average loop count considered by the swing modulo scheduler.",
--- 387,393 ----
  DEFPARAM(PARAM_SMS_DFA_HISTORY,
  	 "sms-dfa-history",
  	 "The number of cycles the swing modulo scheduler considers when checking conflicts using DFA.",
! 	 0, 0, 16)
  DEFPARAM(PARAM_SMS_LOOP_AVERAGE_COUNT_THRESHOLD,
  	 "sms-loop-average-count-threshold",
  	 "A threshold on the average loop count considered by the swing modulo scheduler.",
*************** DEFPARAM(PARAM_AVOID_FMA_MAX_BITS,
*** 1331,1336 ****
--- 1331,1341 ----
  	 "Maximum number of bits for which we avoid creating FMAs.",
  	 0, 0, 512)
  
+ DEFPARAM(PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT,
+ 	 "logical-op-non-short-circuit",
+ 	 "True if a non-short-circuit operation is optimal.",
+ 	 -1, -1, 1)
+ 
  /*
  
  Local variables:
diff -Nrcpad gcc-8.3.0/gcc/passes.c gcc-8.4.0/gcc/passes.c
*** gcc-8.3.0/gcc/passes.c	Thu Feb  7 14:27:09 2019
--- gcc-8.4.0/gcc/passes.c	Wed Mar  4 08:30:00 2020
*************** execute_function_todo (function *fn, voi
*** 1944,1950 ****
    /* Always cleanup the CFG before trying to update SSA.  */
    if (flags & TODO_cleanup_cfg)
      {
!       cleanup_tree_cfg ();
  
        /* When cleanup_tree_cfg merges consecutive blocks, it may
  	 perform some simplistic propagation when removing single
--- 1944,1950 ----
    /* Always cleanup the CFG before trying to update SSA.  */
    if (flags & TODO_cleanup_cfg)
      {
!       cleanup_tree_cfg (flags & TODO_update_ssa_any);
  
        /* When cleanup_tree_cfg merges consecutive blocks, it may
  	 perform some simplistic propagation when removing single
diff -Nrcpad gcc-8.3.0/gcc/po/ChangeLog gcc-8.4.0/gcc/po/ChangeLog
*** gcc-8.3.0/gcc/po/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/po/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/gcc/postreload.c gcc-8.4.0/gcc/postreload.c
*** gcc-8.3.0/gcc/postreload.c	Fri Mar 16 21:01:16 2018
--- gcc-8.4.0/gcc/postreload.c	Wed Mar  4 08:30:01 2020
*************** reload_combine_recognize_pattern (rtx_in
*** 1076,1081 ****
--- 1076,1085 ----
        struct reg_use *use = reg_state[regno].reg_use + i;
        if (GET_MODE (*use->usep) != mode)
  	return false;
+       /* Don't try to adjust (use (REGX)).  */
+       if (GET_CODE (PATTERN (use->insn)) == USE
+ 	  && &XEXP (PATTERN (use->insn), 0) == use->usep)
+ 	return false;
      }
  
    /* Look for (set (REGX) (CONST_INT))
diff -Nrcpad gcc-8.3.0/gcc/predict.c gcc-8.4.0/gcc/predict.c
*** gcc-8.3.0/gcc/predict.c	Tue Mar 20 14:14:17 2018
--- gcc-8.4.0/gcc/predict.c	Wed Mar  4 08:30:01 2020
*************** compute_function_frequency (void)
*** 3740,3751 ****
    if (profile_status_for_fn (cfun) != PROFILE_READ)
      {
        int flags = flags_from_decl_or_type (current_function_decl);
!       if ((ENTRY_BLOCK_PTR_FOR_FN (cfun)->count.ipa_p ()
! 	   && ENTRY_BLOCK_PTR_FOR_FN (cfun)->count.ipa() == profile_count::zero ())
! 	  || lookup_attribute ("cold", DECL_ATTRIBUTES (current_function_decl))
! 	     != NULL)
  	{
!           node->frequency = NODE_FREQUENCY_UNLIKELY_EXECUTED;
  	  warn_function_cold (current_function_decl);
  	}
        else if (lookup_attribute ("hot", DECL_ATTRIBUTES (current_function_decl))
--- 3740,3753 ----
    if (profile_status_for_fn (cfun) != PROFILE_READ)
      {
        int flags = flags_from_decl_or_type (current_function_decl);
!       if (lookup_attribute ("cold", DECL_ATTRIBUTES (current_function_decl))
! 	  != NULL)
! 	node->frequency = NODE_FREQUENCY_UNLIKELY_EXECUTED;
!       else if (ENTRY_BLOCK_PTR_FOR_FN (cfun)->count.ipa_p ()
! 	       && (ENTRY_BLOCK_PTR_FOR_FN (cfun)->count.ipa ()
! 		   == profile_count::zero ()))
  	{
! 	  node->frequency = NODE_FREQUENCY_UNLIKELY_EXECUTED;
  	  warn_function_cold (current_function_decl);
  	}
        else if (lookup_attribute ("hot", DECL_ATTRIBUTES (current_function_decl))
diff -Nrcpad gcc-8.3.0/gcc/recog.c gcc-8.4.0/gcc/recog.c
*** gcc-8.3.0/gcc/recog.c	Fri Mar  9 18:50:56 2018
--- gcc-8.4.0/gcc/recog.c	Wed Mar  4 08:30:01 2020
*************** general_operand (rtx op, machine_mode mo
*** 1070,1075 ****
--- 1070,1080 ----
  int
  address_operand (rtx op, machine_mode mode)
  {
+   /* Wrong mode for an address expr.  */
+   if (GET_MODE (op) != VOIDmode
+       && ! SCALAR_INT_MODE_P (GET_MODE (op)))
+     return false;
+ 
    return memory_address_p (mode, op);
  }
  
*************** constrain_operands (int strict, alternat
*** 2695,2704 ****
  		/* p is used for address_operands.  When we are called by
  		   gen_reload, no one will have checked that the address is
  		   strictly valid, i.e., that all pseudos requiring hard regs
! 		   have gotten them.  */
! 		if (strict <= 0
! 		    || (strict_memory_address_p (recog_data.operand_mode[opno],
! 						 op)))
  		  win = 1;
  		break;
  
--- 2700,2712 ----
  		/* p is used for address_operands.  When we are called by
  		   gen_reload, no one will have checked that the address is
  		   strictly valid, i.e., that all pseudos requiring hard regs
! 		   have gotten them.  We also want to make sure we have a
! 		   valid mode.  */
! 		if ((GET_MODE (op) == VOIDmode
! 		     || SCALAR_INT_MODE_P (GET_MODE (op)))
! 		    && (strict <= 0
! 			|| (strict_memory_address_p
! 			     (recog_data.operand_mode[opno], op))))
  		  win = 1;
  		break;
  
diff -Nrcpad gcc-8.3.0/gcc/resource.c gcc-8.4.0/gcc/resource.c
*** gcc-8.3.0/gcc/resource.c	Fri Mar  2 23:47:56 2018
--- gcc-8.4.0/gcc/resource.c	Wed Mar  4 08:30:01 2020
*************** mark_target_live_regs (rtx_insn *insns,
*** 969,977 ****
--- 969,981 ----
      {
        regset regs_live = DF_LR_IN (BASIC_BLOCK_FOR_FN (cfun, b));
        rtx_insn *start_insn, *stop_insn;
+       df_ref def;
  
        /* Compute hard regs live at start of block.  */
        REG_SET_TO_HARD_REG_SET (current_live_regs, regs_live);
+       FOR_EACH_ARTIFICIAL_DEF (def, b)
+ 	if (DF_REF_FLAGS (def) & DF_REF_AT_TOP)
+ 	  SET_HARD_REG_BIT (current_live_regs, DF_REF_REGNO (def));
  
        /* Get starting and ending insn, handling the case where each might
  	 be a SEQUENCE.  */
diff -Nrcpad gcc-8.3.0/gcc/rtl.c gcc-8.4.0/gcc/rtl.c
*** gcc-8.3.0/gcc/rtl.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/rtl.c	Wed Mar  4 08:30:01 2020
*************** classify_insn (rtx x)
*** 731,736 ****
--- 731,738 ----
      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)
      {
        if (GET_CODE (SET_DEST (x)) == PC)
*************** classify_insn (rtx x)
*** 757,762 ****
--- 759,767 ----
  	  return CALL_INSN;
        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
    if (GET_CODE (x) == MATCH_OPERAND
diff -Nrcpad gcc-8.3.0/gcc/rtl.h gcc-8.4.0/gcc/rtl.h
*** gcc-8.3.0/gcc/rtl.h	Sun Jan 27 17:36:30 2019
--- gcc-8.4.0/gcc/rtl.h	Wed Mar  4 08:30:01 2020
*************** word_register_operation_p (const_rtx x)
*** 4355,4360 ****
--- 4355,4361 ----
  {
    switch (GET_CODE (x))
      {
+     case CONST_INT:
      case ROTATE:
      case ROTATERT:
      case SIGN_EXTRACT:
diff -Nrcpad gcc-8.3.0/gcc/rtlanal.c gcc-8.4.0/gcc/rtlanal.c
*** gcc-8.3.0/gcc/rtlanal.c	Tue Nov 20 09:03:03 2018
--- gcc-8.4.0/gcc/rtlanal.c	Wed Mar  4 08:30:01 2020
*************** get_initial_register_offset (int from, i
*** 358,367 ****
    if (to == from)
      return 0;
  
!   /* It is not safe to call INITIAL_ELIMINATION_OFFSET
!      before the reload pass.  We need to give at least
!      an estimation for the resulting frame size.  */
!   if (! reload_completed)
      {
        offset1 = crtl->outgoing_args_size + get_frame_size ();
  #if !STACK_GROWS_DOWNWARD
--- 358,367 ----
    if (to == from)
      return 0;
  
!   /* It is not safe to call INITIAL_ELIMINATION_OFFSET before the epilogue
!      is completed, but we need to give at least an estimate for the stack
!      pointer based on the frame size.  */
!   if (!epilogue_completed)
      {
        offset1 = crtl->outgoing_args_size + get_frame_size ();
  #if !STACK_GROWS_DOWNWARD
*************** nonzero_bits1 (const_rtx x, scalar_int_m
*** 4756,4762 ****
  	       || ((extend_op = load_extend_op (inner_mode)) == SIGN_EXTEND
  		   ? val_signbit_known_set_p (inner_mode, nonzero)
  		   : extend_op != ZERO_EXTEND)
! 	       || (!MEM_P (SUBREG_REG (x)) && !REG_P (SUBREG_REG (x))))
  	      && xmode_width > inner_width)
  	    nonzero
  	      |= (GET_MODE_MASK (GET_MODE (x)) & ~GET_MODE_MASK (inner_mode));
--- 4756,4762 ----
  	       || ((extend_op = load_extend_op (inner_mode)) == SIGN_EXTEND
  		   ? val_signbit_known_set_p (inner_mode, nonzero)
  		   : extend_op != ZERO_EXTEND)
! 	       || !MEM_P (SUBREG_REG (x)))
  	      && xmode_width > inner_width)
  	    nonzero
  	      |= (GET_MODE_MASK (GET_MODE (x)) & ~GET_MODE_MASK (inner_mode));
diff -Nrcpad gcc-8.3.0/gcc/simplify-rtx.c gcc-8.4.0/gcc/simplify-rtx.c
*** gcc-8.3.0/gcc/simplify-rtx.c	Fri Apr 13 19:39:11 2018
--- gcc-8.4.0/gcc/simplify-rtx.c	Wed Mar  4 08:30:01 2020
*************** simplify_binary_operation_1 (enum rtx_co
*** 3493,3501 ****
  	{
  	  rtx tmp = gen_int_shift_amount
  	    (inner_mode, INTVAL (XEXP (SUBREG_REG (op0), 1)) + INTVAL (op1));
! 	  tmp = simplify_gen_binary (code, inner_mode,
! 				     XEXP (SUBREG_REG (op0), 0),
! 				     tmp);
  	  return lowpart_subreg (int_mode, tmp, inner_mode);
  	}
  
--- 3493,3513 ----
  	{
  	  rtx tmp = gen_int_shift_amount
  	    (inner_mode, INTVAL (XEXP (SUBREG_REG (op0), 1)) + INTVAL (op1));
! 
! 	 /* Combine would usually zero out the value when combining two
! 	    local shifts and the range becomes larger or equal to the mode.
! 	    However since we fold away one of the shifts here combine won't
! 	    see it so we should immediately zero the result if it's out of
! 	    range.  */
! 	 if (code == LSHIFTRT
! 	     && INTVAL (tmp) >= GET_MODE_BITSIZE (inner_mode))
! 	  tmp = const0_rtx;
! 	 else
! 	   tmp = simplify_gen_binary (code,
! 				      inner_mode,
! 				      XEXP (SUBREG_REG (op0), 0),
! 				      tmp);
! 
  	  return lowpart_subreg (int_mode, tmp, inner_mode);
  	}
  
diff -Nrcpad gcc-8.3.0/gcc/symtab.c gcc-8.4.0/gcc/symtab.c
*** gcc-8.3.0/gcc/symtab.c	Mon Jun 11 18:56:56 2018
--- gcc-8.4.0/gcc/symtab.c	Wed Mar  4 08:30:01 2020
*************** symtab_node::set_section (symtab_node *n
*** 1546,1552 ****
  void
  symtab_node::set_section (const char *section)
  {
!   gcc_assert (!this->alias);
    call_for_symbol_and_aliases
      (symtab_node::set_section, const_cast<char *>(section), true);
  }
--- 1546,1552 ----
  void
  symtab_node::set_section (const char *section)
  {
!   gcc_assert (!this->alias || !this->analyzed);
    call_for_symbol_and_aliases
      (symtab_node::set_section, const_cast<char *>(section), true);
  }
*************** symtab_node::nonzero_address ()
*** 1948,1969 ****
       bind to NULL. This is on by default on embedded targets only.
  
       Otherwise all non-WEAK symbols must be defined and thus non-NULL or
!      linking fails.  Important case of WEAK we want to do well are comdats.
!      Those are handled by later check for definition.
  
       When parsing, beware the cases when WEAK attribute is added later.  */
!   if (!DECL_WEAK (decl)
        && flag_delete_null_pointer_checks)
      {
        refuse_visibility_changes = true;
        return true;
      }
  
!   /* If target is defined and either comdat or not extern, we know it will be
       output and thus it will bind to non-NULL.
       Play safe for flag_delete_null_pointer_checks where weak definition may
       be re-defined by NULL.  */
!   if (definition && (!DECL_EXTERNAL (decl) || DECL_COMDAT (decl))
        && (flag_delete_null_pointer_checks || !DECL_WEAK (decl)))
      {
        if (!DECL_WEAK (decl))
--- 1948,1969 ----
       bind to NULL. This is on by default on embedded targets only.
  
       Otherwise all non-WEAK symbols must be defined and thus non-NULL or
!      linking fails.  Important case of WEAK we want to do well are comdats,
!      which also must be defined somewhere.
  
       When parsing, beware the cases when WEAK attribute is added later.  */
!   if ((!DECL_WEAK (decl) || DECL_COMDAT (decl))
        && flag_delete_null_pointer_checks)
      {
        refuse_visibility_changes = true;
        return true;
      }
  
!   /* If target is defined and not extern, we know it will be
       output and thus it will bind to non-NULL.
       Play safe for flag_delete_null_pointer_checks where weak definition may
       be re-defined by NULL.  */
!   if (definition && !DECL_EXTERNAL (decl)
        && (flag_delete_null_pointer_checks || !DECL_WEAK (decl)))
      {
        if (!DECL_WEAK (decl))
diff -Nrcpad gcc-8.3.0/gcc/testsuite/ChangeLog gcc-8.4.0/gcc/testsuite/ChangeLog
*** gcc-8.3.0/gcc/testsuite/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gcc/testsuite/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,2648 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2020-02-29  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Revert
+ 	2020-02-20  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/93658
+ 	* gcc.target/powerpc/pr93658.c: New test.
+ 	* gcc.target/powerpc/vsx-vector-6-le.c: Update fragile insn count.
+ 
+ 2020-02-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/93820
+ 	* gcc.dg/pr93820.c: New test.
+ 
+ 2020-02-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/93905
+ 	* g++.dg/cpp0x/pr93905.C: New test.
+ 
+ 2020-02-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/90998 - ICE with copy elision in init by ctor and -Wconversion.
+ 	* g++.dg/cpp0x/overload-conv-4.C: New test.
+ 
+ 2020-02-25  Alexandre Oliva <aoliva@redhat.com>
+ 
+ 	PR c++/86747
+ 	* g++.dg/pr86747.C: New.
+ 
+ 2019-02-05  Alexandre Oliva <aoliva@redhat.com>
+ 
+ 	PR c++/87770
+ 	* g++.dg/pr87770.C: New.
+ 
+ 2020-02-25  Marek Polacek  <polacek@redhat.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/92745
+ 	* g++.dg/cpp0x/initlist118.C: New test.
+ 	* g++.dg/cpp0x/initlist118.C: Add -Wno-psabi -w to dg-options.
+ 
+ 2020-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/93908
+ 	* gcc.c-torture/execute/pr93908.c: New test.
+ 
+ 2019-02-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/lto24.adb: New test.
+ 	* gnat.dg/lto24_pkg1.ads: New helper.
+ 	* gnat.dg/lto24_pkg2.ad[sb]: Likewise.
+ 
+ 2020-02-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backport from mainline
+ 	2020-02-19  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/93767
+ 	* gcc.dg/vect/pr93767.c: New test.
+ 
+ 2020-02-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/93434
+ 	* gcc.c-torture/execute/pr93434.c: New test.
+ 
+ 2020-02-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/92768
+ 	* gcc.dg/pr92768.c: New test.
+ 
+ 2020-02-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/92420
+ 	* gcc.dg/vect/pr92420.c: New test.
+ 
+ 2020-02-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/90313
+ 	* g++.dg/torture/pr90313.cc: New test.
+ 
+ 2020-02-23  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backport from master
+ 	2020-02-20  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/93658
+ 	* gcc.target/powerpc/pr93658.c: New test.
+ 	* gcc.target/powerpc/vsx-vector-6-le.c: Update fragile insn count.
+ 
+ 2020-02-20  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from master
+ 	2020-02-13  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/93656
+ 	* gcc.target/i386/pr93656.c: New test.
+ 
+ 2020-02-19  Mark Eggleston <markeggleston@gcc.gnu.org>
+ 
+ 	* typebound_call_22.d03 : Remove xfail clause.
+ 
+ 2020-02-19  Mark Eggleston <markeggleston@gcc.gnu.org>
+ 
+ 	Backported from mainline
+ 	2020-02-18  Mark Eggleston  <markeggleston@gcc.gnu.org>
+ 
+ 	PR fortran/93714
+ 	* gfortran.dg/char_pointer_assign_6.f90: Look for no target
+ 	message instead of length mismatch.
+ 	* gfortran.dg/pr93714_1.f90
+ 	* gfortran.dg/pr93714_2.f90
+ 
+ 2020-02-18  Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	* g++.dg/other/i386-2.C: Add -mavx512vbmi2.
+ 	* g++.dg/other/i386-3.C: Ditto.
+ 
+ 2020-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2020-01-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93381
+ 	* gcc.dg/torture/pr93381.c: New testcase.
+ 
+ 2020-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2020-01-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/93439
+ 	* gfortran.dg/graphite/pr93439.f90: New testcase.
+ 
+ 2020-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2020-01-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/93054
+ 	* gcc.dg/pr93054.c: New testcase.
+ 
+ 2020-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2020-01-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/92763
+ 	* g++.dg/debug/pr92763.C: New testcase.
+ 
+ 2020-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-11-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/92704
+ 	* gcc.dg/torture/pr92704.c: New testcase.
+ 
+ 2020-02-14 Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/avx512vbmi2-vpshld-1.c: New test.
+ 	* gcc.target/i386/avx512vbmi2-vpshrd-1.c: Ditto.
+ 	* gcc.target/i386/sse-12.c: Add -mavx512vbmi2.
+ 	* gcc.target/i386/sse-13.c: Ditto.
+ 	* gcc.target/i386/sse-14.c: Add -mavx512vbmi2 and tests.
+ 	* gcc.target/i386/sse-22.c: Ditto.
+ 
+ 2020-02-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/93744
+ 	* gcc.c-torture/execute/pr93744-1.c: New test.
+ 	* gcc.c-torture/execute/pr93744-2.c: New test.
+ 	* gcc.c-torture/execute/pr93744-3.c: New test.
+ 
+ 2020-02-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/61414
+ 	* g++.dg/cpp0x/enum39.C: New test.
+ 
+ 2020-02-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2020-02-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/93576
+ 	* gcc.dg/pr93576.c: New test.
+ 
+ 	PR target/93696
+ 	* gcc.target/i386/pr93696-1.c: New test.
+ 	* gcc.target/i386/pr93696-2.c: New test.
+ 	* gcc.target/i386/avx512bitalg-vpopcntw-1.c (TEST): Fix argument order
+ 	of _mm*_mask_popcnt_*.
+ 	* gcc.target/i386/avx512vpopcntdq-vpopcntq-1.c (TEST): Likewise.
+ 	* gcc.target/i386/avx512vpopcntdq-vpopcntd-1.c (TEST): Likewise.
+ 	* gcc.target/i386/avx512bitalg-vpopcntb-1.c (TEST): Likewise.
+ 	* gcc.target/i386/avx512bitalg-vpopcntb.c (foo): Likewise.
+ 	* gcc.target/i386/avx512bitalg-vpopcntbvl.c (foo): Likewise.
+ 	* gcc.target/i386/avx512vpopcntdq-vpopcntd.c (foo): Likewise.
+ 	* gcc.target/i386/avx512bitalg-vpopcntwvl.c (foo): Likewise.
+ 	* gcc.target/i386/avx512bitalg-vpopcntw.c (foo): Likewise.
+ 	* gcc.target/i386/avx512vpopcntdq-vpopcntq.c (foo): Likewise.
+ 
+ 	PR target/93673
+ 	* gcc.target/i386/avx512f-pr93673.c: New test.
+ 	* gcc.target/i386/avx512dq-pr93673.c: New test.
+ 	* gcc.target/i386/avx512bw-pr93673.c: New test.
+ 
+ 	2020-02-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93670
+ 	* gcc.target/i386/avx512vl-pr93670.c: New test.
+ 
+ 	2020-02-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93637
+ 	* gcc.target/i386/avx-pr93637.c: New test.
+ 
+ 	2020-02-08  Uroš Bizjak  <ubizjak@gmail.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/65782
+ 	* gcc.target/i386/pr65782.c: New test.
+ 
+ 	2020-02-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/93555
+ 	* c-c++-common/gomp/pr93555-1.c: New test.
+ 	* c-c++-common/gomp/pr93555-2.c: New test.
+ 	* gfortran.dg/gomp/pr93555.f90: New test.
+ 
+ 	2020-01-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/93505
+ 	* gcc.c-torture/compile/pr93505.c: New test.
+ 
+ 	2020-01-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/93463
+ 	* gfortran.dg/goacc/pr93463.f90: New test.
+ 
+ 	2020-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/93402
+ 	* gcc.c-torture/execute/pr93402.c: New test.
+ 
+ 	2020-01-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/91298
+ 	* gcc.target/i386/pr91298-1.c: New test.
+ 	* gcc.target/i386/pr91298-2.c: New test.
+ 
+ 	* gfortran.dg/gomp/target-parallel1.f90: New test.
+ 	* gfortran.dg/goacc/pr93329.f90: Enable commented out target parallel
+ 	test.
+ 
+ 	PR fortran/93329
+ 	* gfortran.dg/goacc/pr93329.f90: New test.
+ 
+ 	2020-01-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/93333
+ 	* gcc.c-torture/compile/pr93333.c: New test.
+ 
+ 	PR target/93073
+ 	* gcc.target/powerpc/pr93073.c: New test.
+ 
+ 	2020-01-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/93228
+ 	* g++.dg/cpp1y/attr-deprecated-3.C: New test.
+ 
+ 	2020-01-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/93202
+ 	* gcc.target/riscv/pr93202.c: New test.
+ 
+ 	2020-01-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/93088
+ 	* gcc.target/i386/pr93088.c: New test.
+ 
+ 	2020-01-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/93087
+ 	* c-c++-common/cold-1.c: New test.
+ 
+ 	2019-12-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/92438
+ 	* g++.dg/ext/attrib61.C: New test.
+ 
+ 	2019-12-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/92992
+ 	* g++.dg/cpp0x/nullptr45.C: New test.
+ 
+ 	2019-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+  	PR fortran/92977
+ 	* gfortran.dg/gomp/pr92977.f90: New test.
+ 
+ 	2019-12-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/92930
+ 	* gcc.dg/tree-ssa/pr92930.c: New test.
+ 
+ 	2019-12-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/92904
+ 	* gcc.c-torture/execute/pr92904.c: New test.
+ 
+ 	2019-12-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/92723
+ 	* gcc.dg/vect/pr92723.c: New test.
+ 
+ 	2019-12-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/92781
+ 	* gfortran.dg/pr92781.f90: New test.
+ 
+ 	2019-12-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/92732
+ 	* g++.dg/cpp2a/bitfield3.C: Don't expect narrowing conversion
+ 	warnings.
+ 	* g++.dg/cpp2a/bitfield4.C: New test.
+ 
+ 	2019-11-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/60228
+ 	* g++.dg/gomp/openmp-simd-2.C: Don't expect bodies for
+ 	DECL_OMP_DECLARE_REDUCTION_P functions.
+ 
+ 	2019-11-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/91944
+ 	* gfortran.dg/spread_size_limit_2.f90: New test.
+ 
+ 	PR c++/92524
+ 	* g++.dg/cpp0x/pr92524.C: New test.
+ 
+ 	2019-11-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/92648
+ 	* g++.dg/cpp0x/gen-attrs-71.C: New test.
+ 
+ 	PR c++/61414
+ 	* g++.dg/cpp0x/enum23.C: Remove xfail.
+ 	* g++.dg/cpp0x/enum28.C: New test.
+ 
+ 	2019-11-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/92615
+ 	* gcc.target/i386/pr92615.c: New test.
+ 
+ 	2019-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/90842
+ 	* g++.dg/cpp1y/lambda-generic-90842.C: New test.
+ 
+ 2020-01-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	PR middle-end/93246
+ 	* g++.dg/torture/pr93246.C: New testcase.
+ 
+ 2020-02-11  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backport from mainline
+ 	2020-01-31  Tamar Christina  <tamar.christina@arm.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/91838
+ 	* g++.dg/opt/pr91838.C: New test.
+ 
+ 2020-01-23  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	Backport:
+ 	2019-04-16  Dominique d'Humieres  <dominiq@gcc.gnu.org>
+ 
+ 	* g++.dg/lto/pr89358_0.C: Replace dg-* with dg-lto-*.
+ 
+ 2020-01-22  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	Backport from mainline:
+ 	2020-01-22  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	PR c/93348
+ 	* gcc.c-torture/compile/pr93348-1.c: New test.
+ 
+ 2020-01-15  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	Backport from mainline:
+ 	2020-01-15  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	PR c/93072
+ 	* gcc.dg/inline-42.c, gcc.dg/inline-43.c: New tests.
+ 
+ 2020-01-15  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2020-01-05  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.dg/darwin-version-1.c: Adjust test to use different
+ 	options for Darwin4-9 and Darwin10+.
+ 
+ 2020-01-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-04-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/89358
+ 	* g++.dg/lto/pr89358_0.C: New testcase.
+ 	* g++.dg/lto/pr89358_1.C: New testcase.
+ 
+ 2020-01-14  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	Backport from mainline:
+ 	2020-01-13  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	PR c/93241
+ 	* gcc.dg/c11-static-assert-10.c, gcc.dg/c99-const-expr-15.c: New
+ 	tests.
+ 
+ 2020-01-13  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	Backport from mainline:
+ 	2019-12-09  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	PR middle-end/91226
+ 	* gcc.dg/dfp/bid-non-canonical-d128-1.c,
+ 	gcc.dg/dfp/bid-non-canonical-d128-2.c,
+ 	gcc.dg/dfp/bid-non-canonical-d128-3.c,
+ 	gcc.dg/dfp/bid-non-canonical-d128-4.c,
+ 	gcc.dg/dfp/bid-non-canonical-d32-1.c,
+ 	gcc.dg/dfp/bid-non-canonical-d32-2.c,
+ 	gcc.dg/dfp/bid-non-canonical-d64-1.c,
+ 	gcc.dg/dfp/bid-non-canonical-d64-2.c: New tests.
+ 
+ 2020-01-10  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-12-17  Martin Jambor  <mjambor@suse.cz>
+ 
+         PR ipa/92971
+         * gcc.dg/ipa/ipcp-agg-12.c: New test.
+ 
+ 2020-01-10  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from mainline
+ 	2020-01-09  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR fortran/84135
+ 	* gfortran.dg/coarray/codimension_3.f90: New.
+ 
+ 2019-12-30  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/92961
+ 	* gfortran.dg/arith_divide_2.f90: New test.
+ 
+ 2019-12-20  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	* gcc.dg/pr92951-1.c: Rename to ...
+ 	* gcc.dg/pr92591-1.c: ... this.
+ 	* gcc.dg/pr92951-2.c: Rename to ...
+ 	* gcc.dg/pr92591-2.c: ... this.
+ 
+ 2019-12-20  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	Backport from mainline
+ 	2019-12-13  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	PR rtl-optimization/92591
+ 	* gcc.dg/pr92951-1.c: New test.
+ 	* gcc.dg/pr92951-2.c: New test.
+ 
+ 2019-12-17  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-12-16  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR target/92950
+ 	* gcc.target/s390/vector/pr92950.c: New test.
+ 
+ 2019-11-29  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backport from mainline
+ 	PR fortran/92629
+ 	* gfortran.dg/pr92629.f90: New testcase.
+ 
+ 2019-11-29 Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backport from mainline
+ 	2019-11-29 Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR ipa/84963
+ 	* gfortran.dg/goacc/pr84963.f90: Use dg-additional-options not
+ 	dg-options as otherwise -fopenacc is not used.
+ 
+ 2019-11-26  Jerry DeLisle  <jvdelisle@gcc.ngu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/92100
+ 	gfortran.dg/streamio_18.f90: New test.
+ 
+ 2019-11-25  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 	Harald Anlauf <anlauf@gmx.de>
+ 
+ 	Backport from trunk
+ 	PR fortran/92569
+ 	* gfortran.dg/eof_6.f90: New test.
+ 
+ 2019-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/91355
+ 	* g++.dg/torture/pr91355.C: New test.
+ 
+ 	Backported from mainline
+ 	2019-11-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/90840
+ 	* gcc.c-torture/compile/pr90840.c: New test.
+ 
+ 	PR target/90867
+ 	* gcc.target/i386/pr90867.c: New test.
+ 
+ 	PR c/90898
+ 	* gcc.dg/pr90898.c: New test.
+ 
+ 	2019-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/91450
+ 	* gcc.c-torture/execute/pr91450-1.c: New test.
+ 	* gcc.c-torture/execute/pr91450-2.c: New test.
+ 
+ 	2019-11-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/92384
+ 	* g++.dg/torture/pr92384.C: New test.
+ 
+ 	2019-10-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR preprocessor/92296
+ 	* c-c++-common/cpp/pr92296-1.c: New test.
+ 	* c-c++-common/cpp/pr92296-2.c: New test.
+ 
+ 	2019-10-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/92201
+ 	* g++.dg/other/pr92201.C: New test.
+ 
+ 	2019-10-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/92056
+ 	* gcc.c-torture/compile/pr92056.c: New test.
+ 
+ 	2019-10-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/91974
+ 	* g++.dg/cpp1z/eval-order5.C: New test.
+ 
+ 	2019-09-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/91665
+ 	* gcc.dg/vect/pr91665.c: New test.
+ 
+ 	2019-09-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/91001
+ 	PR middle-end/91105
+ 	PR middle-end/91106
+ 	* gcc.c-torture/compile/pr91001.c: New test.
+ 
+ 	2019-09-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/91623
+ 	* gcc.target/i386/pr91623.c: New test.
+ 
+ 	2019-08-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/91401
+ 	* c-c++-common/gomp/pr91401-1.c: New test.
+ 	* c-c++-common/gomp/pr91401-2.c: New test.
+ 
+ 2019-11-20  Peter Bergner <bergner@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-11-13  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* gcc.target/powerpc/pr92090.c: Limit -mbig to powerpc64le-*-*.
+ 	* gcc.target/powerpc/pr92090-2.c: Likewise.
+ 
+ 	2019-11-07  Peter Bergner <bergner@linux.ibm.com>
+ 
+ 	PR other/92090
+ 	* gcc.target/powerpc/pr92090-2.c: New test.
+ 
+ 	2019-11-07  Peter Bergner <bergner@linux.ibm.com>
+ 
+ 	PR other/92090
+ 	* gcc.target/powerpc/pr92090.c: New test.
+ 
+ 2019-11-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.c-torture/compile/20191108-1.c: New test.
+ 	* gcc.target/sparc/overflow-1.c: Add -fno-pie to the options.
+ 	* gcc.target/sparc/overflow-2.c: Likewise.
+ 	* gcc.target/sparc/overflow-3.c: Likewise.
+ 	* gcc.target/sparc/overflow-4.c: Likewise.
+ 	* gcc.target/sparc/overflow-5.c: Likewise.
+ 
+ 2019-11-05  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-20  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* obj-c++.dg/stubify-1.mm: Adjust options and scan-asm checks.
+ 	* obj-c++.dg/stubify-2.mm: Likewise.
+ 	* objc.dg/stubify-1.m: Likewise.
+ 	* objc.dg/stubify-2.m: Likewise.
+ 
+ 2019-11-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/79274
+ 	* g++.dg/tls/pr77285-2.C: XFAIL test for Darwin.
+ 
+ 2019-11-02  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2019-06-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.dg/pr90760.c: Require alias support.
+ 
+ 2019-11-01  Delia Burduv  <Delia.Burduv@arm.com>
+ 
+ 	Backport from trunk
+ 	2019-02-20  Andre Vieira <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR target/86487
+ 	* gcc.target/arm/pr86487.c: New.
+ 
+ 2019-10-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-10-22  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.dg/Wnonnull.c: Provide prototypes for strlen and memcpy.
+ 	Use __SIZE_TYPE__ instead of size_t.
+ 
+ 	Backport from mainline.
+ 	2019-10-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.dg/Wnonnull.c: Add attributed function declarations for
+ 	memcpy and strlen for Darwin.
+ 
+ 2019-10-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-10-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/i386/indirect-thunk-1.c: Allow 'l' or 'L' in
+ 	indirection label prefix, for Darwin.
+ 	* gcc.target/i386/indirect-thunk-2.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-3.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-4.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-attr-1.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-attr-2.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-attr-3.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-attr-4.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-attr-5.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-attr-6.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-extern-1.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-extern-2.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-extern-3.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-extern-4.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-inline-1.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-inline-2.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-inline-3.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-inline-4.c: Likewise.
+ 	* gcc.target/i386/pr32219-2.c: Likewise.
+ 	* gcc.target/i386/pr32219-3.c: Likewise.
+ 	* gcc.target/i386/pr32219-4.c: Likewise.
+ 	* gcc.target/i386/pr32219-7.c: Likewise.
+ 	* gcc.target/i386/pr32219-8.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-14.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-15.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-9.c: Likewise.
+ 
+ 2019-10-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-08-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* obj-c++.dg/stubify-1.mm: Rename symbol stub option.
+ 	* obj-c++.dg/stubify-2.mm: Likewise.
+ 	* objc.dg/stubify-1.m: Likewise.
+ 	* objc.dg/stubify-2.m: Likewise.
+ 
+ 2019-10-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-15  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* lib/target-supports.exp 
+ 	(check_effective_target_powerpc_p8vector_ok): No support for Darwin.
+ 	(check_effective_target_powerpc_p9vector_ok): Likewise.
+ 	(check_effective_target_powerpc_float128_sw_ok): Likewise.
+ 	(check_effective_target_powerpc_float128_hw_ok): Likewise.
+ 	(check_effective_target_powerpc_vsx_ok): Likewise.
+ 	* gcc.target/powerpc/bfp/bfp.exp: Don't try to run this for Darwin.
+ 	* gcc.target/powerpc/dfp/dfp.exp: Likewise.
+ 
+ 2019-10-30  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+ 
+ 	Backport from mainline
+ 	2019-07-09  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+ 
+ 	* gcc.target/mips/cfgcleanup-jalr1.c: New test.
+ 	* gcc.target/mips/cfgcleanup-jalr2.c: New test.
+ 	* gcc.target/mips/cfgcleanup-jalr3.c: New test.
+ 
+ 2019-10-28  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.c-torture/compile/pr72802.c: Skip for Darwin.
+ 
+ 2019-10-28  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	PR target/70010
+ 	* gcc.target/powerpc/pr70010.c: Add -Wno-psabi and -mvsx.
+ 
+ 2019-10-28  Peter Bergner <bergner@linux.ibm.com>
+ 	    Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	PR target/70010
+ 	* gcc.target/powerpc/pr70010.c: New test.
+ 	* gcc.target/powerpc/pr70010-1.c: New test.
+ 	* gcc.target/powerpc/pr70010-3.c: New test.
+ 	* gcc.target/powerpc/pr70010-4.c: New test.
+ 
+ 2019-10-27  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	PR fortran/86248
+ 	* gfortran.dg/char_result_19.f90 : New test.
+ 	* gfortran.dg/char_result_mod_19.f90 : Module for the new test.
+ 
+ 2019-10-25  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-05-08  Mihail Ionescu  <mihail.ionescu@arm.com>
+ 	   Richard Earnshaw  <rearnsha@arm.com>
+ 	PR target/88167
+ 	* gcc.target/arm/pr88167-1.c: New test.
+ 	* gcc.target/arm/pr88167-2.c: New test.
+ 
+ 2019-10-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-10-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/91887
+ 	* g++.dg/debug/dwarf2/pr91887.C: New testcase.
+ 
+ 	2019-09-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/91812
+ 	* gcc.dg/torture/pr91812.c: New testcase.
+ 
+ 2019-10-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.c-torture/execute/20191023-1.c: New test.
+ 
+ 2019-10-18  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/69455
+ 	* gfortran.dg/pr69455_1.f90: New test.
+ 	* gfortran.dg/pr69455_2.f90: Ditto.
+ 
+ 2019-10-17  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-10-15  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR target/92093
+ 	* gcc.target/powerpc/pr91275.c: Fix type and endian issues.
+ 
+ 2019-10-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	Backport from trunk.
+ 	2019-09-26  Will Schmidt <will_schmidt@vnet.ibm.com>
+ 
+ 	* gcc.target/powerpc/pure-builtin-redundant-load.c:  New.
+ 
+ 2019-10-10  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/92022
+ 	* g++.dg/pr92022.C: New test.
+ 
+ 2019-10-07  Thomas Koenig <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/84487
+ 	* gfortran.dg/typebound_call_22.f03: xfail.
+ 
+ 2019-10-07  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-10-01  Bill Schmidt  <wschmdit@linux.ibm.com>
+ 
+ 	PR target/91275
+ 	* gcc.target/powerpc/pr91275.c: New.
+ 
+ 2019-10-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-09-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* gcc.target/aarch64/nosplit-di-const-volatile_1.c: New test.
+ 
+ 2019-10-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.dg/pr91854.c: New test.
+ 
+ 2019-09-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	PR fortran/91588
+ 	* gfortran.dg/associate_49.f90 : New test.
+ 
+ 2019-09-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-08-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* gcc.target/arm/acle/crc_hf_1.c: New test.
+ 
+ 2019-09-20  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-11  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR testsuite/81058
+ 	* gcc.target/i386/avx512bw-vpmovswb-1.c: Use regular data section
+ 	for variables on Darwin, rather than common.
+ 	* gcc.target/i386/avx512bw-vpmovuswb-1.c: Likewise.
+ 	* gcc.target/i386/avx512bw-vpmovwb-1.c: Likewise.
+ 
+ 2019-09-18  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/91550
+ 	* gfortran.dg/do_subscript_6.f90: New test.
+ 
+ 2019-09-15  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/91557
+ 	* gfortran.dg/warn_unused_dummy_argument_5.f90: New test.
+ 
+ 2019-09-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.target/sparc/20161111-1.c: XFAIL redundant zero-extension test.
+ 
+ 2019-09-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/87853
+ 	* gcc.target/i386/pr87853.c: New test.
+ 
+ 	PR target/91704
+ 	* gcc.target/i386/pr91704.c: New test.
+ 
+ 2019-09-05  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/91660
+ 	* gfortran.dg/pdt_4.f03: Fix invalid code.
+ 	* gfortran.dg/pr91660_1.f90: New test.
+ 	* gfortran.dg/pr91660_2.f90: Ditto.
+ 
+ 2019-09-04  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-08-13  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR target/81800
+ 	* gcc.target/aarch64/no-inline-lrint_3.c: New test.
+ 
+ 2019-09-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR testsuite/91619
+ 	* gcc.dg/vect/pr81740-2.c: Restrict to vect_hw_misalign.
+ 
+ 2019-09-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-15  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR objc/90709
+ 	* obj-c++.dg/proto-lossage-7.mm: Use proxy headers.
+ 	* obj-c++.dg/strings/const-cfstring-2.mm: Likewise.
+ 	* obj-c++.dg/strings/const-cfstring-5.mm: Likewise
+ 	* obj-c++.dg/strings/const-str-12.mm: Likewise.
+ 	* obj-c++.dg/syntax-error-1.mm: Likewise.
+ 	* obj-c++.dg/torture/strings/const-cfstring-1.mm: Likewise.
+ 	* obj-c++.dg/torture/strings/const-str-10.mm: Likewise.
+ 	* obj-c++.dg/torture/strings/const-str-11.mm: Likewise.
+ 	* obj-c++.dg/torture/strings/const-str-9.mm: Likewise.
+ 	* obj-c++.dg/cxx-ivars-3.mm: Skip on later Darwin, where the 10.4 API
+ 	in no longer supported, also on m64 where there's no meaning to it.
+ 	* obj-c++.dg/isa-field-1.mm: Suppress unwanted warning, add comment why.
+ 	* obj-c++.dg/objc-gc-3.mm: Skip for Darwin > 16, the API use is an error
+ 	there.
+ 	* obj-c++.dg/qual-types-1.mm: Prune a spurious l64 warning.
+ 	* obj-c++.dg/stubify-1.mm: Tidy up after better compiler warnings.
+ 	* obj-c++.dg/stubify-2.mm: Likewise.
+ 	* obj-c++.dg/try-catch-1.mm: Likewise.
+ 	* obj-c++.dg/try-catch-3.mm: Likewise.
+ 
+ 	Backport from mainline.
+ 	2019-06-15  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR objc/90709
+ 	* objc.dg/encode-7-next-64bit.m: Use proxy headers.
+ 	* objc.dg/image-info.m: Likewise.
+ 	* objc.dg/method-6.m: Likewise.
+ 	* objc.dg/no-extra-load.m: Likewise.
+ 	* objc.dg/objc-foreach-4.m: Likewise.
+ 	* objc.dg/objc-foreach-5.m: Likewise.
+ 	* objc.dg/proto-lossage-7.m: Likewise.
+ 	* objc.dg/strings/const-cfstring-2.m: Likewise.
+ 	* objc.dg/strings/const-cfstring-5.m: Likewise.
+ 	* objc.dg/strings/const-str-12b.m: Likewise.
+ 	* objc.dg/symtab-1.m: Likewise.
+ 	* objc.dg/torture/strings/const-cfstring-1.m: Likewise.
+ 	* objc.dg/torture/strings/const-str-10.m: Likewise.
+ 	* objc.dg/torture/strings/const-str-11.m: Likewise.
+ 	* objc.dg/torture/strings/const-str-9.m: Likewise.
+ 	* objc.dg/zero-link-1.m: Likewise.
+ 	* objc.dg/zero-link-2.m: Likewise.
+ 	* objc.dg/zero-link-3.m: Likewise.
+ 	* objc.dg/isa-field-1.m: Suppress unwanted warning, add comment why.
+ 	* objc.dg/headers.m: XFAIL for Darwin14-19.
+ 	* objc.dg/objc-gc-4.m: Skip for Darwin > 16, the API use is an error
+ 	there.
+ 
+ 	Backport from mainline.
+ 	2019-06-15  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR objc/90709
+ 	* objc-obj-c++-shared/CF-CFString.h: New.
+ 	* objc-obj-c++-shared/F-NSArray.h: New.
+ 	* objc-obj-c++-shared/F-NSAutoreleasePool.h: New.
+ 	* objc-obj-c++-shared/F-NSObject.h: New.
+ 	* objc-obj-c++-shared/F-NSString.h: New.
+ 	* objc-obj-c++-shared/F-NSValue.h: New.
+ 	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h: New.
+ 	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h: New.
+ 	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h: New.
+ 	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h: New.
+ 	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h: New.
+ 	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h: New.
+ 	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h: New.
+ 	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h: New.
+ 	* objc-obj-c++-shared/GNUStep/Foundation/NSArray.h: New.
+ 	* objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h: New.
+ 	* objc-obj-c++-shared/GNUStep/Foundation/NSDate.h: New.
+ 	* objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h: New.
+ 	* objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h: New.
+ 	* objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h: New.
+ 	* objc-obj-c++-shared/GNUStep/Foundation/NSObject.h: New.
+ 	* objc-obj-c++-shared/GNUStep/Foundation/NSRange.h: New.
+ 	* objc-obj-c++-shared/GNUStep/Foundation/NSString.h: New.
+ 	* objc-obj-c++-shared/GNUStep/Foundation/NSValue.h: New.
+ 	* objc-obj-c++-shared/GNUStep/Foundation/NSZone.h: New.
+ 	* objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h: New.
+ 	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h: New.
+ 	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h: New.
+ 	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h: New.
+ 	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h: New.
+ 	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h: New.
+ 	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h:
+ 	New.
+ 	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h: New.
+ 	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h: New.
+ 	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h: New.
+ 
+ 2019-09-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-07-27  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/powerpc/bmi2-bzhi64-1a.c: Add options to enable altivec
+ 	and vsx.
+ 
+ 2019-09-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-07-25  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR gcov-profile/91087
+ 	* g++.dg/gcov/pr16855.C: Xfail the count lines for the DTORs and the
+ 	"final" line for the failure summaries.  Adjust source layout so that
+ 	dejagnu xfail expressions work.
+ 
+ 2019-09-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-07-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/powerpc/stabs-attrib-vect-darwin.c: Require stabs
+ 	support.
+ 
+ 2019-09-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-24  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/powerpc/safe-indirect-jump-1.c: Skip for Darwin.
+ 	* gcc.target/powerpc/safe-indirect-jump-7.c: Likewise.
+ 
+ 2019-09-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-04-15  Dominique d'Humieres  <dominiq@gcc.gnu.org>
+ 
+ 	PR tree-optimization/90020
+ 	* gcc.dg/torture/pr90020.c: Add linker options for darwin.
+ 
+ 2019-09-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-10  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/x86_64/abi/avx512f/abi-avx512f.exp: Darwin is
+ 	now tested.
+ 	* gcc.target/x86_64/abi/avx512f/asm-support-darwin.s: New.
+ 
+ 2019-09-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.c-torture/execute/20190901-1.c: New test.
+ 
+ 2019-08-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-24  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/powerpc/spec-barr-1.c: Adjust scan assembler regex
+ 	to recognise Darwin's register names.
+ 
+ 2019-08-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-24  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.dg/cpp/isysroot-1.c: Use <example.h> as the test header.
+ 	* gcc.dg/cpp/usr/include/stdio.h: Rename...
+ 	* gcc.dg/cpp/usr/include/example.h: ... to this.
+ 
+ 2019-08-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-23  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/powerpc/builtins-2.c: Require VSX hardware support.
+ 
+ 2019-08-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-23  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/powerpc/pr80125.c (foo): Use an unsigned char
+ 	vector explicitly for the vec_perm.
+ 
+ 2019-08-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-23  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/powerpc/pr71785.c: For Darwin, make test non-PIC,
+ 	expect the out-of-line GPR restore, and test specifically for
+ 	absence of branches to local labels.
+ 
+ 2019-08-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-22  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/powerpc/pr64205.c: Require effective target dfp.
+ 	* gcc.target/powerpc/pr79909.c: Likewise.
+ 
+ 2019-08-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-22  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/powerpc/darwin-bool-1.c: Suppress the pedantic
+ 	warning about _Bool.
+ 
+ 2019-08-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/pr71694.C: Use non-PIC codegen for Darwin m32.
+ 
+ 2019-08-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.dg/darwin-minversion-1.c: Use compile rather than link/run.
+ 	* gcc.dg/darwin-minversion-2.c: Likewise.
+ 
+ 2019-08-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-11  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR testsuite/65364
+ 	* gcc.dg/uninit-19.c (fn1): Adjust target condition for Darwin.
+ 	(fn2): Likewise.
+ 
+ 2019-08-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-06  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/cpp0x/alignas4.C: Amend test to check for zerofill syntax
+ 	on Darwin.
+ 
+ 2019-08-31  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/91481
+ 	* gcc.target/powerpc/darn-3.c: Fix testcase.
+ 
+ 2019-08-30  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/90698
+ 	* gcc.target/i386/pr49866.c: XFAIL for Darwin.
+ 	* gcc.target/i386/pr63538.c: Likewise.
+ 	* gcc.target/i386/pr61599-1.c: Skip for Darwin.
+ 
+ 2019-08-30  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/cpp0x/pr84497.C: Require alias support.
+ 
+ 2019-08-30  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-30  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/i386/stack-prot-sym.c: Require native TLS support.
+ 
+ 2019-08-30  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-27  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/i386/pr22076.c: Adjust options to
+ 	match codegen expected by the scan-asms.
+ 
+ 2019-08-30  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-26  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/i386/pr39013-1.c: Adjust scan-asms for PIE to
+ 	account for PIC code on Darwin.
+ 	* gcc.target/i386/pr39013-2.c: Likewise.
+ 	* gcc.target/i386/pr64317.c: Likewise.
+ 
+ 2019-08-30  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-25  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/i386/pr59874-3.c: Use the spelling of popcnt
+ 	expected for Darwin.
+ 
+ 2019-08-30  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-25  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/i386/pr82659-3.c: Require alias support.
+ 
+ 2019-08-30  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-24  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/i386/pconfig-1.c: Scan for the string in the generated
+ 	code, not in comments or miscellaneous directives.
+ 	* gcc.target/i386/wbinvd-1.c: Likewise.
+ 	* gcc.target/i386/wbnoinvd-1.c: Likewise.
+ 	* gcc.target/i386/pr66819-3.c: Specifically, check that there is no
+ 	call to "bar".
+ 	* gcc.target/i386/pr66819-4.c: Likewise.
+ 	* gcc.target/i386/pr82662.c
+ 
+ 2019-08-30  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-24  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/i386/pr67985-2.c: Adjust label checks for
+ 	Darwin.
+ 	* gcc.target/i386/pr77881.c: Likewise.
+ 
+ 2019-08-30  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-24  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/i386/pr70738-7.c: Likewise.
+ 	* gcc.target/i386/pr24414.c: Likewise.
+ 
+ 2019-08-30  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-23  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR rtl-optimisation/64895
+ 	* gcc.target/i386/fuse-caller-save-rec.c: Remove XFAILs.
+ 	* gcc.target/i386/fuse-caller-save.c: Likewise.
+ 	* gcc.target/i386/fuse-caller-save-xmm.c: Adjust tests for
+ 	PIC cases, remove XFAILs.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-07-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/91108
+ 	* gcc.dg/tree-ssa/pr91091-1.c: New testcase.
+ 	* gcc.dg/tree-ssa/ssa-fre-78.c: Likewise.
+ 
+ 2019-08-30  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from trunk
+ 	2019-08-23  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/91481
+ 	* gcc.target/powerpc/darn-3.c: New testcase.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-12-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/88315
+ 	* gcc.dg/vect/slp-reduc-sad.c: Adjust to provide non-trivial
+ 	initial value.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-06-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/90900
+ 	* gcc.dg/gomp/pr90900.c: New testcase.
+ 
+ 	2019-04-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90278
+ 	* gcc.dg/torture/pr90278.c: New testcase.
+ 
+ 	2019-04-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/90194
+ 	* g++.dg/torture/pr90194.C: New testcase.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/91293
+ 	* gcc.dg/vect/pr91293-1.c: New testcase.
+ 	* gcc.dg/vect/pr91293-2.c: Likewise.
+ 	* gcc.dg/vect/pr91293-3.c: Likewise.
+ 
+ 	2019-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/91280
+ 	* g++.dg/torture/pr91280.C: New testcase.
+ 
+ 	2019-07-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/91200
+ 	* gcc.dg/torture/pr91200.c: New testcase.
+ 
+ 	2019-07-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/91162
+ 	* gcc.dg/autopar/pr91162.c: New testcase.
+ 
+ 	2019-07-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/91131
+ 	* gcc.target/i386/pr91131.c: New testcase.
+ 
+ 	2019-07-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/91126
+ 	* gcc.dg/torture/pr91126.c: New testcase.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-05-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90328
+ 	* gcc.dg/torture/pr90328.c: New testcase.
+ 
+ 	2019-02-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/87609
+ 	* gcc.dg/torture/restrict-7.c: New testcase.
+ 
+ 2019-08-30  Bin Cheng  <bin.linux@linux.alibaba.com>
+ 
+ 	Backport from mainline
+ 	2019-07-18  Bin Cheng  <bin.linux@linux.alibaba.com>
+ 
+ 	PR tree-optimization/91137
+ 	* gcc.c-torture/execute/pr91137.c: New test.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-04-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90006
+ 	* gcc.dg/vect/bb-slp-pr90006.c: New testcase.
+ 
+ 	2019-04-01  Bin Cheng  <bin.cheng@linux.alibaba.com>
+ 
+ 	PR tree-optimization/89725
+ 	* gcc.dg/tree-ssa/pr89725.c: New test.
+ 
+ 	2019-03-26  Bin Cheng  <bin.cheng@linux.alibaba.com>
+ 
+ 	PR tree-optimization/81740
+ 	* gcc.dg/vect/pr81740-1.c: New testcase.
+ 	* gcc.dg/vect/pr81740-2.c: Likewise.
+ 
+ 2019-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-04-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90020
+ 	* gcc.dg/torture/pr90020.c: New testcase.
+ 
+ 2019-08-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-22  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR testsuite/27221
+ 	* g++.dg/ext/alignof2.C: XFAIL for 32bit Darwin.
+ 
+ 2019-08-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR testsuite/67958
+ 	* gcc.target/i386/pr32219-1.c: Adjust scan-asms for Darwin, comment
+ 	the differences.
+ 	* gcc.target/i386/pr32219-2.c: Likewise.
+ 	* gcc.target/i386/pr32219-3.c: Likewise.
+ 	* gcc.target/i386/pr32219-4.c: Likewise.
+ 	* gcc.target/i386/pr32219-5.c: Likewise.
+ 	* gcc.target/i386/pr32219-6.c: Likewise.
+ 	* gcc.target/i386/pr32219-7.c: Likewise.
+ 	* gcc.target/i386/pr32219-8.c: Likewise.
+ 
+ 2019-08-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/91150
+ 	* gcc.target/i386/avx512bw-pr91150.c: New test.
+ 
+ 	2019-07-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/78884
+ 	* gcc.dg/gomp/pr78884.c: New test.
+ 
+ 	PR rtl-optimization/90756
+ 	* gcc.dg/pr90756.c: New test.
+ 
+ 	2019-06-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/90954
+ 	* c-c++-common/gomp/pr90954.c: New test.
+ 
+ 	2019-06-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/90950
+ 	* g++.dg/gomp/lastprivate-1.C: New test.
+ 
+ 	2019-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/90760
+ 	* gcc.dg/pr90760.c: New test.
+ 
+ 	2019-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/90733
+ 	* gcc.dg/pr90733.c: New test.
+ 
+ 	2019-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR pch/90326
+ 	* g++.dg/pch/pr90326.C: New test.
+ 	* g++.dg/pch/pr90326.Hs: New file.
+ 
+ 	2019-04-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/90139
+ 	* gcc.c-torture/compile/pr90139.c: New test.
+ 
+ 2019-08-28  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/63891
+ 	* gcc.dg/darwin-weakimport-3.c: Adjust options and explain
+ 	the reasons.
+ 
+ 2019-08-28  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-20  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR testsuite/58321
+ 	* gcc.target/i386/memcpy-strategy-3.c: Adjust count for Darwin and
+ 	add a comment as to the reason for the difference.
+ 	* gcc.target/i386/memset-strategy-1.c: Likewise.
+ 
+ 2019-08-28  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* objc.dg/instancetype-0.m: New.
+ 
+ 2019-08-25  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.dg/darwin-minversion-link.c: New test.
+ 
+ 2019-08-23  Mihailo Stojanovic  <mistojanovic@wavecomp.com>
+ 
+ 	* gcc.target/mips/get-fcsr-3.c: New test.
+ 
+ 2019-08-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.c-torture/execute/20190820-1.c: New test.
+ 
+ 2019-08-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline.
+ 	2019-08-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/91436
+ 	* g++.dg/lookup/missing-std-include-5.C: Limit test to C++14 and up.
+ 	* g++.dg/lookup/missing-std-include-6.C: Don't check make_unique in
+ 	test that runs for C++11.
+ 	* g++.dg/lookup/missing-std-include-8.C: Check make_unique here.
+ 
+ 2019-08-14  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-02  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/ext/instantiate2.C: Remove special-casing for Darwin.
+ 
+ 2013-08-13  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/90563
+ 	* gfortran.dg/do_subscript_5.f90: New test.
+ 
+ 2019-08-05  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	Backport from mainline
+ 	2019-08-05  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* gcc.target/riscv/promote-type-for-libcall.c: New.
+ 
+ 2019-08-02  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 	Paul Thomas <pault@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/90786
+ 	PR fortran/90813
+ 	* gfortran.dg/proc_ptr_51.f90: New test.
+ 
+ 2019-07-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-07-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR driver/91172
+ 	* gcc.dg/pr91172.c: New test.
+ 
+ 2019-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-07-18  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* c-c++-common/pr53633-2.c: New test.
+ 
+ 2019-07-16  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	Backport from mainline
+ 	PR target/89222
+ 	* gcc.target/arm/pr89222.c: Add new test.
+ 
+ 2019-07-16  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-02-04  Wilco Dijkstra  <wdijkstr@arm.com>
+ 	PR target/89190
+ 	* gcc.target/arm/pr89190.c: New test.
+ 
+ 2019-07-15  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-07-01  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* gcc.target/s390/vector/vec-shift-2.c: New test.
+ 
+ 2019-07-12  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR testsuite/78529
+ 	* gcc.c-torture/execute/builtins/builtins.exp: Add -fno-ipa-ra.
+ 
+ 2019-07-07  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/91077
+ 	* gfortran.dg/pointer_array_11.f90 : New test.
+ 
+ 2019-07-04  Chenghua Xu  <paul.hua.gm@gmail.com>
+ 
+ 	Backported from mainline.
+ 	* gcc.target/mips/mips-fmadd.c: Rename to ...
+ 	* gcc.target/mips/mips-fmadd-o32.c: ... Here; add abi=32.
+ 	* gcc.target/mips/mips-fmadd-n64.c: New.
+ 
+ 2019-07-04  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-07-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/90899
+ 	* gcc.target/i386/pr90899.c: New test.
+ 
+ 2019-06-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/specs/array5.ads: New test.
+ 	* gnat.dg/specs/array5_pkg1.ads: New helper.
+ 	* gnat.dg/specs/array5_pkg2.ads: Likewise.
+ 	* gnat.dg/specs/array5_pkg2-g.ads: Likewise.
+ 
+ 2019-06-21  Jeff Law  <law@redhat.com>
+ 
+ 	Backport fom mainline
+ 	2019-06-21  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/90949
+ 	* gcc.c-torture/execute/pr90949.c: New test.
+ 
+ 2019-06-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/90937
+ 	* gfortran.dg/external_procedure_4.f90: New test.
+ 
+ 2019-06-16  Jeff Law  <law@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-05-31  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+ 	* gcc.target/mips/msa-fmadd.c: New.
+ 
+ 2019-06-12  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 	Tomáš Trnka  <trnka@scm.com>
+ 
+ 	Backport from trunk
+ 	PR fortran/90744
+ 	* gfortran.dg/deferred_character_33.f90: New test.
+ 	* gfortran.dg/deferred_character_33a.f90: New test.
+ 
+ 2019-06-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/90810
+ 	* g++.dg/ext/vector37.C: New test.
+ 
+ 2019-06-10  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/90498
+ 	* gfortran.dg/associate_48.f90 : New test.
+ 
+ 2019-06-09  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/57284
+ 	* gfortran.dg/assign_10.f90: Bump up counts of "atmp".
+ 	* gfortran.dg/transpose_optimization_2.f90: Ditto
+ 
+ 2019-06-09  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/57284
+ 	* gfortran.dg/class_70.f03
+ 
+ 2019-06-07  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* lib/scanasm.exp (dg-function-on-line): Add pattern for hppa*-*-linux*.
+ 
+ 2019-06-07  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/82920
+ 	* gcc.target/i386/indirect-thunk-bnd-1.c: Adjust scan-asms for Darwin,
+ 	do not use -fno-pic on Darwin.
+ 	* gcc.target/i386/indirect-thunk-bnd-2.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-25.c: Skip for Darwin, which has a
+ 	different ABI for returning this category of complex value.
+ 
+ 2019-06-07  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-15  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/82920
+ 	* g++.dg/cet-notrack-1.C: Adjust scan assembler for Darwin.
+ 	* gcc.target/i386/cet-notrack-5a.c: Likewise.
+ 	* gcc.target/i386/cet-notrack-5b.c: Likewise.
+ 	* gcc.target/i386/cet-notrack-6b.c: Likewise.
+ 	* gcc.target/i386/cet-notrack-icf-1.c: Likewise.
+ 	* gcc.target/i386/cet-notrack-icf-2.c: Likewise.
+ 	* gcc.target/i386/cet-notrack-icf-3.c: Likewise.
+ 	* gcc.target/i386/cet-notrack-icf-4.c: Likewise.
+ 	* gcc.target/i386/cet-sjlj-3.c: Likewise.
+ 	* gcc.target/i386/cet-sjlj-5.c: Likewise.
+ 
+ 2019-06-07  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-14  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/82920
+ 	* gcc.target/i386/cet-sjlj-6b.c: Require effective target x32.
+ 	* gcc.target/i386/pr52146.c: Likewise.
+ 	* gcc.target/i386/pr52698.c: Likewise.
+ 	* gcc.target/i386/pr52857-1.c: Likewise.
+ 	* gcc.target/i386/pr52857-2.c: Likewise.
+ 	* gcc.target/i386/pr52876.c: Likewise.
+ 	* gcc.target/i386/pr53698.c: Likewise.
+ 	* gcc.target/i386/pr54157.c: Likewise.
+ 	* gcc.target/i386/pr55049-1.c: Likewise.
+ 	* gcc.target/i386/pr55093.c: Likewise.
+ 	* gcc.target/i386/pr55116-1.c: Likewise.
+ 	* gcc.target/i386/pr55116-2.c: Likewise.
+ 	* gcc.target/i386/pr55597.c: Likewise.
+ 	* gcc.target/i386/pr59929.c: Likewise.
+ 	* gcc.target/i386/pr66470.c: Likewise.
+ 
+ 2019-06-07  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-12  Iain Sandoe  <iain@sandoe.co.uk>
+ 	    Dominique d'Humieres  <dominiq@gcc.gnu.org>
+ 
+ 	PR target/82920
+ 	* gcc.target/i386/indirect-thunk-1.c: Adjust scan-asms for Darwin,
+ 	do not use -fno-pic on Darwin.
+ 	* gcc.target/i386/indirect-thunk-2.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-3.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-4.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-7.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-attr-1.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-attr-2.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-attr-3.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-attr-4.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-attr-5.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-attr-6.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-attr-7.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-attr-8.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-extern-1.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-extern-2.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-extern-3.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-extern-4.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-extern-7.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-inline-1.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-inline-2.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-inline-3.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-inline-4.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-inline-7.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-register-1.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-register-2.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-register-3.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-register-4.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-1.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-10.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-11.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-12.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-13.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-14.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-15.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-16.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-2.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-22.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-23.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-24.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-3.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-4.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-5.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-6.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-7.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-8.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-9.c: Likewise.
+ 
+ 2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/opt79.ad[sb]: New test.
+ 
+ 2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/specs/array4.ads: New test.
+ 
+ 2019-05-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/unchecked_convert13.adb: New test.
+ 
+ 2019-05-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-05-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/90570
+ 	* g++.dg/asan/pr90570.C: New test.
+ 
+ 2019-05-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/opt78.ad[sb]: New test.
+ 
+ 2019-05-23  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from mainline
+ 	2019-05-21  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/90547
+ 	* gcc.target/i386/pr90547.c: New test.
+ 
+ 2019-05-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* g++.dg/tls/pr85400.C: New test.
+ 
+ 2019-05-20  Jeff Law  <law@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-05-17  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+ 
+ 	* g++.dg/eh/o32-fp.C: New.
+ 	* gcc.target/mips/dwarfregtable-1.c: New.
+ 	* gcc.target/mips/dwarfregtable-2.c: New.
+ 	* gcc.target/mips/dwarfregtable-3.c: New.
+ 	* gcc.target/mips/dwarfregtable-4.c: New.
+ 	* gcc.target/mips/dwarfregtable.h: New.
+ 
+ 2019-05-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-05-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/90532 Ensure __is_constructible(T[]) is false
+ 	* g++.dg/ext/90532.C: New test.
+ 
+ 2019-05-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	Backport from mainline.
+ 	2019-05-07  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR target/89765
+ 	* gcc.target/powerpc/pr89765-mc.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-10c.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-10d.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-11c.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-11d.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-12c.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-12d.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-13c.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-13d.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-14c.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-14d.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-15c.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-15d.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-16c.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-16d.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-17c.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-17d.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-18c.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-18d.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-19c.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-19d.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-20c.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-20d.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-9c.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-9d.c: New test.
+ 
+ 2019-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	Backport from mainline.
+ 	2019-05-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR target/89424
+ 	* gcc.target/powerpc/pr89424-0.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-13a.c: Define macro PR89424 to
+ 	enable testing of newly patched capability.
+ 	* gcc.target/powerpc/vsx-builtin-13b.c: Likewise.
+ 	* gcc.target/powerpc/vsx-builtin-20a.c: Likewise.
+ 	* gcc.target/powerpc/vsx-builtin-20b.c: Likewise.
+ 
+ 2019-05-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR bootstrap/90359
+ 	Backport from mainline
+ 	2019-03-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/89655
+ 	PR bootstrap/89656
+ 	* gcc.c-torture/compile/pr89655.c: New test.
+ 
+ 2019-05-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-03-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/89698
+ 	* g++.dg/torture/pr89698.C: New testcase.
+ 
+ 	2019-03-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/89595
+ 	* gcc.dg/torture/pr89595.c: New testcase.
+ 
+ 	2019-03-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/89710
+ 	* gcc.dg/torture/pr89710.c: New testcase.
+ 
+ 	2019-04-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90071
+ 	* gcc.dg/torture/pr90071.c: New testcase.
+ 
+ 	2018-08-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	PR target/86984
+ 	* gcc.target/alpha/pr86984.c: New test.
+ 
+ 2019-04-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-04-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/90193
+ 	* gcc.target/i386/pr90193.c: New test.
+ 
+ 	PR target/90187
+ 	* g++.dg/opt/pr90187.C: New test.
+ 
+ 	PR tree-optimization/90208
+ 	* gcc.dg/tsan/pr90208-2.c: New test.
+ 
+ 	2019-04-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/90108
+ 	* c-c++-common/pr90108.c: New test.
+ 
+ 	2019-04-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/90082
+ 	* gcc.dg/pr90082.c: New test.
+ 
+ 	PR tree-optimization/90090
+ 	* g++.dg/opt/pr90090.C: New test.
+ 
+ 	2019-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/89933
+ 	* c-c++-common/pr89933.c: New test.
+ 
+ 	PR rtl-optimization/89965
+ 	* gcc.target/i386/pr89965.c: New test.
+ 
+ 	PR c/89946
+ 	* c-c++-common/pr89946.c: New test.
+ 
+ 	PR rtl-optimization/90026
+ 	* g++.dg/opt/pr90026.C: New test.
+ 
+ 	2019-04-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/90010
+ 	* gcc.dg/pr90010.c: New test.
+ 
+ 	2019-04-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/89998
+ 	* gcc.c-torture/compile/pr89998-1.c: New test.
+ 	* gcc.c-torture/compile/pr89998-2.c: New test.
+ 
+ 	2019-03-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/89869
+ 	* g++.dg/ubsan/vptr-14.C: New test.
+ 
+ 	PR c/89872
+ 	* gcc.dg/tree-ssa/pr89872.c: New test.
+ 
+ 	2019-03-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/89621
+ 	* gfortran.dg/gomp/pr89621.f90: New test.
+ 
+ 	2019-03-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/89796
+ 	* g++.dg/gomp/pr89796.C: New test.
+ 	* gcc.dg/gomp/pr89796.c: New test.
+ 
+ 	2019-03-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/60702
+ 	* g++.dg/tls/thread_local11.C: Remove scan-tree-dump-times directives
+ 	for _ZTH* calls.
+ 	* g++.dg/tls/thread_local11a.C: New test.
+ 
+ 	2019-03-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/60702
+ 	* g++.dg/tls/thread_local11.C: New test.
+ 	* g++.dg/tls/thread_local11.h: New test.
+ 	* g++.dg/tls/thread_local12a.C: New test.
+ 	* g++.dg/tls/thread_local12b.C: New test.
+ 	* g++.dg/tls/thread_local12c.C: New test.
+ 	* g++.dg/tls/thread_local12d.C: New test.
+ 	* g++.dg/tls/thread_local12e.C: New test.
+ 	* g++.dg/tls/thread_local12f.C: New test.
+ 	* g++.dg/tls/thread_local12g.C: New test.
+ 	* g++.dg/tls/thread_local12h.C: New test.
+ 	* g++.dg/tls/thread_local12i.C: New test.
+ 	* g++.dg/tls/thread_local12j.C: New test.
+ 	* g++.dg/tls/thread_local12k.C: New test.
+ 	* g++.dg/tls/thread_local12l.C: New test.
+ 
+ 	2019-03-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/89767
+ 	* g++.dg/cpp1y/lambda-init18.C: New test.
+ 	* g++.dg/cpp1y/lambda-init19.C: New test.
+ 	* g++.dg/cpp1y/pr89767.C: New test.
+ 
+ 	2019-03-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/89752
+ 	* g++.dg/ext/asm15.C: Check for particular diagnostic wording.
+ 	* g++.dg/ext/asm16.C: Likewise.
+ 	* g++.dg/ext/asm17.C: New test.
+ 
+ 	PR target/89726
+ 	* gcc.target/i386/fpprec-1.c (x): Add 6 new constants.
+ 	(expect_round, expect_rint, expect_floor, expect_ceil, expect_trunc):
+ 	Add expected results for them.
+ 
+ 	PR c/89734
+ 	* gcc.dg/pr89734.c: New test.
+ 
+ 	2019-03-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/89704
+ 	* gcc.dg/debug/pr89704.c: New test.
+ 
+ 	2019-03-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/89684
+ 	* gcc.target/i386/pr89684.c: New test.
+ 
+ 	PR rtl-optimization/89679
+ 	* gcc.dg/pr89679.c: New test.
+ 
+ 	PR tree-optimization/89703
+ 	* gcc.c-torture/compile/pr89703-1.c: New test.
+ 	* gcc.c-torture/compile/pr89703-2.c: New test.
+ 
+ 	PR c++/89512
+ 	* g++.dg/cpp1y/var-templ61.C: New test.
+ 
+ 	2019-03-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/88588
+ 	* c-c++-common/gomp/pr88588.c: New test.
+ 
+ 	2019-03-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/89663
+ 	* gcc.c-torture/compile/pr89663-1.c: New test.
+ 	* gcc.c-torture/compile/pr89663-2.c: New test.
+ 
+ 	2019-03-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/89651
+ 	* gfortran.dg/gomp/pr89651.f90: New test.
+ 
+ 	2019-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/88568
+ 	* g++.dg/other/pr88568.C: New test.
+ 
+ 	2019-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/82075
+ 	* g++.dg/cpp1z/decomp49.C: New test.
+ 
+ 	2019-03-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/87148
+ 	* g++.dg/ext/flexary34.C: New test.
+ 
+ 	2019-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/89590
+ 	* gcc.dg/pr89590.c: New test.
+ 
+ 	2019-02-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/89521
+ 	* gcc.dg/pr89521-1.c: New test.
+ 	* gcc.dg/pr89521-2.c: New test.
+ 
+ 	PR c/89520
+ 	* gcc.dg/pr89520-1.c: New test.
+ 	* gcc.dg/pr89520-2.c: New test.
+ 
+ 	2019-02-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/89403
+ 	* g++.dg/cpp0x/pr89403.C: New test.
+ 
+ 	PR c++/89405
+ 	* g++.dg/cpp1z/inline-var5.C: New test.
+ 
+ 	PR middle-end/89412
+ 	* gcc.c-torture/compile/pr89412.c: New test.
+ 
+ 	2019-02-20  Jakub Jelinek  <jakub@redhat.com>
+ 		    David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR middle-end/89091
+ 	* gcc.dg/torture/pr89091.c: New test.
+ 
+ 	2019-02-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/88074
+ 	PR middle-end/89415
+ 	* gcc.dg/pr88074-2.c: New test.
+ 
+ 	2019-02-19  Richard Biener  <rguenther@suse.de>
+ 
+         PR middle-end/88074
+ 	* gcc.dg/pr88074.c: New testcase.
+ 
+ 2019-04-30  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	PR target/90075
+ 	* gcc.target/aarch64/pr90075.c: New test.
+ 
+ 2019-04-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backport from mainline:
+ 	2019-01-25  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/89037
+ 	* gcc.dg/pr89037.c: New test.
+ 
+ 2019-04-26  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	Backport from mainline
+ 	2019-04-23  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	PR rtl-optimization/87979
+ 	* gcc.dg/pr87979.c: New test.
+ 
+ 	PR rtl-optimization/84032
+ 	* gcc.dg/pr84032.c: New test.
+ 
+ 2019-04-24  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	PR fortran/87127
+ 	* gfortran.dg/external_procedures_4.f90: New test.
+ 
+ 2019-04-17  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-03-10  Martin Jambor  <mjambor@suse.cz>
+ 
+         * g++.dg/tree-ssa/pr87008.C: New test.
+         * gcc.dg/guality/pr54970.c: Xfail tests querying a[0] everywhere.
+ 
+ 2019-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2019-03-15  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR target/87532
+ 	* gcc.target/powerpc/pr87532.c: New test.
+ 	* gcc.target/powerpc/vec-extract-v16qiu-v2.h: New test.
+ 	* gcc.target/powerpc/vec-extract-v16qiu-v2a.c: New test.
+ 	* gcc.target/powerpc/vec-extract-v16qiu-v2b.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-10a.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-10b.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-11a.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-11b.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-12a.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-12b.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-13a.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-13b.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-14a.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-14b.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-15a.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-15b.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-16a.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-16b.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-17a.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-17b.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-18a.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-18b.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-19a.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-19b.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-20a.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-20b.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-9a.c: New test.
+ 	* gcc.target/powerpc/vsx-builtin-9b.c: New test.
+ 
+ 	2019-03-19  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR target/89736
+ 	* gcc.target/powerpc/pr87532-mc.c: Modify dejagnu directives to
+ 	restrict this test to vsx targets.
+ 
+ 2019-04-15  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-04-15  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* g++.dg/ipa/pr89693.C: New test.
+ 
+ 2019-04-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-01-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/88587
+ 	* g++.target/i386/pr88587.C: New test.
+ 	* gcc.target/i386/mvc13.c: New test.
+ 
+ 2019-04-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/87352
+ 	* gfortran.dg/finalize_28.f90: Adjust count of __builtin_free.
+ 	* gfortran.dg/finalize_34.f90: New test.
+ 
+ 2019-04-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/89981
+ 	* gfortran.dg/entry_22.f90: New test.
+ 
+ 2019-04-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90018
+ 	* gcc.dg/vect/pr90018.c: New testcase.
+ 
+ 2019-04-10  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backport from trunk
+ 	PR fortran/89904
+ 	* gfortran.dg/pr85797.f90: Adjust testcase.
+ 
+ 2019-04-10  Matthew Malcomson  <matthew.malcomson@arm.com>
+ 
+ 	PR target/90024
+ 	* gcc.dg/torture/neon-immediate-timode.c: New test.
+ 
+ 019-04-07  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/89945
+ 	* gcc.target/i386/pr89945.c: New test.
+ 
+ 2019-04-04  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/89934
+ 	* gcc.dg/Wrestrict-19.c: New test.
+ 	* gcc.dg/Wrestrict-5.c: Add comment.  Remove unused code.
+ 
+ 2019-04-02  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/89902
+ 	PR target/89903
+ 	* gcc.target/i386/pr70799-4.c: Remove.
+ 	* gcc.target/i386/pr70799-5.c: Remove.
+ 	* gcc.target/i386/pr89902.c: New test.
+ 	* gcc.target/i386/pr89903.c: Ditto.
+ 
+ 2019-03-31  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/83515
+ 	PR fortran/85797
+ 	* gfortran.dg/pr85797.f90: New test.
+ 
+ 2019-03-30  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/89866
+ 	Backport from trunk
+ 	* gfortran.dg/pointer_intent_8.f90: New test.
+ 
+ 2019-03-30  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/78865
+ 	Backport from trunk
+ 	* gfortran.dg/altreturn_10.f90: New test.
+ 	* gfortran.dg/whole_file_3.f90: Change dg-warning to dg-error.
+ 
+ 2019-03-28  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/89848
+ 	* gcc.target/i386/pr89848.c: New test.
+ 
+ 2019-03-26  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/89827
+ 	* gcc.target/i386/pr89827.c: New test.
+ 
+ 2019-03-25  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-03-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/89775
+ 	* gcc.target/s390/pr89775-1.c: New test.
+ 	* gcc.target/s390/pr89775-2.c: New test.
+ 
+ 2019-03-24  Janus Weil  <janus@gcc.gnu.org>
+ 
+ 	PR fortran/71861
+ 	Backport from trunk
+ 	* gfortran.dg/interface_abstract_5.f90: New test case.
+ 
+ 2019-03-22  Backport from mainline
+ 
+ 	2019-03-22  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* gcc.target/powerpc/mmx-psubd-2.c: Test _m_psubd.
+ 
+ 2019-03-21  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR fortran/56408
+ 	* gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
+ 	(dg-compile-aux-modules): Fix diagnostic.
+ 	* gfortran.dg/coarray/caf.exp (dg-compile-aux-modules): Likewise.
+ 	* gfortran.dg/dg.exp (dg-compile-aux-modules): Likewise.
+ 
+ 	PR fortran/56408
+ 	* gfortran.dg/coarray/caf.exp (dg-compile-aux-modules): Workaround
+ 	missing nexted dg-test call support in dejaGNU 1.4.4.
+ 
+ 	PR fortran/29383
+ 	* gfortran.dg/ieee/ieee.exp (DEFAULT_FFLAGS): Set the same as in
+ 	other '*.exp' files.
+ 
+ 2019-03-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* c-c++-common/unroll-7.c: New test.
+ 
+ 2019-03-18  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/88273
+ 	* gcc.dg/Warray-bounds-38.c: New test.
+ 
+ 2019-03-18  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-03-18  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/89546
+ 	* gcc.dg/tree-ssa/pr89546.c: New test.
+ 
+ 2019-03-17  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/84394
+ 	Backport from trunk
+ 	* gfortran.dg/blockdata_11.f90: New test.
+ 
+ 2019-03-17  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2019-03-14  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/89523
+ 	* gcc.target/i386/pr89523-1a.c: New test.
+ 	* gcc.target/i386/pr89523-1b.c: Likewise.
+ 	* gcc.target/i386/pr89523-2.c: Likewise.
+ 	* gcc.target/i386/pr89523-3.c: Likewise.
+ 	* gcc.target/i386/pr89523-4.c: Likewise.
+ 	* gcc.target/i386/pr89523-5.c: Likewise.
+ 	* gcc.target/i386/pr89523-6.c: Likewise.
+ 	* gcc.target/i386/pr89523-7.c: Likewise.
+ 	* gcc.target/i386/pr89523-8.c: Likewise.
+ 	* gcc.target/i386/pr89523-9.c: Likewise.
+ 
+ 2019-03-16  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/66089
+ 	Backport from trunk
+ 	* gfortran.dg/dependency_53.f90: New test.
+ 	* gfortran.dg/assumed_type_2.f90: Adapted tree dumps.
+ 	* gfortran.dg/no_arg_check_2.f90: Likewise.
+ 
+ 2019-03-16 Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/66695
+ 	PR fortran/77746
+ 	PR fortran/79485
+ 	Backport from trunk
+ 	* gfortran.dg/binding_label_tests_30.f90: New test.
+ 	* gfortran.dg/binding_label_tests_31.f90: New test.
+ 	* gfortran.dg/binding_label_tests_32.f90: New test.
+ 	* gfortran.dg/binding_label_tests_33.f90: New test.
+ 
+ 2019-03-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-03-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR testsuite/89551
+ 	* gcc.dg/uninit-pred-8_b.c: Force logical-op-non-short-circuit
+ 	the way that makes the testcase PASS.
+ 
+ 2019-03-14  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-03-07  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR lto/87525
+ 	* gcc.dg/ipa/ipcp-5.c: New test.
+ 
+ 2019-03-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/89572
+ 	* gcc.dg/torture/pr89572.c: New testcase.
+ 
+ 2019-03-13  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/87673
+ 	Backport from trunk
+ 	* gfortran.dg/charlen_17.f90: New test.
+ 
+ 2019-03-13  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/85860
+ 	* gcc.target/i386/pr85860.c: New.
+ 
+ 2019-03-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-03-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/89677
+ 	* gcc.dg/torture/pr89677.c: New testcase.
+ 
+ 	2019-03-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/89497
+ 	* gcc.dg/tree-ssa/reassoc-43.c: Avoid false match in regex.
+ 	* g++.dg/tree-prof/devirt.C: Scan tracer dump for foldings
+ 	that happen now earlier.
+ 
+ 	2019-02-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/89296
+ 	* gcc.dg/uninit-pr89296.c: New testcase.
+ 
+ 2019-03-13  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-03-11  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* gcc.target/s390/zvector/vec-addc-u128.c: New test.
+ 
+ 2019-03-13  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2019-02-07  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* gcc.target/s390/zvector/xl-xst-align-1.c: New test.
+ 	* gcc.target/s390/zvector/xl-xst-align-2.c: New test.
+ 
+ 2019-03-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/89664
+ 	* gfortran.dg/pr89664.f90: New testcase.
+ 
+ 2019-03-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	Backport from mainline
+ 	2019-03-08  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* gcc.target/arm/f16_f64_conv_no_dp.c: New test.
+ 
+ 	Backport from mainline
+ 	2019-03-11  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* gcc.target/arm/f16_f64_conv_no_dp.c: Add arm_fp16_ok effective
+ 	target.
+ 
+ 2019-03-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* c-c++-common/unroll-6.c: New test.
+ 
+ 2019-03-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-03-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* gcc.target/i386/indirect-thunk-extern-7.c: Add -fjump-tables to
+ 	dg-options.
+ 
+ 2019-03-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-03-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/86952
+ 	* gcc.target/i386/indirect-thunk-7.c: Use jump tables to match
+ 	scanned pattern.
+ 	* gcc.target/i386/indirect-thunk-inline-7.c: Likewise.
+ 
+ 2019-03-10  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/71544
+ 	Backport from trunk
+ 	* gfortran.dg/c_ptr_tests_19.f90: New test.
+ 
+ 2019-03-10  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/87734
+ 	Backport from trunk
+ 	* gfortran.dg/public_private_module_10.f90: New test.
+ 
+ 2019-03-08  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-03-07  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* g++.dg/ipa/pr88235.C: New test.
+ 
+ 2019-03-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/89585
+ 	* g++.dg/asm-qual-3.C: Adjust expected diagnostics.
+ 
+ 2019-03-06  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backport from trunk
+ 	PR fortran/71203
+ 	* gfortran.dg/substr_8.f90: New test.
+ 
+ 2019-03-06  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/72714
+ 	Backport from trunk
+ 	* gfortran.dg/coarray_allocate_11.f90: New test.
+ 
+ 2019-03-06  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backport from trunk.
+ 	2019-02-25  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/88530
+ 	* common/config/aarch64/aarch64-common.c
+ 	(struct aarch64_option_extension): Add is_synthetic.
+ 	(all_extensions): Use it.
+ 	(TARGET_OPTION_INIT_STRUCT): Define hook.
+ 	(struct gcc_targetm_common): Moved to end.
+ 	(all_extensions_by_on): New.
+ 	(opt_ext_cmp, typedef opt_ext): New.
+ 	(aarch64_option_init_struct): New.
+ 	(aarch64_contains_opt): New.
+ 	(aarch64_get_extension_string_for_isa_flags): Output smallest set.
+ 	* config/aarch64/aarch64-option-extensions.def
+ 	(AARCH64_OPT_EXTENSION): Explicitly include AES and SHA2 in crypto.
+ 	(fp, simd, crc, lse, fp16, rcpc, rdma, dotprod, aes, sha2, sha3,
+ 	sm4, fp16fml, sve):
+ 	Set is_synthetic to false.
+ 	(crypto): Set is_synthetic to true.
+ 	* config/aarch64/driver-aarch64.c (AARCH64_OPT_EXTENSION): Add
+ 	SYNTHETIC.
+ 
+ 2019-03-06  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backport from trunk.
+ 	2019-02-28  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/88530
+ 	* gcc.target/aarch64/options_set_10.c: New test.
+ 
+ 2019-03-06  Xiong Hu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	Backport of r268834 from mainline to gcc-8-branch.
+ 	2019-01-23  Xiong Hu Luo  <luoxhu@linux.vnet.ibm.com>
+ 
+ 	* gcc.target/powerpc/crypto-builtin-1.c
+ 	(crypto1_be, crypto2_be, crypto3_be, crypto4_be, crypto5_be):
+ 	New testcases.
+ 
+ 2019-03-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2019-02-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/89505
+ 	* gcc.dg/torture/pr89505.c: New testcase.
+ 
+ 2019-03-03  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backport from trunk
+ 	PR fortran/89077
+ 	* gfortran.dg/transfer_simplify_12.f90: New test.
+ 	* gfortran.dg/substr_simplify.f90: New test.
+ 
+ 2019-03-03  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backport from trunk
+ 	PR fortran/77583
+ 	* gfortran.dg/pr77583.f90: New test.
+ 
+ 2019-03-03  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/89174
+ 	Backport from trunk
+ 	* gfortran.dg/allocate_with_mold_3.f90: New test.
+ 
+ 2019-03-03  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/87689
+ 	Backport from trunk
+ 	* gfortran.dg/lto/20091028-1_0.f90: Add -Wno-lto-type-mismatch to
+ 	options.
+ 	* gfortran.dg/lto/20091028-2_0.f90: Likewise.
+ 	* gfortran.dg/lto/pr87689_0.f: New file.
+ 	* gfortran.dg/lto/pr87689_1.f: New file.
+ 	* gfortran.dg/altreturn_9_0.f90: New file.
+ 	* gfortran.dg/altreturn_9_1.f90: New file.
+ 
+ 2019-03-02  Jerry DeLisle <jvdelisle@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/84387
+ 	* gfortran.dg/dtio_34.f90: New test.
+ 
+ 2019-03-02  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backport from trunk
+ 	PR fortran/89516
+ 	* gfortran.dg/pr89492.f90: Adjust testcase.
+ 	* gfortran.dg/transfer_check_5.f90: New test.
+ 
+ 	PR fortran/89492
+ 	* gfortran.dg/pr89492.f90: New test.
+ 
+ 	PR fortran/89266
+ 	PR fortran/88326
+ 	* gfortran.dg/pr89266.f90: New test.
+ 	* gfortran.dg/pr88326.f90: New test.
+ 
+ 2019-02-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.c-torture/execute/20190228-1.c: New test.
+ 
+ 2019-02-28  Li Jia He  <helijia@linux.ibm.com>
+ 
+ 	Backport from trunk
+ 	2019-02-20  Li Jia He  <helijia@linux.ibm.com>
+ 
+ 	PR target/88100
+ 	* gcc/testsuite/gcc.target/powerpc/pr88100.c: New testcase.
+ 
+ 2019-02-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/opt77.adb: New test.
+ 	* gnat.dg/opt77_pkg.ad[sb]: New helper.
+ 
+ 2019-02-23  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/86119
+ 	Backport from trunk
+ 	* gfortran.dg/warn_conversion_11.f90: New test.
+ 
+ 2019-02-23  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/88117
+ 	* gfortran.dg/deferred_character_32.f90: New test
+ 
+ 2019-02-12  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/71066
+ 	Backport from trunk
+ 	* gfortran.dg/coarray_data_1.f90: New test.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/cold-1.c gcc-8.4.0/gcc/testsuite/c-c++-common/cold-1.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/cold-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/cold-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,22 ----
+ /* PR ipa/93087 */
+ /* { dg-do compile { target nonpic } } */
+ /* { dg-options "-O1 -Wsuggest-attribute=cold" } */
+ 
+ extern void *getdata (void);
+ extern int set_error (char const *message) __attribute__((cold));
+ 
+ __attribute__((cold)) int
+ set_nomem (void)	/* { dg-bogus "function might be candidate for attribute 'cold'" } */
+ {
+   return set_error ("Allocation failed");
+ }
+ 
+ void *
+ getdata_or_set_error (void)
+ {
+   void *result;
+   result = getdata ();
+   if (!result)
+     set_nomem ();
+   return result;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/cpp/pr92296-1.c gcc-8.4.0/gcc/testsuite/c-c++-common/cpp/pr92296-1.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/cpp/pr92296-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/cpp/pr92296-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,32 ----
+ /* PR preprocessor/92296 */
+ /* { dg-do preprocess } */
+ 
+ #pragma push_macro("__TIMESTAMP__")
+ #pragma pop_macro("__TIMESTAMP__")
+ 
+ #pragma push_macro("__TIME__")
+ #pragma pop_macro("__TIME__")
+ 
+ #pragma push_macro("__DATE__")
+ #pragma pop_macro("__DATE__")
+ 
+ #pragma push_macro("__FILE__")
+ #pragma pop_macro("__FILE__")
+ 
+ #pragma push_macro("__BASE_FILE__")
+ #pragma pop_macro("__BASE_FILE__")
+ 
+ #pragma push_macro("__LINE__")
+ #pragma pop_macro("__LINE__")
+ 
+ #pragma push_macro("__INCLUDE_LEVEL__")
+ #pragma pop_macro("__INCLUDE_LEVEL__")
+ 
+ #pragma push_macro("__COUNTER__")
+ #pragma pop_macro("__COUNTER__")
+ 
+ #pragma push_macro("__has_attribute")
+ #pragma pop_macro("__has_attribute")
+ 
+ #pragma push_macro("__has_cpp_attribute")
+ #pragma pop_macro("__has_cpp_attribute")
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/cpp/pr92296-2.c gcc-8.4.0/gcc/testsuite/c-c++-common/cpp/pr92296-2.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/cpp/pr92296-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/cpp/pr92296-2.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,73 ----
+ /* PR preprocessor/92296 */
+ /* { dg-do preprocess } */
+ /* { dg-options "-Wno-builtin-macro-redefined" } */
+ 
+ #pragma push_macro("__TIMESTAMP__")
+ #undef __TIMESTAMP__
+ #define __TIMESTAMP__ "Thu Oct 31 12:00:00 2019"
+ timestamp1 = __TIMESTAMP__
+ #pragma pop_macro("__TIMESTAMP__")
+ timestamp2 = __TIMESTAMP__
+ 
+ #pragma push_macro("__TIME__")
+ #undef __TIME__
+ #define __TIME__ "12:00:00"
+ time1 = __TIME__
+ #pragma pop_macro("__TIME__")
+ time2 = __TIME__
+ 
+ #pragma push_macro("__DATE__")
+ #undef __DATE__
+ #define __DATE__ "Oct 31 2019"
+ date1 = __DATE__
+ #pragma pop_macro("__DATE__")
+ date2 = __DATE__
+ 
+ #pragma push_macro("__FILE__")
+ #undef __FILE__
+ #define __FILE__ "pr92296-3.c"
+ file1 = __FILE__	/* { dg-final { scan-file pr92296-2.i "file1 = \"pr92296-3.c\"" } } */
+ #pragma pop_macro("__FILE__")
+ file2 = __FILE__	/* { dg-final { scan-file-not pr92296-2.i "file2 = \"pr92296-3.c\"" } } */
+ 
+ #pragma push_macro("__BASE_FILE__")
+ #undef __BASE_FILE__
+ #define __BASE_FILE__ "pr92296-4.c"
+ filebase1 = __BASE_FILE__	/* { dg-final { scan-file pr92296-2.i "filebase1 = \"pr92296-4.c\"" } } */
+ #pragma pop_macro("__BASE_FILE__")
+ filebase2 = __BASE_FILE__	/* { dg-final { scan-file-not pr92296-2.i "filebase2 = \"pr92296-4.c\"" } } */
+ 
+ #pragma push_macro("__LINE__")
+ #undef __LINE__		/* { dg-warning "undefining" } */
+ #define __LINE__ 142
+ line1 = __LINE__	/* { dg-final { scan-file pr92296-2.i "line1 = 142" } } */
+ #pragma pop_macro("__LINE__")
+ line2 = __LINE__	/* { dg-final { scan-file pr92296-2.i "line2 = 45" } } */
+ 
+ #pragma push_macro("__INCLUDE_LEVEL__")
+ #undef __INCLUDE_LEVEL__	/* { dg-warning "undefining" } */
+ #define __INCLUDE_LEVEL__ 42
+ includelevel1 = __INCLUDE_LEVEL__	/* { dg-final { scan-file pr92296-2.i "includelevel1 = 42" } } */
+ #pragma pop_macro("__INCLUDE_LEVEL__")
+ includelevel2 = __INCLUDE_LEVEL__	/* { dg-final { scan-file pr92296-2.i "includelevel2 = 0" } } */
+ 
+ #pragma push_macro("__COUNTER__")
+ #undef __COUNTER__	/* { dg-warning "undefining" } */
+ #define __COUNTER__ 172
+ counter1 = __COUNTER__	/* { dg-final { scan-file pr92296-2.i "counter1 = 172" } } */
+ #pragma pop_macro("__COUNTER__")
+ counter2 = __COUNTER__	/* { dg-final { scan-file-not pr92296-2.i "counter2 = 172" } } */
+ 
+ #pragma push_macro("__has_attribute")
+ #undef __has_attribute	/* { dg-warning "undefining" } */
+ #define __has_attribute(x) 0
+ hasattr1 = __has_attribute(noreturn)	/* { dg-final { scan-file pr92296-2.i "hasattr1 = 0" } } */
+ #pragma pop_macro("__has_attribute")
+ hasattr2 = __has_attribute(noreturn)	/* { dg-final { scan-file-not pr92296-2.i "hasattr2 = 0" } } */
+ 
+ #pragma push_macro("__has_cpp_attribute")
+ #undef __has_cpp_attribute	/* { dg-warning "undefining" } */
+ #define __has_cpp_attribute(x) 0
+ hasattrcpp1 = __has_cpp_attribute(noreturn)	/* { dg-final { scan-file pr92296-2.i "hasattrcpp1 = 0" } } */
+ #pragma pop_macro("__has_cpp_attribute")
+ hasattrcpp2 = __has_cpp_attribute(noreturn)	/* { dg-final { scan-file-not pr92296-2.i "hasattrcpp2 = 0" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/gomp/pr88588.c gcc-8.4.0/gcc/testsuite/c-c++-common/gomp/pr88588.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/gomp/pr88588.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/gomp/pr88588.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,18 ----
+ /* PR middle-end/88588 */
+ /* { dg-do compile } */
+ /* { dg-options "-fopenmp -O1" } */
+ 
+ int *v;
+ 
+ #pragma omp declare simd
+ void
+ foo (int x)
+ {
+   int *a = &x;
+ 
+   for (;;)
+     {
+       *v = *a;
+       a = v;
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/gomp/pr90954.c gcc-8.4.0/gcc/testsuite/c-c++-common/gomp/pr90954.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/gomp/pr90954.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/gomp/pr90954.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,27 ----
+ /* PR sanitizer/90954 */
+ /* { dg-do compile } */
+ /* { dg-options "-fopenmp -fsanitize=undefined" } */
+ 
+ float v;
+ int i;
+ 
+ void
+ foo (float x, float y)
+ {
+   #pragma omp atomic
+   v += x / y;
+ }
+ 
+ void
+ bar (int x, int y)
+ {
+   #pragma omp atomic
+   i += x / y;
+ }
+ 
+ void
+ baz (int x, int y)
+ {
+   #pragma omp atomic
+   i *= (x << y);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/gomp/pr91401-1.c gcc-8.4.0/gcc/testsuite/c-c++-common/gomp/pr91401-1.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/gomp/pr91401-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/gomp/pr91401-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,10 ----
+ /* PR c/91401 */
+ 
+ void
+ foo (void)
+ {
+   int i;
+   #pragma omp distribute parallel for schedule (static) dist_schedule (static)
+   for (i = 0; i < 64; i++)
+     ;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/gomp/pr91401-2.c gcc-8.4.0/gcc/testsuite/c-c++-common/gomp/pr91401-2.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/gomp/pr91401-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/gomp/pr91401-2.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,15 ----
+ #pragma omp declare target
+ void f0 (void);
+ 
+ void
+ f1 (void)
+ {
+   int i;
+   #pragma omp distribute dist_schedule(static) dist_schedule(static)	/* { dg-warning "too many 'dist_schedule' clauses" } */
+   for (i = 0; i < 8; ++i)
+     f0 ();
+   #pragma omp distribute dist_schedule(static,2) dist_schedule(static,4) /* { dg-warning "too many 'dist_schedule' clauses" } */
+   for (i = 0; i < 8; ++i)
+     f0 ();
+ }
+ #pragma omp end declare target
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/gomp/pr93555-1.c gcc-8.4.0/gcc/testsuite/c-c++-common/gomp/pr93555-1.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/gomp/pr93555-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/gomp/pr93555-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,18 ----
+ /* PR middle-end/93555 */
+ /* { dg-do compile } */
+ 
+ #pragma omp declare simd
+ #pragma omp declare simd inbranch
+ int
+ foo (int x)
+ {
+   return x;
+ }
+ 
+ #pragma omp declare simd inbranch
+ #pragma omp declare simd
+ int
+ bar (int x)
+ {
+   return x;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/gomp/pr93555-2.c gcc-8.4.0/gcc/testsuite/c-c++-common/gomp/pr93555-2.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/gomp/pr93555-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/gomp/pr93555-2.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,16 ----
+ /* PR middle-end/93555 */
+ /* { dg-do compile } */
+ 
+ #pragma omp declare simd
+ #pragma omp declare simd inbranch
+ void
+ foo (void)
+ {
+ }
+ 
+ #pragma omp declare simd inbranch
+ #pragma omp declare simd
+ void
+ bar (void)
+ {
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/pr53633-2.c gcc-8.4.0/gcc/testsuite/c-c++-common/pr53633-2.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/pr53633-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/pr53633-2.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target naked_functions } */
+ /* { dg-options "-O2 -Wall" } */
+ /* Check that we do not get warnings about missing return statements
+    or bogus looking noreturn functions.  */
+ static int __attribute__((naked))
+ foo (void)
+ {
+   __asm__ ("");
+ }
+ 
+ static int __attribute__((naked,noreturn))
+ bar (void)
+ {
+   __asm__ ("");
+ }
+ 
+ int foo_caller (void) { return foo (); }
+ int bar_caller (void) { return bar (); }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/pr89933.c gcc-8.4.0/gcc/testsuite/c-c++-common/pr89933.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/pr89933.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/pr89933.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,5 ----
+ /* PR c/89933 */
+ /* { dg-do compile } */
+ 
+ typedef unsigned int a __attribute__ ((__aligned__(8), __may_alias__));
+ typedef unsigned int a __attribute__ ((__aligned__(8), __may_alias__));
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/pr89946.c gcc-8.4.0/gcc/testsuite/c-c++-common/pr89946.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/pr89946.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/pr89946.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,7 ----
+ /* PR c/89946 */
+ 
+ __attribute__((patchable_function_entry (-1))) void foo (void) {}	/* { dg-warning "'patchable_function_entry' attribute argument '-1' is not an integer constant" } */
+ __attribute__((patchable_function_entry (5, -5))) void bar (void) {}	/* { dg-warning "'patchable_function_entry' attribute argument '-5' is not an integer constant" } */
+ int i, j;
+ __attribute__((patchable_function_entry (i))) void baz (void) {}	/* { dg-warning "'patchable_function_entry' attribute argument 'i' is not an integer constant" } */
+ __attribute__((patchable_function_entry (2, j))) void qux (void) {}	/* { dg-warning "'patchable_function_entry' attribute argument 'j' is not an integer constant" } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/pr90108.c gcc-8.4.0/gcc/testsuite/c-c++-common/pr90108.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/pr90108.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/pr90108.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,6 ----
+ /* PR c++/90108 */
+ /* { dg-do compile } */
+ /* { dg-options "--param ggc-min-heapsize=0" } */
+ 
+ typedef unsigned int a __attribute__ ((__aligned__(8), __may_alias__));
+ typedef unsigned int a __attribute__ ((__aligned__(8), __may_alias__));
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/unroll-6.c gcc-8.4.0/gcc/testsuite/c-c++-common/unroll-6.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/unroll-6.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/unroll-6.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -fno-tree-loop-optimize" } */
+ 
+ void test (void)
+ {
+   #pragma GCC unroll 2
+   for (int nv = 0; nv <= 2; nv += 2)
+     {}
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/c-c++-common/unroll-7.c gcc-8.4.0/gcc/testsuite/c-c++-common/unroll-7.c
*** gcc-8.3.0/gcc/testsuite/c-c++-common/unroll-7.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/c-c++-common/unroll-7.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -fno-tree-dominator-opts" } */
+ 
+ int nv;
+ 
+ void test (void)
+ {
+   #pragma GCC unroll 2
+   for (nv = 0; nv < 1; ++nv)
+     {}
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/asan/pr90570.C gcc-8.4.0/gcc/testsuite/g++.dg/asan/pr90570.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/asan/pr90570.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/asan/pr90570.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,18 ----
+ /* PR sanitizer/90570 */
+ /* { dg-do run } */
+ 
+ #include <vector>
+ 
+ struct stru
+ {
+   std::vector<int> v{1,2,3,4};
+   int i{5};
+ };
+ 
+ int main()
+ {
+   stru s1;
+   stru s2;
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/asm-qual-3.C gcc-8.4.0/gcc/testsuite/g++.dg/asm-qual-3.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/asm-qual-3.C	Wed Jan  2 22:34:36 2019
--- gcc-8.4.0/gcc/testsuite/g++.dg/asm-qual-3.C	Wed Mar  4 08:30:01 2020
***************
*** 2,12 ****
  // { dg-do compile }
  // { dg-options "-std=gnu++98" }
  
! asm const ("");    // { dg-error {expected '\(' before 'const'} }
! asm volatile (""); // { dg-error {expected '\(' before 'volatile'} }
  asm restrict (""); // { dg-error {expected '\(' before 'restrict'} }
! asm inline ("");   // { dg-error {expected '\(' before 'inline'} }
! asm goto ("");     // { dg-error {expected '\(' before 'goto'} }
  
  // There are many other things wrong with this code, so:
  // { dg-excess-errors "" }
--- 2,12 ----
  // { dg-do compile }
  // { dg-options "-std=gnu++98" }
  
! asm const ("");    // { dg-error {'const' is not an asm qualifier} }
! asm volatile ("");
  asm restrict (""); // { dg-error {expected '\(' before 'restrict'} }
! asm inline ("");   // { dg-error {asm qualifier outside of function body} }
! asm goto ("");     // { dg-error {asm qualifier outside of function body} }
  
  // There are many other things wrong with this code, so:
  // { dg-excess-errors "" }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cet-notrack-1.C gcc-8.4.0/gcc/testsuite/g++.dg/cet-notrack-1.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cet-notrack-1.C	Tue Apr 24 16:54:35 2018
--- gcc-8.4.0/gcc/testsuite/g++.dg/cet-notrack-1.C	Wed Mar  4 08:30:01 2020
***************
*** 1,7 ****
  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
  /* { dg-options "-fcf-protection" } */
  /* { dg-final { scan-assembler "endbr32|endbr64" } } */
! /* { dg-final { scan-assembler-times "\tcall\[ \t]+puts" 2 } } */
  /* { dg-final { scan-assembler-times "notrack call\[ \t]+" 1 } } */
  #include <stdio.h>
  
--- 1,7 ----
  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
  /* { dg-options "-fcf-protection" } */
  /* { dg-final { scan-assembler "endbr32|endbr64" } } */
! /* { dg-final { scan-assembler-times "\tcall\[ \t]+_?puts" 2 } } */
  /* { dg-final { scan-assembler-times "notrack call\[ \t]+" 1 } } */
  #include <stdio.h>
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/concepts/no-bool1.C gcc-8.4.0/gcc/testsuite/g++.dg/concepts/no-bool1.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/concepts/no-bool1.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/concepts/no-bool1.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,4 ----
+ // { dg-do compile { target c++14 } }
+ // { dg-additional-options -fconcepts }
+ 
+ template <class T> concept True = true;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/alignas4.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/alignas4.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/alignas4.C	Tue Apr 24 15:54:56 2018
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/alignas4.C	Wed Mar  4 08:30:01 2020
***************
*** 1,7 ****
  // PR c++/59012
  // { dg-do compile { target c++11 } }
  // { dg-final { scan-assembler "align 8" { target { { i?86-*-* x86_64-*-* } && { { ! ia32 } && { ! *-*-darwin* } } } } } }
! // { dg-final { scan-assembler "align 4" { target ia32 } } }
  
  template <class... T>
  struct A
--- 1,13 ----
  // PR c++/59012
  // { dg-do compile { target c++11 } }
  // { dg-final { scan-assembler "align 8" { target { { i?86-*-* x86_64-*-* } && { { ! ia32 } && { ! *-*-darwin* } } } } } }
! // { dg-final { scan-assembler "align 4" { target { ia32 && { ! *-*-darwin* } } } } }
! 
! // Darwin produces aligned .zerofill directives for these.
! // { dg-final { scan-assembler {zerofill[^\n\r]+_a,4,2} { target { ilp32 && *-*-darwin* } } } }
! // { dg-final { scan-assembler {zerofill[^\n\r]+_a,8,3} { target { lp64 && *-*-darwin* } } } }
! // { dg-final { scan-assembler {zerofill[^\n\r]+_a2,4,2} { target { ilp32 && *-*-darwin* } } } }
! // { dg-final { scan-assembler {zerofill[^\n\r]+_a2,8,3} { target { lp64 && *-*-darwin* } } } }
  
  template <class... T>
  struct A
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-array24.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-array24.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-array24.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-array24.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/90951
+ // { dg-do compile { target c++11 } }
+ 
+ #define assert(expr) static_assert (expr, #expr)
+ 
+ struct S { const char a[2]; };
+ 
+ constexpr struct S a[1][1][1] = { };
+ 
+ assert ('\0' == *a[0][0][0].a);
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-static13.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-static13.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-static13.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-static13.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/92003
+ // { dg-do compile { target c++11 } }
+ // { dg-prune-output "narrowing conversion" }
+ 
+ constexpr char const* get_c_str() { return "abc"; }
+ constexpr bool use_get_c_str_in_constexpr_context{get_c_str()}; // works
+ 
+ template <char... Cs>
+ struct string {
+   static constexpr char const* c_str() { return c; }
+ 
+  private:
+   static constexpr char c[]{Cs..., '\0'};
+ };
+ 
+ constexpr char const* cstr{string<'a', 'b', 'c'>::c_str()};
+ constexpr bool use_cstr_in_constexpr_context{cstr}; // doesn't work
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/decltype-tid1.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/decltype-tid1.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/decltype-tid1.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/decltype-tid1.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/87513
+ // { dg-do compile { target c++11 } }
+ 
+ struct A { template <long> void foo (); };
+ template <long t> auto bar () -> decltype (&A::foo<t>);
+ void foo ()
+ {
+   bar<0> ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/enum23.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/enum23.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/enum23.C	Sat Feb 16 01:07:11 2013
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/enum23.C	Wed Mar  4 08:30:01 2020
*************** enum class MyEnum { A = 1 };
*** 5,9 ****
  
  struct MyClass
  {
!   MyEnum Field1 : 3; // { dg-bogus "warning: 'MyClass::Field1' is too small" "" { xfail *-*-* } }
  };
--- 5,9 ----
  
  struct MyClass
  {
!   MyEnum Field1 : 3; // { dg-bogus "warning: 'MyClass::Field1' is too small" }
  };
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/enum38.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/enum38.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/enum38.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/enum38.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,25 ----
+ // PR c++/61414
+ // { dg-do compile { target c++11 } }
+ 
+ enum C { C0 = -4, C1 = 3 };
+ enum D { D0 = 0, D1 = 15 };
+ enum class E { E0 = -4, E1 = 3 };
+ enum F : unsigned { F0 = 0, F1 = 15 };
+ enum __attribute__((__mode__ (__QI__))) G { G0 = -4, G1 = 3 };
+ enum __attribute__((__mode__ (__HI__))) H { H0 = 0, H1 = 15 };
+ 
+ struct S
+ {
+   C a : 2;	// { dg-warning "'S::a' is too small to hold all values of 'enum C'" }
+   C b : 3;	// { dg-bogus "'S::b' is too small to hold all values of 'enum C'" }
+   D c : 3;	// { dg-warning "'S::c' is too small to hold all values of 'enum D'" }
+   D d : 4;	// { dg-bogus "'S::d' is too small to hold all values of 'enum D'" }
+   E e : 2;	// { dg-warning "'S::e' is too small to hold all values of 'enum class E'" }
+   E f : 3;	// { dg-bogus "'S::f' is too small to hold all values of 'enum class E'" }
+   F g : 3;	// { dg-warning "'S::g' is too small to hold all values of 'enum F'" }
+   F h : 4;	// { dg-bogus "'S::h' is too small to hold all values of 'enum F'" }
+   G i : 2;	// { dg-warning "'S::i' is too small to hold all values of 'enum G'" }
+   G j : 3;	// { dg-bogus "'S::j' is too small to hold all values of 'enum G'" }
+   H k : 3;	// { dg-warning "'S::k' is too small to hold all values of 'enum H'" }
+   H l : 4;	// { dg-bogus "'S::l' is too small to hold all values of 'enum H'" }
+ };
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/enum39.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/enum39.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/enum39.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/enum39.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/61414
+ // { dg-do compile { target c++11 } }
+ 
+ enum class E { E0 = -4, E1 = 3 };
+ enum F : unsigned { F0 = 0, F1 = 15 };
+ 
+ struct S
+ {
+   E a : 2;	// { dg-warning "'S::a' is too small to hold all values of 'enum class E'" }
+   E b : 2;	// { dg-warning "'S::b' is too small to hold all values of 'enum class E'" }
+   E c : 3;	// { dg-bogus "'S::c' is too small to hold all values of 'enum class E'" }
+   F d : 3;	// { dg-warning "'S::d' is too small to hold all values of 'enum F'" }
+   F e : 3;	// { dg-warning "'S::e' is too small to hold all values of 'enum F'" }
+   F f : 4;	// { dg-bogus "'S::f' is too small to hold all values of 'enum F'" }
+ };
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/extern_template-5.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/extern_template-5.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/extern_template-5.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/extern_template-5.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,36 ----
+ // PR c++/87554
+ // { dg-options "-O" }
+ 
+ template < class a > class b {
+   static void c(a);
+   static a &create() { c(instance); return mya; }
+ 
+   static a mya;
+ 
+ public:
+   static a d() { create(); return a(); }
+   static a &instance;
+ };
+ template < class a > a &b< a >::instance = create();
+ class e;
+ class f {
+ public:
+   void operator()(int g) { h(g); }
+   template < class a > void h(a i) { p(j, i); }
+   e *j;
+ };
+ class e : public f {
+ public:
+   e(int);
+ };
+ struct k {
+   int l;
+ };
+ template < class m, class a > void p(m, a) { b< k >::d(); }
+ extern template class b< k >;
+ int n;
+ int o;
+ void test() {
+   e out(o);
+   out(n);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg11.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg11.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg11.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg11.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/87480
+ // { dg-do compile { target c++11 } }
+ 
+ template<typename T> T&& declval();
+ 
+ template <typename T, typename = decltype(declval<T>().d)> void f(T) { }
+ 
+ struct A {
+   double d;
+ };
+ 
+ template <typename>
+ void j(A& a) {
+   f(a);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/gen-attrs-71.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/gen-attrs-71.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/gen-attrs-71.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/gen-attrs-71.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/92648
+ // { dg-do compile { target c++11 } }
+ 
+ int a [[gnu::no_such_attribute(![!(!)!]!,;;)]];	// { dg-warning "ignored" }
+ int b [[no_such_namespace::nonexisting_attribute(linear(c, d : 2), reduction(*:e), linear(uval (f)))]];	// { dg-warning "ignored" }
+ int c [[gnu::nonexisting_attribute()]];	// { dg-warning "ignored" }
+ int d [[gnu::another_nonexistent_attr(1,"abcd",g+6)]];	// { dg-warning "ignored" }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/implicit16.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/implicit16.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/implicit16.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/implicit16.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,37 ----
+ // PR c++/89381
+ // { dg-do compile { target c++11 } }
+ 
+ template<typename T>
+ struct base
+ {
+   base() { }
+   base(const base&) { }
+   base(base&&) { }
+   base& operator=(const base&) { return *this; }
+   base& operator=(base&&) { return *this; }
+ };
+ 
+ struct foo : base<int>
+ {
+     using base<int>::base;
+     using base<int>::operator=;
+ };
+ 
+ //using workaround = decltype(foo{*static_cast<foo const*>(0)});
+ 
+ struct bar
+ {
+     bar& operator=(foo ve)
+     {
+         value = ve;
+         return *this;
+     }
+ 
+     foo value;
+ };
+ 
+ int main()
+ {
+     foo a;
+     foo b{a};
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/initlist-value4.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/initlist-value4.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/initlist-value4.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/initlist-value4.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/88857
+ // { dg-do compile { target c++11 } }
+ 
+ class S { int a; };
+ void foo (const S &, int);
+ 
+ template <int N>
+ void
+ bar ()
+ {
+   foo ({}); // { dg-error "too few arguments to function" }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/initlist118.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/initlist118.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/initlist118.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/initlist118.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,26 ----
+ // PR c++/92745 - bogus error when initializing array of vectors.
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-Wno-psabi -w" }
+ 
+ template <typename a, int b> struct c {
+   typedef a d[b];
+ };
+ 
+ template <typename a, int b> struct array {
+   typename c<a, b>::d e;
+   a operator[](long);
+ };
+ 
+ template<class T>
+ using vec4_t __attribute__((vector_size(4*sizeof(T)))) = float;
+ 
+ array<vec4_t<float>, 4>
+ transpose(array<vec4_t<float>, 4> col)
+ {
+   array<vec4_t<float>, 4>
+     ret{vec4_t<float>{col[0][0], col[1][0], col[2][0], col[3][0]},
+         vec4_t<float>{col[0][1], col[1][1], col[2][1], col[3][1]},
+         vec4_t<float>{col[0][2], col[1][2], col[2][2], col[3][2]},
+         vec4_t<float>{col[0][3], col[1][3], col[2][3], col[3][3]}};
+   return ret;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg9.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg9.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg9.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg9.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/89422
+ // { dg-do compile { target c++11 } }
+ // { dg-additional-options -g }
+ 
+ template <int> struct S
+ {
+   friend void foo (int a = []{ return 0; }()) {}
+   int b;
+ };
+ S<0> t;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic8.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic8.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic8.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic8.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/89917
+ // { dg-do compile { target c++11 } }
+ 
+ struct A 
+ {
+   A(...);
+ };
+ 
+ template<typename... T> struct B : T...
+ {
+   B() : T([]{})... {}
+ };
+ 
+ B<A> b;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/nullptr40.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/nullptr40.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/nullptr40.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/nullptr40.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/89212
+ // { dg-do compile { target c++11 } }
+ 
+ template <int, typename T> using enable_if_t = int;
+ 
+ template<class X, void(X::*foo)() = nullptr>
+ struct p
+ {
+     template<void(X::*fun)() = foo, typename T = enable_if_t<nullptr == fun, int>>
+     p(T) { }
+     p() = default;
+ };
+ 
+ struct A
+ {
+     p<A> i = 1;
+     void bar();
+     p<A, &A::bar> j;
+ };
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/nullptr41.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/nullptr41.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/nullptr41.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/nullptr41.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/89212
+ // { dg-do compile { target c++11 } }
+ 
+ template <int, typename T> using enable_if_t = int;
+ 
+ template<typename U, typename W, typename Y, class X, W(X::*foo)() = nullptr>
+ struct p
+ {
+     template<U(Y::*fun)() = foo, typename T = enable_if_t<nullptr == fun, int>>
+     p(T) { }
+     p() = default;
+ };
+ 
+ struct A
+ {
+     p<void, void, A, A> i = 1;
+     void bar();
+     p<void, void, A, A, &A::bar> j;
+ };
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/nullptr45.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/nullptr45.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/nullptr45.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/nullptr45.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,24 ----
+ // PR c++/92992
+ // { dg-do run { target c++11 } }
+ 
+ int a;
+ 
+ void
+ bar (int, ...)
+ {
+ }
+ 
+ decltype (nullptr)
+ baz ()
+ {
+   a++;
+   return nullptr;
+ }
+ 
+ int
+ main ()
+ {
+   bar (0, baz ());
+   if (a != 1)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/overload-conv-3.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/overload-conv-3.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/overload-conv-3.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/overload-conv-3.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/86521
+ // { dg-do compile { target c++11 } }
+ 
+ template <class T> T&& move (T&);
+ 
+ struct Dest {
+   Dest() = default;
+   Dest( Dest && ) = default;
+   Dest( Dest const & ) = delete;
+ };
+ 
+ struct Source {
+   Dest val;
+   operator Dest () && { return move( val ); }
+   operator Dest const & () const & { return val; }
+ };
+ 
+ int main() {
+   Source x;
+   Dest d(move(x));	   // { dg-error "ambiguous" "" { target c++14_down } }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/overload-conv-4.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/overload-conv-4.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/overload-conv-4.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/overload-conv-4.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,23 ----
+ // PR c++/90998 - ICE with copy elision in init by ctor and -Wconversion.
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-Wconversion" }
+ 
+ struct B;
+ 
+ struct A {
+     operator B();
+ };
+ 
+ struct B {
+     B(A const &rs);
+     B(B const &rs);
+ };
+ 
+ B
+ f (A x)
+ {
+   // C++14: we call B::B(A const &)
+   // C++17: we call A::operator B()
+   return B(x); // { dg-warning "choosing .A::operator B\\(\\). over .B::B\\(const A&\\)" "" { target c++17 } }
+   // { dg-warning "for conversion from .A. to .B." "" { target c++17 } .-1 }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/pr84497.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/pr84497.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/pr84497.C	Mon Mar  5 13:48:43 2018
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/pr84497.C	Wed Mar  4 08:30:01 2020
***************
*** 1,6 ****
--- 1,7 ----
  // PR 84497 mismatch with thread constructor fn weakness
  // { dg-do compile { target c++11 } }
  // { dg-require-weak "" }
+ // { dg-require-alias "" }
  
  struct Base
  {
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/pr89403.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/pr89403.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/pr89403.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/pr89403.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/89403
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-Os -fsyntax-only" }
+ 
+ template <typename T>
+ struct A : T {
+   constexpr A() : T() { }
+ };
+ 
+ template <typename T>
+ struct B {
+   A<T> b;
+   constexpr B() { }
+ };
+ 
+ struct C { struct {} s; };
+ constexpr B<C> b{};
+ constexpr C c = b.b;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/pr92524.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/pr92524.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/pr92524.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/pr92524.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/92524
+ // { dg-do compile { target c++11 } }
+ 
+ struct A { char a = '*'; };
+ struct B { A b[64]; };
+ 
+ void
+ foo ()
+ {
+   A a;
+   B{a};
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/pr93905.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/pr93905.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/pr93905.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/pr93905.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/93905
+ // { dg-do compile { target c++11 } }
+ 
+ enum class E { VALUE };
+ 
+ struct B {
+   E e{E::VALUE};
+ protected:
+   ~B () = default;  
+ };
+ 
+ struct D : B {};
+ 
+ int
+ main ()
+ {
+   D d{};
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/rv-conv2.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/rv-conv2.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/rv-conv2.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/rv-conv2.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/89705
+ // { dg-do compile { target c++11 } }
+ 
+ struct W { operator const volatile int(); };
+ const int& rci = W();
+ 
+ struct X { operator const int(); };
+ int&& rri = X();
+ 
+ struct Y { operator volatile int(); };
+ int&& rri2 = Y();
+ 
+ struct Z { operator const volatile int(); };
+ volatile int&& rri3 = Z();
+ 
+ enum E { A };
+ struct S { operator const E(); };
+ E&& rre = S();
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/rv-conv3.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/rv-conv3.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/rv-conv3.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/rv-conv3.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/90546
+ // { dg-do link { target c++11 } }
+ 
+ struct Foo { };
+ void test(const Foo&) {}
+ Foo f;
+ struct Bar {
+   template <class T> operator T&&();
+ };
+ template<> Bar::operator const Foo&&() {
+     return static_cast<Foo&&>(f);
+ }
+ int main() {
+   test(Bar{});
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/sfinae64.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/sfinae64.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/sfinae64.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/sfinae64.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,69 ----
+ // PR c++/87748
+ // { dg-do compile { target c++11 } }
+ 
+ template <class T> T&& declval();
+ template <bool B, class T> struct enable_if;
+ template <class T> struct enable_if <true, T> { typedef T type; };
+ struct true_type { static const bool value = true; };
+ struct false_type { static const bool value = false; };
+ 
+ struct string
+ {
+   string (const char *p);
+ };
+ 
+ /// Template to map all type arguments to void, useful for SFINAE, see also WG21 N3911.
+ template<class...> using void_t = void;
+ 
+ /// REQUIRES<value> - Simplified version of enable_if<> to use SFINAE in function templates.
+ template<bool value> using REQUIRES = typename ::enable_if<value, bool>::type;
+ 
+ /// DerivesString<T> - Check if @a T is of type 'string'.
+ template<class T> struct DerivesString
+ {
+   static const int value = __is_same_as (T, string);
+ };
+ 
+ /// Has__aida_visit__<T,Visitor> - Check if @a T provides a member template __aida_visit__<>(Visitor).
+ template<class, class, class = void> struct Has__aida_visit__ : false_type {};
+ template<class T, class V>
+ struct Has__aida_visit__<T, V, void_t< decltype (declval<T>().template __aida_visit__<V> (*(V*) 0)) >> : true_type {};
+ 
+ struct Foo {
+   template<class V> void __accept__ (V*);
+ };
+ 
+ /// Base template for Visitor classes, dispatches operator() to visit_<type>() methods.
+ template<class DerivedVisitor>
+ class VisitorDispatcher {
+   DerivedVisitor* derived () { return static_cast<DerivedVisitor*> (this); }
+ protected:
+   typedef const char* Name; ///< Member name argument type for visit() methods.
+ public:
+ 
+   // dispatch for calls like: visitor (field, "field");
+ 
+   template<class A,
+            REQUIRES< (!Has__aida_visit__<A, DerivedVisitor>::value) > = true>
+   void operator() (A &a, Name n)
+   { return derived()->visit_string (a, n); }
+ };
+ 
+ class PspecVisitor : public VisitorDispatcher<PspecVisitor> {
+ public:
+   void visit_string (::string &a, Name name);
+ };
+ 
+ int
+ main (int argc, char *argv[])
+ {
+ #ifdef WITHASSERT // define this to fix g++-8.1.1
+   static_assert (Has__aida_visit__<string, PspecVisitor>::value == false, "");
+ #endif
+   PspecVisitor v;
+   string str ("A string");
+   v (str, "some_string");
+   static_assert (Has__aida_visit__<string, PspecVisitor>::value == false, "");
+   return 0;
+ }
+ // g++ -std=gnu++14 -Wall -O2 aidavisit.cc && ./a.out
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/using-enum-3.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/using-enum-3.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/using-enum-3.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/using-enum-3.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/89511
+ // { dg-do compile { target c++11 } }
+ 
+ void f ()
+ {
+   enum e { a };
+   using e::a; // { dg-error "not a namespace or unscoped enum" }
+ }
+ 
+ struct S {
+   enum E { A };
+   using E::A; // { dg-error "type .S. is not a base type for type .S." }
+ };
+ 
+ namespace N {
+   enum E { B };
+ }
+ 
+ struct T {
+   using N::E::B; // { dg-error "using-declaration for non-member at class scope" }
+ };
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/variadic-parm1.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/variadic-parm1.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp0x/variadic-parm1.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp0x/variadic-parm1.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/93140
+ // { dg-do compile { target c++11 } }
+ 
+ int
+ bar ()
+ {
+   return 42;
+ }
+ 
+ template <typename... R>
+ void foo (R... r, decltype (bar (r...)) x = 0) {}
+ 
+ int
+ main ()
+ {
+   foo (3);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/attr-deprecated-3.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/attr-deprecated-3.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/attr-deprecated-3.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/attr-deprecated-3.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/93228
+ // { dg-do compile { target c++14 } }
+ 
+ template <typename T>
+ struct [[deprecated("foo")]] bar {};	// { dg-message "declared here" }
+ struct [[deprecated("baz")]] qux {}; 	// { dg-message "declared here" }
+ 
+ void
+ quux ()
+ {
+   bar<int> b;	// { dg-warning "is deprecated: foo" }
+   qux c;	// { dg-warning "is deprecated: baz" }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-90842.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-90842.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-90842.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-90842.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/90842
+ // { dg-do compile { target c++14 } }
+ 
+ auto a = [](auto x) struct C { void foo (); } {};	// { dg-error "expected" }
+ 							// { dg-error "type-specifier invalid in lambda" "" { xfail *-*-* } .-1 }
+ auto b = [](auto x) mutable typedef {};			// { dg-error "'typedef' invalid in lambda" }
+ auto d = [](auto x) mutable friend {};			// { dg-error "'friend' invalid in lambda" }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-const10.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-const10.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-const10.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-const10.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,24 ----
+ // PR c++/82643
+ // { dg-do compile { target c++14 } }
+ 
+ int main()
+ {
+   struct A {
+     constexpr int operator()() const { return 42; }
+   };
+ 
+   auto f = A();
+   constexpr auto x = f(); //ok, call constexpr const non-static method
+ 
+   [](auto const &f) {
+     constexpr auto x = f(); /*ok*/
+   }(f);
+ 
+   [&]() {
+     constexpr auto x = f(); //ko, __closure is not a constant expression
+   };
+ 
+   [=]() {
+     constexpr auto x = f(); //same ko, __closure is not a constant expression
+   };
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-const9.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-const9.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-const9.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-const9.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/86429
+ // { dg-do compile { target c++14 } }
+ 
+ struct A
+ {
+   int i;
+   constexpr int f(const int&) const { return i; }
+ };
+ 
+ void g()
+ {
+   constexpr A a = { 42 };
+   [&](auto x) {
+     constexpr auto y = a.f(x);
+   }(24);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-ref1.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-ref1.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-ref1.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-ref1.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/92852
+ // { dg-do compile { target c++14 } }
+ 
+ struct S { int operator<<(const int &); } glob;
+ void foo()
+ {
+   S& message_stream = glob;
+   auto format = [&message_stream](auto && x)
+ 		{ message_stream << x ; };
+   format(3);
+   format(4u);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this3.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this3.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this3.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this3.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/87685
+ // { dg-do compile { target c++14 } }
+ 
+ struct A
+ {
+   template <typename T> static void f(T) {}
+   void f() {}
+ 
+   void foo()
+   {
+     [] (auto&& v) { A::f(v); }; // OK if parameter type is specified
+   }
+ };
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-init-vla1.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-init-vla1.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-init-vla1.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-init-vla1.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/88394
+ // { dg-do compile { target c++14 } }
+ // { dg-options "" }
+ 
+ void crash_me(unsigned short sz)
+ {
+   if (sz == 0) return;
+ 
+   short iov[sz];
+   auto fce = [&iv = iov](short value) { iv[0] = 0; };
+   fce(1);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-init18.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-init18.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-init18.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-init18.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/89767
+ // { dg-do compile { target c++14 } }
+ 
+ void bar (int);
+ 
+ void
+ foo ()
+ {
+   int x = 0;
+   auto z = [x, y = [x] { bar (x); }] { y (); bar (x); };
+   z ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-init19.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-init19.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-init19.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-init19.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/89767
+ // { dg-do compile { target c++14 } }
+ 
+ void bar (int);
+ 
+ void
+ foo ()
+ {
+   int x = 0;
+   int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0;
+   auto z = [x, y = [x] { bar (x); }, x] { y (); bar (x); };	// { dg-error "already captured 'x' in lambda expression" }
+   auto w = [x, a, b, c, d, y = [x] { bar (x); }, e, f, g, h, x] { y (); bar (x + a + b + c + d + e + f + g + h); };	// { dg-error "already captured 'x' in lambda expression" }
+   z ();
+   w ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/pr89767.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/pr89767.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/pr89767.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/pr89767.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,32 ----
+ // PR c++/89767
+ // { dg-do compile { target c++14 } }
+ // { dg-options "-O2 -Wall" }
+ 
+ template <typename d> struct e { using g = d; };
+ template <typename d, template <typename> class> using h = e<d>;
+ template <typename d, template <typename> class i>
+ using j = typename h<d, i>::g;
+ template <typename c> int k(c);
+ template <typename...> class au;
+ struct l { template <typename c> using m = typename c::f; };
+ struct s : l { using af = j<au<int, int> *, m>; };
+ template <unsigned long, typename> struct o;
+ template <long p, typename c> using q = typename o<p, c>::g;
+ template <typename> struct r;
+ template <typename c> struct r<c *> { typedef c aj; };
+ template <typename ak, typename> struct al { typename r<ak>::aj operator*(); void operator++(); };
+ template <typename am, typename an, typename ao>
+ bool operator!=(al<am, ao>, al<an, ao>);
+ template <unsigned long, typename...> struct ap;
+ template <unsigned long aq, typename ar, typename... as>
+ struct ap<aq, ar, as...> : ap<1, as...> {};
+ template <unsigned long aq, typename ar> struct ap<aq, ar> {};
+ template <typename... at> class au : public ap<0, at...> {};
+ template <unsigned long p, typename ar, typename... as>
+ struct o<p, au<ar, as...>> : o<p - 1, au<as...>> {};
+ template <typename ar, typename... as> struct o<0, au<ar, as...>> { typedef ar g; };
+ template <long p, typename ar> constexpr ar av(ap<p, ar> __t) { return ar (); }
+ template <int p, typename... at> constexpr q<p, au<at...>> aw(au<at...> __t) { av<p>(__t); return q<p, au<at...>> (); }
+ struct bg { typedef s::af af; };
+ struct F { typedef al<bg::af, int> bk; bk begin(); bk end(); };
+ void bo() { int t = 0; F cv; for (auto bp : cv) [t, n = k(aw<1>(bp))] {}; }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/var-templ61.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/var-templ61.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1y/var-templ61.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1y/var-templ61.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,20 ----
+ // PR c++/89512
+ // { dg-do compile { target c++14 } }
+ 
+ struct A {
+   template <typename T>
+   static const int a = 0;
+ };
+ 
+ struct B {
+   template <typename T>
+   static int foo ()
+   {
+     return T::a;		// { dg-error "missing template arguments" }
+   }
+ };
+ 
+ int bar ()
+ {
+   return B::foo<A> ();		// { dg-message "required from here" }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/aggr-base7.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/aggr-base7.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/aggr-base7.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/aggr-base7.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/88690
+ // { dg-do compile { target c++11 } }
+ 
+ struct A { int a = 1; };
+ struct B { int b = 0; };
+ struct C { C() = default; C (const C&) = delete; };
+ struct D : public B, public C {};
+ struct E : A { D f; } g{};
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/aggr-base8.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/aggr-base8.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/aggr-base8.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/aggr-base8.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,48 ----
+ // PR c++/89214
+ // { dg-do compile { target c++17 } }
+ 
+ struct A
+ {
+   A (int);
+ };
+ 
+ struct BB
+ {
+   A a;
+ };
+ 
+ struct B : BB
+ {
+ };
+ 
+ void
+ foo ()
+ {
+   B b1 = {42};
+   B b2 = {{42}};
+   B b3 = {{{42}}};
+ 
+   B b4 = B{42};
+   B b5 = B{{42}};
+   B b6 = B{{{42}}};
+ 
+   B b7 = {B{42}};
+   B b8 = {B{{42}}};
+   B b9 = {B{{{42}}}};
+ 
+   B b10 = {{B{42}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" }
+   B b11 = {{B{{42}}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" }
+   B b12 = {{B{{{42}}}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" }
+ 
+   B bb1{42};
+   B bb2{{42}};
+   B bb3{{{42}}};
+ 
+   B bb7{B{42}};
+   B bb8{B{{42}}};
+   B bb9{B{{{42}}}};
+ 
+   B bb10{{B{42}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" }
+   B bb11{{B{{42}}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" }
+   B bb12{{B{{{42}}}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/aggr-base9.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/aggr-base9.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/aggr-base9.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/aggr-base9.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,33 ----
+ // PR c++/89214
+ // { dg-do compile { target c++17 } }
+ 
+ struct B {
+   int c;
+ };
+ 
+ struct D : B { };
+ 
+ void
+ foo ()
+ {
+   D d1 = {42};
+   D d2 = {{42}};
+   
+   D d4 = D{42};
+   D d5 = D{{42}};
+  
+   D d7 = {D{42}};
+   D d8 = {D{{42}}};
+ 
+   D d10 = {{D{42}}}; // { dg-warning "initializing a base class of type .B. results in object slicing" }
+   D d11 = {{D{{42}}}}; // { dg-warning "initializing a base class of type .B. results in object slicing" }
+ 
+   D dd1{42};
+   D dd2{{42}};
+   
+   D dd7{D{42}};
+   D dd8{D{{42}}};
+ 
+   D dd10{{D{42}}}; // { dg-warning "initializing a base class of type .B. results in object slicing" }
+   D dd11{{D{{42}}}}; // { dg-warning "initializing a base class of type .B. results in object slicing" }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction58.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction58.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction58.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction58.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/86098
+ // { dg-additional-options -std=c++17 }
+ 
+ template <class _Res> class future;
+ template <class T> T&& declval();
+ 
+ template<template <class...> class T>
+ struct construct_deduced {
+   template <class... AN>
+   using deduced_t = decltype(T{declval<AN>()...});
+   template<class... AN>
+   deduced_t<AN...> operator()(AN&&... an) const;
+ };
+ 
+ template<class T>
+ future<T> future_from(T singleSender);
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction62.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction62.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction62.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction62.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,22 ----
+ // PR c++/88419
+ // { dg-do compile { target c++17 } }
+ 
+ template<class> struct ref_view {
+   template<class T> ref_view(T&&);
+ };
+ 
+ template<class R> ref_view(R&) -> ref_view<R>;
+ 
+ struct ref_fn {
+   template<class R> auto operator()(R r) const
+     noexcept(noexcept(ref_view{r}));
+ };
+ 
+ template<class R> struct indirect_view {
+   indirect_view(R);
+ };
+ 
+ struct indirect_fn {
+   template<class R> auto operator()(R r) const
+     noexcept(noexcept(indirect_view{r}));
+ };
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction63.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction63.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction63.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction63.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/88869
+ // { dg-do compile { target c++17 } }
+ 
+ template <typename> struct B;
+ template <> struct B<int> {
+   template <typename T> struct C {
+     T e;
+     C (T f) : e(f) {}
+   };
+   void foo () { C c (42); }
+ };
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction64.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction64.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction64.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction64.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/88820
+ // { dg-do compile { target c++17 } }
+ 
+ template <int> struct S;
+ 
+ template <S> struct W {
+   template <typename> static int foo();
+   bool b = foo<int>();
+ };
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/constexpr-if28.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/constexpr-if28.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/constexpr-if28.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/constexpr-if28.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/89576
+ // { dg-do compile { target c++17 } }
+ 
+ template <class T>
+ void foo()
+ {
+     constexpr int x = 0;
+     [&] {
+         if constexpr (x) {}
+     };
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda24.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda24.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda24.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda24.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,23 ----
+ // PR c++/87327
+ // { dg-do compile { target c++17 } }
+ 
+ template <int N>
+ struct Foo {
+     constexpr auto size() const {
+         return N;
+     }
+ };
+ 
+ constexpr int foo() {
+     constexpr auto a = Foo<5>{};
+ 
+     [&] {
+         Foo<a.size()> it = {};
+ 
+         return it;
+     }();
+ 
+     return 42;
+ }
+ 
+ constexpr int i = foo();
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/decomp49.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/decomp49.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/decomp49.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/decomp49.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/82075
+ // { dg-do run { target c++11 } }
+ // { dg-options "" }
+ 
+ struct B { };
+ struct D : B { int i; };
+ 
+ int
+ main ()
+ {
+   auto [i] = D{};	// { dg-warning "only available with" "" { target c++14_down } }
+   if (i != 0)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/decomp50.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/decomp50.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/decomp50.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/decomp50.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,51 ----
+ // PR c++/92106 - ICE with structured bindings and -Wreturn-local-addr. 
+ // { dg-do compile { target c++17 } }
+ 
+ template <typename> struct B;
+ template <typename _Tp> struct B<_Tp *> { typedef _Tp& reference; };
+ struct C {
+   template <typename _Up> using rebind = _Up *;
+ };
+ template <typename _Iterator, typename> class D {
+ public:
+   typename B<_Iterator>::reference operator*();
+   void operator++();
+ };
+ 
+ template <typename _Iterator, typename _Container>
+ bool operator!=(D<_Iterator, _Container>, D<_Iterator, _Container>);
+ template <typename _Tp> class F {
+ public:
+   typedef _Tp value_type;
+ };
+ 
+ template <typename _Alloc> struct G {
+   template <typename _Tp> struct H { using type = C::rebind<_Tp>; };
+   using const_pointer = typename H<typename _Alloc::value_type>::type;
+ };
+ template <typename _Tp, typename _Alloc = F<_Tp>> class I {
+   typedef D<typename G<_Alloc>::const_pointer, int> const_iterator;
+ 
+ public:
+   const_iterator begin();
+   const_iterator end();
+ };
+ 
+ struct A {
+   struct J {
+     int name;
+     int value;
+   };
+   I<J> members;
+   template <typename Key> const int *find(Key) {
+     for (const auto &[name, value] : members)
+       // See <https://gcc.gnu.org/ml/gcc-patches/2019-10/msg01107.html>
+       // for why we don't warn here.
+       return &value; // { dg-bogus "address of local variable" }
+     return nullptr;
+   }
+ };
+ int main() {
+   A a;
+   a.find("");
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/eval-order5.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/eval-order5.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/eval-order5.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/eval-order5.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,31 ----
+ // PR c++/91974
+ // { dg-do run }
+ // { dg-options "-fstrong-eval-order" }
+ 
+ extern "C" void abort ();
+ 
+ bool ok = false;
+ 
+ void
+ foo (int x)
+ {
+   if (x != 0)
+     abort ();
+   ok = true;
+ }
+ 
+ void
+ bar (int)
+ {
+   abort ();
+ }
+ 
+ int
+ main ()
+ {
+   typedef void (*T) (int);
+   T fn = foo;
+   fn ((fn = bar, 0));
+   if (fn != bar || !ok)
+     abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/fold-lambda3.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/fold-lambda3.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/fold-lambda3.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/fold-lambda3.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/88183
+ // { dg-do compile { target c++17 } }
+ 
+ struct A { int i; };
+ 
+ template <class T> T& g(T);
+ 
+ template <class U, class... Vs>
+ void f(U u, Vs... vs)
+ { 
+   [vs...](auto x) {
+     (g(x) .* ... .* vs) = 42;
+   }(u);
+ }
+ 
+ int main()
+ {
+   f(A(), &A::i);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/inline-var5.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/inline-var5.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp1z/inline-var5.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp1z/inline-var5.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,27 ----
+ // PR c++/89405
+ // { dg-do compile { target c++17 } }
+ // { dg-options "-fno-weak" }
+ 
+ template <int N>
+ struct S
+ {
+   static constexpr int a = N;	// { dg-warning "semantics of inline variable" }
+ };				// { dg-message "you can work around this" "" { target *-*-* } .-1 }
+ 
+ const int *x = &S<0>::a;
+ // PR c++/87921
+ // { dg-do compile { target c++17 } }
+ 
+ template <class H>
+ struct X
+ {
+   static inline long x[] = { 1L };
+   long foo () { return x[0]; }
+ };
+ 
+ void
+ bar ()
+ {
+   class L {};
+   X<L> v {};
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp2a/bitfield3.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp2a/bitfield3.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp2a/bitfield3.C	Fri Sep 29 17:53:50 2017
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp2a/bitfield3.C	Wed Mar  4 08:30:01 2020
*************** const int b = 0;
*** 15,25 ****
  struct S {
    int c : 5 = 2 * a;			// { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
    int d : 6 { c + a };			// { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
- 					// { dg-warning "narrowing conversion of" "" { target *-*-* } .-1 }
    int e : true ? 7 : a = 3;
    int f : (true ? 8 : b) = d + a;	// { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
    int g : (true ? 9 : b) { f + a };	// { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
- 					// { dg-warning "narrowing conversion of" "" { target *-*-* } .-1 }
    int h : 1 || new int { 0 };
    int i = g + a;
  };
--- 15,23 ----
*************** template <bool V, int W>
*** 28,38 ****
  struct U {
    int j : W = 3 * a;			// { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
    int k : W { j + a };			// { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
- 					// { dg-warning "narrowing conversion of" "" { target *-*-* } .-1 }
    int l : V ? 7 : a = 3;
    int m : (V ? W : b) = k + a;		// { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
    int n : (V ? W : b) { m + a };	// { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
- 					// { dg-warning "narrowing conversion of" "" { target *-*-* } .-1 }
    int o : 1 || new int { 0 };
    int p = n + a;
  };
--- 26,34 ----
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/cpp2a/bitfield4.C gcc-8.4.0/gcc/testsuite/g++.dg/cpp2a/bitfield4.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/cpp2a/bitfield4.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/cpp2a/bitfield4.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/92732
+ // { dg-do compile { target c++17 } }
+ // { dg-options "" }
+ 
+ enum class byte : unsigned char { };
+ using uint8_t = unsigned char;
+ 
+ struct T
+ {
+   byte a : 2 = byte{0};	// { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
+   uint8_t b : 2 = 0;	// { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
+ } t;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C gcc-8.4.0/gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // { dg-do compile }
+ // { dg-require-effective-target c++11 }
+ // { dg-options "-g -fdebug-types-section" }
+ class A {
+ public:
+   A();
+   template <typename U> A(U);
+ };
+ template <class> struct B { typedef A type; };
+ template <class R, typename... Args>
+ int Bind(R(Args...), typename B<Args>::type...) { return 0; }
+ void KeepBufferRefs(A, A) { A a, b(Bind(KeepBufferRefs, a, b)); }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/debug/pr92763.C gcc-8.4.0/gcc/testsuite/g++.dg/debug/pr92763.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/debug/pr92763.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/debug/pr92763.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,20 ----
+ // { dg-do compile }
+ // { dg-require-effective-target fopenmp }
+ // { dg-additional-options "-fno-var-tracking-assignments -fopenmp" }
+ 
+ struct A
+ {
+   typedef int T;
+   #pragma omp declare reduction (y : T : [&omp_out, &omp_in]() { omp_out += omp_in; return 0; }()) initializer (omp_priv = [omp_orig]() { return omp_orig; }())
+   static void foo ();
+ };
+ 
+ void
+ A::foo ()
+ {
+   int r = 0, s = 0;
+   #pragma omp parallel for reduction (y : r, s)
+   for (int i = 0; i < 1; i++)
+     {
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/eh/o32-fp.C gcc-8.4.0/gcc/testsuite/g++.dg/eh/o32-fp.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/eh/o32-fp.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/eh/o32-fp.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,47 ----
+ // Test whether call saved float are restored properly for O32 ABI
+ // { dg-do run { target { { { mips*-*-linux* } && hard_float } && { ! mips64 } } } }
+ // { dg-options "-O2" }
+ 
+ void __attribute__((noinline))
+ bar (void)
+ {
+   throw 1;
+ }
+ 
+ void __attribute__((noinline))
+ foo (void)
+ {
+   register double f20 __asm__ ("f20") = 0.0;
+   register double f22 __asm__ ("f22") = 0.0;
+   register double f24 __asm__ ("f24") = 0.0;
+   register double f26 __asm__ ("f26") = 0.0;
+   register double f28 __asm__ ("f28") = 0.0;
+   register double f30 __asm__ ("f30") = 0.0;
+   __asm__ __volatile__("":"+f"(f20),"+f"(f22),"+f"(f24),"+f"(f26),"+f"(f30));
+   bar ();
+ }
+ 
+ int
+ main (void)
+ {
+   register double f20 __asm__ ("f20") = 12.0;
+   register double f22 __asm__ ("f22") = 13.0;
+   register double f24 __asm__ ("f24") = 14.0;
+   register double f26 __asm__ ("f26") = 15.0;
+   register double f28 __asm__ ("f28") = 16.0;
+   register double f30 __asm__ ("f30") = 17.0;
+ 
+   try
+     {
+       foo ();
+     }
+   catch (...)
+     {
+       __asm__ ("":"+f"(f20),"+f"(f22),"+f"(f24),"+f"(f26),"+f"(f30));
+     }
+ 
+   if (f20 != 12.0 || f22 != 13.0 || f24 != 14.0
+       || f26 != 15.0 || f28 != 16.0 || f30 != 17.0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/ext/90532.C gcc-8.4.0/gcc/testsuite/g++.dg/ext/90532.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/ext/90532.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/ext/90532.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,27 ----
+ // { dg-do compile { target c++11 } }
+ // PR c++/90532
+ static_assert( !__is_constructible(int[]), "" );
+ static_assert( !__is_constructible(int[], int), "" );
+ static_assert( !__is_constructible(int[], int[]), "" );
+ static_assert( !__is_trivially_constructible(int[]), "" );
+ static_assert( !__is_trivially_constructible(int[], int), "" );
+ static_assert( !__is_trivially_constructible(int[], int[]), "" );
+ static_assert( !__is_trivially_constructible(int[], int(&)[]), "" );
+ static_assert( !__is_trivially_constructible(int[], void), "" );
+ struct A { };
+ static_assert( !__is_constructible(A[]), "" );
+ static_assert( !__is_constructible(A[], const A&), "" );
+ static_assert( !__is_constructible(A[], const A[]), "" );
+ static_assert( !__is_trivially_constructible(A[]), "" );
+ static_assert( !__is_trivially_constructible(A[], const A&), "" );
+ static_assert( !__is_trivially_constructible(A[], const A[]), "" );
+ static_assert( !__is_trivially_constructible(A[], A(&)[]), "" );
+ static_assert( !__is_trivially_constructible(A[], void), "" );
+ struct B { B(); };
+ static_assert( !__is_constructible(B[]), "" );
+ static_assert( !__is_constructible(B[], const B&), "" );
+ static_assert( !__is_trivially_constructible(B[]), "" );
+ static_assert( !__is_trivially_constructible(B[], const B&), "" );
+ static_assert( !__is_trivially_constructible(B[], const B[]), "" );
+ static_assert( !__is_trivially_constructible(B[], B(&)[]), "" );
+ static_assert( !__is_trivially_constructible(B[], void), "" );
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/ext/alignof2.C gcc-8.4.0/gcc/testsuite/g++.dg/ext/alignof2.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/ext/alignof2.C	Sat Jun 17 15:32:28 2017
--- gcc-8.4.0/gcc/testsuite/g++.dg/ext/alignof2.C	Wed Mar  4 08:30:01 2020
***************
*** 3,9 ****
  // wrong for some fields.
  
  // { dg-do run }
! // { dg-xfail-run-if "AIX ABI increases struct alignment for first member double" { powerpc-ibm-aix* } }
  
  extern "C" void abort();
  
--- 3,9 ----
  // wrong for some fields.
  
  // { dg-do run }
! // { dg-xfail-run-if "AIX/Darwin ABI increases struct alignment for first member double" { powerpc-ibm-aix* || { ilp32 && powerpc-*-darwin* } } }
  
  extern "C" void abort();
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/ext/asm15.C gcc-8.4.0/gcc/testsuite/g++.dg/ext/asm15.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/ext/asm15.C	Sun May  6 21:52:25 2018
--- gcc-8.4.0/gcc/testsuite/g++.dg/ext/asm15.C	Wed Mar  4 08:30:01 2020
*************** struct S { S (); ~S (); int s; };
*** 6,10 ****
  void
  foo (S &s)
  {
!   __asm volatile ("" : "+r" (s) : : "memory");	// { dg-error "" }
  }
--- 6,11 ----
  void
  foo (S &s)
  {
!   __asm volatile ("" : "+r" (s) : : "memory");	// { dg-error "impossible constraint" }
! 						// { dg-error "must stay in memory" "" { target *-*-* } .-1 }
  }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/ext/asm16.C gcc-8.4.0/gcc/testsuite/g++.dg/ext/asm16.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/ext/asm16.C	Sun May  6 21:52:25 2018
--- gcc-8.4.0/gcc/testsuite/g++.dg/ext/asm16.C	Wed Mar  4 08:30:01 2020
*************** struct S { S (); ~S (); int s[64]; } s;
*** 6,10 ****
  void
  foo ()
  {
!   __asm volatile ("" : "=r" (s) : : "memory");	// { dg-error "" }
  }
--- 6,11 ----
  void
  foo ()
  {
!   __asm volatile ("" : "=r" (s) : : "memory");	// { dg-error "impossible constraint" }
! 						// { dg-error "must stay in memory" "" { target *-*-* } .-1 }
  }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/ext/asm17.C gcc-8.4.0/gcc/testsuite/g++.dg/ext/asm17.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/ext/asm17.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/ext/asm17.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,11 ----
+ // PR target/89752
+ // { dg-do compile }
+ 
+ struct A { A (); ~A (); short c; };
+ 
+ void
+ foo ()
+ {
+   A a0, a1;
+   __asm volatile ("" : "+rm" (a0), "+rm" (a1));
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/ext/attrib61.C gcc-8.4.0/gcc/testsuite/g++.dg/ext/attrib61.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/ext/attrib61.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/ext/attrib61.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,26 ----
+ // PR c++/92438
+ // { dg-do compile }
+ 
+ typedef struct S { int x; } T;
+ T (foo) (T x);
+ T __attribute__((unused)) bar (T x);
+ struct S (__attribute__((unused)) baz) (T x);
+ T (__attribute__((unused)) qux) (T x);
+ 
+ struct U
+ {
+   U (__attribute__((unused)) int);
+   U (__attribute__((unused)) corge) (int);
+ };
+ 
+ void
+ test ()
+ {
+   T a, b;
+   a = foo (b);
+   b = bar (a);
+   a = baz (b);
+   b = qux (a);
+   U u (5);
+   U v = u.corge (3);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/ext/flexary33.C gcc-8.4.0/gcc/testsuite/g++.dg/ext/flexary33.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/ext/flexary33.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/ext/flexary33.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/88380
+ // { dg-do compile { target c++14 } }
+ // { dg-options "" }
+ 
+ struct S {
+   char uninit;
+   char initialised = 11;
+   char variable[];
+ };
+ 
+ constexpr S p {};
+ #define SA(X) static_assert((X),#X)
+ SA(p.initialised == 11);
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/ext/flexary34.C gcc-8.4.0/gcc/testsuite/g++.dg/ext/flexary34.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/ext/flexary34.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/ext/flexary34.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/87148
+ // { dg-do compile }
+ // { dg-options "-pedantic" }
+ 
+ struct Tst { int i; char t[]; };	// { dg-warning "forbids flexible array member" }
+ 
+ Tst t {};				// { dg-warning "extended initializer lists only available with" "" { target c++98_only } }
+ Tst u = Tst();
+ void foo () { Tst u = {}; }
+ Tst *bar () { return new Tst (); }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/ext/instantiate2.C gcc-8.4.0/gcc/testsuite/g++.dg/ext/instantiate2.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/ext/instantiate2.C	Mon Nov 29 14:58:16 2010
--- gcc-8.4.0/gcc/testsuite/g++.dg/ext/instantiate2.C	Wed Mar  4 08:30:01 2020
*************** template <class T> struct A {
*** 8,15 ****
  template <class T> T A<T>::t = 0;
  static template struct A<int>;
  
! // { dg-final { scan-assembler "\n_?_ZN1AIiE1tE(:|\n|\t)" { target { ! *-*-darwin* } } } }
! // { dg-final { scan-assembler ".zerofill __DATA,__pu_bss2,__ZN1AIiE1tE" { target *-*-darwin* } } } 
  void test_int() { A<int>::t = 42; }
  
  // { dg-final { scan-assembler-not "\n_?_ZN1AIcE1tE(:|\n|\t)" } }
--- 8,14 ----
  template <class T> T A<T>::t = 0;
  static template struct A<int>;
  
! // { dg-final { scan-assembler "\n_?_ZN1AIiE1tE(:|\n|\t)" } }
  void test_int() { A<int>::t = 42; }
  
  // { dg-final { scan-assembler-not "\n_?_ZN1AIcE1tE(:|\n|\t)" } }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/ext/vector37.C gcc-8.4.0/gcc/testsuite/g++.dg/ext/vector37.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/ext/vector37.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/ext/vector37.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,29 ----
+ // PR c++/90810
+ // { dg-do run }
+ 
+ void
+ foo (float x, float y)
+ {
+   typedef float __attribute__ ((__vector_size__ (4 * sizeof (float)), __may_alias__)) V;
+   const V a = { x, x, x, x }, b = { y, y, y, y };
+   const V c = a / b;
+   if (c[0] != 6.0f || c[1] != 6.0f || c[2] != 6.0f || c[3] != 6.0f)
+     __builtin_abort ();
+ }
+ 
+ void
+ bar (float y)
+ {
+   typedef float __attribute__ ((__vector_size__ (4 * sizeof (float)), __may_alias__)) V;
+   const V a = { 7.0f, 8.0f, 9.0f, 10.0f }, b = { 1.0f, 2.0f, 3.0f, y };
+   const V c = a / b;
+   if (c[0] != 7.0f || c[1] != 4.0f || c[2] != 3.0f || c[3] != 5.0f)
+     __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+   foo (12.0f, 2.0f);
+   bar (2.0f);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/gcov/pr16855.C gcc-8.4.0/gcc/testsuite/g++.dg/gcov/pr16855.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/gcov/pr16855.C	Fri Nov 25 14:23:25 2016
--- gcc-8.4.0/gcc/testsuite/g++.dg/gcov/pr16855.C	Wed Mar  4 08:30:01 2020
***************
*** 1,6 ****
--- 1,8 ----
  /* { dg-options "-fprofile-arcs -ftest-coverage" } */
  /* { dg-do run { target native } } */
  
+ /* See PR91087 for information on Darwin xfails. */
+ 
  #include <stdlib.h>
  #include <stdio.h>
  
*************** class Test
*** 18,24 ****
  {
  public:
    Test (void) { fprintf (stderr, "In Test::Test\n"); /* count(1) */ }
!   ~Test (void) { fprintf (stderr, "In Test::~Test\n"); /* count(1) */ }
  } T1;
  
  void
--- 20,28 ----
  {
  public:
    Test (void) { fprintf (stderr, "In Test::Test\n"); /* count(1) */ }
!   ~Test (void) {
!    fprintf (stderr, "In Test::~Test\n"); /* count(1) { xfail *-*-darwin* } */
!   }
  } T1;
  
  void
*************** static void __attribute__ ((constructor)
*** 42,48 ****
  
  static void __attribute__ ((destructor)) dtor_default ()
  {
!   fprintf (stderr, "in destructor(())\n"); /* count(1) */
  }
  
! /* { dg-final { run-gcov branches { -b pr16855.C } } } */
--- 46,52 ----
  
  static void __attribute__ ((destructor)) dtor_default ()
  {
!   fprintf (stderr, "in destructor(())\n"); /* count(1) { xfail *-*-darwin* } */
  }
  
! /* { dg-final { run-gcov branches { -b pr16855.C } { xfail *-*-darwin* } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/gomp/lastprivate-1.C gcc-8.4.0/gcc/testsuite/g++.dg/gomp/lastprivate-1.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/gomp/lastprivate-1.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/gomp/lastprivate-1.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/90950
+ // { dg-do compile }
+ 
+ template <typename T>
+ T
+ foo (void)
+ {
+   T y = 0;
+   T &x = y;
+   #pragma omp parallel for lastprivate (x)
+   for (int i = 0; i < 8; ++i)
+     x = i;
+   return x;
+ }
+ 
+ int a = foo<int> ();
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/gomp/openmp-simd-2.C gcc-8.4.0/gcc/testsuite/g++.dg/gomp/openmp-simd-2.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/gomp/openmp-simd-2.C	Fri May 29 08:20:29 2015
--- gcc-8.4.0/gcc/testsuite/g++.dg/gomp/openmp-simd-2.C	Wed Mar  4 08:30:01 2020
*************** void bar(int n, float *a, float *b)
*** 36,43 ****
      a[i] = b[i];
  }
  
- /* { dg-final { scan-tree-dump-times "Function void omp declare reduction operator\\+" 1 "original" } } */
- /* { dg-final { scan-tree-dump-times "Function void omp declare reduction foo" 2 "original" } } */
  /* { dg-final { scan-tree-dump-times "pragma omp simd reduction\\(u\\) reduction\\(t\\) reduction\\(\\+:s\\) aligned\\(a:32\\)" 1 "original" } } */
  /* { dg-final { scan-tree-dump-times "pragma omp simd safelen\\(64\\)" 1 "original" } } */
  /* { dg-final { scan-tree-dump-not "omp parallel" "original" } } */
--- 36,41 ----
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/gomp/pr89796.C gcc-8.4.0/gcc/testsuite/g++.dg/gomp/pr89796.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/gomp/pr89796.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/gomp/pr89796.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,53 ----
+ // PR c++/89796
+ // { dg-do compile }
+ // { dg-additional-options "-Wunused-value" }
+ 
+ int
+ f1 (int &c)
+ {
+   int r;
+   #pragma omp atomic capture	// { dg-bogus "value computed is not used" }
+   { r = c; c++; }
+   return r;
+ }
+ 
+ template <int N>
+ int
+ f2 (int &c)
+ {
+   int r;
+   #pragma omp atomic capture	// { dg-bogus "value computed is not used" }
+   { r = c; c++; }
+   return r;
+ }
+ 
+ int
+ f3 (int &c)
+ {
+   return f2 <0> (c);
+ }
+ 
+ int
+ f4 (int *p)
+ {
+   int r;
+   #pragma omp atomic capture	// { dg-bogus "value computed is not used" }
+   { r = *p; (*p)++; }
+   return r;
+ }
+ 
+ template <int N>
+ int
+ f5 (int *p)
+ {
+   int r;
+   #pragma omp atomic capture	// { dg-bogus "value computed is not used" }
+   { r = *p; (*p)++; }
+   return r;
+ }
+ 
+ int
+ f6 (int *p)
+ {
+   return f5 <0> (p);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/ipa/pr88235.C gcc-8.4.0/gcc/testsuite/g++.dg/ipa/pr88235.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/ipa/pr88235.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/ipa/pr88235.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,55 ----
+ // { dg-do compile }
+ // { dg-options "-O1 -fdevirtualize -finline-small-functions -fipa-cp -fipa-cp-clone --param ipa-cp-eval-threshold=125 --param max-inline-insns-single=4" }
+ 
+ extern "C" int printf (const char *, ...);
+ enum E { vf_request, vf_event } want;
+ 
+ int errs = 0;
+ 
+ class ivResource {
+ public:
+   virtual ~ivResource () { }
+ };
+ 
+ class ivHandler   : public ivResource   {
+ public:
+   virtual void event() { }
+ };
+ 
+ class ivGlyph   : public ivResource   {
+ public:
+   virtual ~ivGlyph  () { }
+   virtual void request () {
+     if (want!=vf_request)
+       ++errs;
+   }
+ };
+ 
+ class ItemView : public ivGlyph, public ivHandler {
+ public:
+   virtual void event () {
+     if (want!=vf_event)
+       ++errs;
+   }
+ } a;
+ 
+ ivGlyph *bar() {
+   return &a;
+ }
+ 
+ ivHandler *bar2() {
+   return &a;
+ }
+ 
+ int main() {
+   want=vf_request;
+   bar()->request();
+   want=vf_event;
+   bar2()->event();
+   if (errs) {
+     printf("FAIL\n");
+     return 1;
+   }
+   printf("PASS\n");
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/ipa/pr89693.C gcc-8.4.0/gcc/testsuite/g++.dg/ipa/pr89693.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/ipa/pr89693.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/ipa/pr89693.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,52 ----
+ // Copyright (C) 2005 Free Software Foundation, Inc.
+ // Contributed by Nathan Sidwell 4 Apr 2005 <nathan@codesourcery.com>
+ // Re-purposed to check for re-rurgesnce of PR 89693 in 2019.
+ 
+ // { dg-do compile }
+ // { dg-options "-O3 -fno-ipa-icf-functions" }
+ 
+ // Origin: yanliu@ca.ibm.com
+ //         nathan@codesourcery.com
+ 
+ struct A {
+   virtual void One ();
+ };
+ struct B  {
+   virtual B *Two ();
+   virtual B &Three ();
+ };
+ 
+ struct C : A, B
+ {
+   virtual C *Two ();
+   virtual C &Three ();
+ };
+ void A::One () {}
+ B *B::Two()    {return this;}
+ B &B::Three()    {return *this;}
+ C *C::Two ()   {return 0;}
+ C &C::Three ()   {return *(C *)0;}
+ 
+ B *Foo (B *b)
+ {
+   return b->Two ();
+ }
+ 
+ B &Bar (B *b)
+ {
+   return b->Three ();
+ }
+ 
+ int main ()
+ {
+   C c;
+ 
+   /* We should not adjust a null pointer.  */
+   if (Foo (&c))
+     return 1;
+   /* But we should adjust a (bogus) null reference.  */
+   if (!&Bar (&c))
+     return 2;
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/lookup/missing-std-include-5.C gcc-8.4.0/gcc/testsuite/g++.dg/lookup/missing-std-include-5.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/lookup/missing-std-include-5.C	Fri Dec  1 20:19:13 2017
--- gcc-8.4.0/gcc/testsuite/g++.dg/lookup/missing-std-include-5.C	Wed Mar  4 08:30:01 2020
***************
*** 1,2 ****
--- 1,3 ----
+ // { dg-do compile { target c++14 } }
  using namespace std::complex_literals; // { dg-error "" }
  // { dg-message "#include <complex>" "" { target *-*-* } .-1 }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/lookup/missing-std-include-6.C gcc-8.4.0/gcc/testsuite/g++.dg/lookup/missing-std-include-6.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/lookup/missing-std-include-6.C	Fri Apr  6 17:36:33 2018
--- gcc-8.4.0/gcc/testsuite/g++.dg/lookup/missing-std-include-6.C	Wed Mar  4 08:30:01 2020
*************** void test_make_shared ()
*** 11,25 ****
    // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 }
  }
  
- template<class T>
- void test_make_unique ()
- {
-   auto p = std::make_unique<T>(); // { dg-error "'make_unique' is not a member of 'std'" }
-   // { dg-message "'#include <memory>'" "" { target *-*-* } .-1 }
-   // { dg-error "expected primary-expression before '>' token" "" { target *-*-* } .-2 }
-   // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 }
- }
- 
  std::shared_ptr<int> test_shared_ptr; // { dg-error "'shared_ptr' in namespace 'std' does not name a template type" }
  // { dg-message "'#include <memory>'" "" { target *-*-* } .-1 }
  
--- 11,16 ----
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/lookup/missing-std-include-8.C gcc-8.4.0/gcc/testsuite/g++.dg/lookup/missing-std-include-8.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/lookup/missing-std-include-8.C	Fri Apr  6 17:36:33 2018
--- gcc-8.4.0/gcc/testsuite/g++.dg/lookup/missing-std-include-8.C	Wed Mar  4 08:30:01 2020
*************** void test_make_shared ()
*** 13,18 ****
--- 13,27 ----
    // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 }
  }
  
+ template<class T>
+ void test_make_unique ()
+ {
+   std::make_unique<T>(); // { dg-error "'make_unique' is not a member of 'std'" }
+   // { dg-message "'std::make_unique' is only available from C\\+\\+14 onwards" "" { target *-*-* } .-1 }
+   // { dg-error "expected primary-expression before '>' token" "" { target *-*-* } .-2 }
+   // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 }
+ }
+ 
  void test_array ()
  {
    std::array a; // { dg-error "'array' is not a member of 'std'" }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/lookup/pr91826.C gcc-8.4.0/gcc/testsuite/g++.dg/lookup/pr91826.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/lookup/pr91826.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/lookup/pr91826.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,16 ----
+ // PR 91826 bogus error with aliased namespace
+ 
+ namespace N1 { class C1; }
+ namespace A1 = N1;
+ class A1::C1 {}; //Ok
+ 
+ namespace N2
+ {
+   namespace N { class C2; }
+   namespace A2 = N;
+   class A2::C2 {}; // { dg_bogus "does not enclose" }
+ }
+ 
+ namespace N3 { namespace N { class C3; } }
+ namespace A3 = N3::N;
+ class A3::C3 {}; //Ok
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/lto/pr89358_0.C gcc-8.4.0/gcc/testsuite/g++.dg/lto/pr89358_0.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/lto/pr89358_0.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/lto/pr89358_0.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-lto-do link } */
+ /* { dg-lto-options "-std=c++17"  } */
+ #include <map>
+ 
+ extern void test();
+ 
+ int main()
+ {
+         std::map<int, int> m;
+         test();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/lto/pr89358_1.C gcc-8.4.0/gcc/testsuite/g++.dg/lto/pr89358_1.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/lto/pr89358_1.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/lto/pr89358_1.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-options "-std=c++14"  } */
+ #include <map>
+ 
+ void test()
+ {
+         std::map<int, int> m;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/opt/pr90026.C gcc-8.4.0/gcc/testsuite/g++.dg/opt/pr90026.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/opt/pr90026.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/opt/pr90026.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,24 ----
+ // PR rtl-optimization/90026
+ // { dg-do compile }
+ // { dg-options "-fnon-call-exceptions -ftracer -O2 -w" }
+ 
+ typedef __SIZE_TYPE__ size_t;
+ struct S { int *b; ~S () { delete b; } };
+ void bar ();
+ char c[sizeof (int)];
+ 
+ void *
+ operator new (size_t, void *)
+ {
+   __builtin_unreachable ();
+ }
+ 
+ void
+ foo ()
+ {
+   S a;
+   if (a.b)
+     a.b = new int ();
+   bar ();
+   new (c) int ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/opt/pr90090.C gcc-8.4.0/gcc/testsuite/g++.dg/opt/pr90090.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/opt/pr90090.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/opt/pr90090.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,19 ----
+ // PR tree-optimization/90090
+ // { dg-do compile }
+ // { dg-options "-Ofast -fno-associative-math -fsignaling-nans -fno-tree-dce -fnon-call-exceptions" }
+ 
+ double bar (double, double, double, double, double);
+ double baz ();
+ 
+ double
+ foo (double a)
+ {
+   try
+     {
+       return bar (1.0/a, 2.0/a, 4.0/a, 8.0/a, 16.0/a);
+     }
+   catch (...)
+     {
+       return baz ();
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/opt/pr90187.C gcc-8.4.0/gcc/testsuite/g++.dg/opt/pr90187.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/opt/pr90187.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/opt/pr90187.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,15 ----
+ // PR target/90187
+ // { dg-do compile }
+ // { dg-options "-Ofast -ffloat-store" }
+ 
+ double a[64];
+ double *foo (void);
+ 
+ void
+ bar (int x, const double *y)
+ {
+   int i;
+   for (i = 0; i < x; i++)
+     if (y[i] < a[i])
+       a[i] = y[i];
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/opt/pr91838.C gcc-8.4.0/gcc/testsuite/g++.dg/opt/pr91838.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/opt/pr91838.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/opt/pr91838.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile { target c++11 } } */
+ /* { dg-additional-options "-O2 -Wno-psabi -w" } */
+ /* { dg-additional-options "-masm=att" { target i?86-*-* x86_64-*-* } } */
+ 
+ using T = unsigned char; // or ushort
+ using V [[gnu::vector_size(8)]] = T;
+ V f(V x) {
+   return x >> 8 * sizeof(T);
+ }
+ 
+ /* { dg-final { scan-assembler {pxor\s+%xmm0,\s+%xmm0} { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/other/i386-2.C gcc-8.4.0/gcc/testsuite/g++.dg/other/i386-2.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/other/i386-2.C	Mon Mar  5 14:37:54 2018
--- gcc-8.4.0/gcc/testsuite/g++.dg/other/i386-2.C	Wed Mar  4 08:30:01 2020
***************
*** 1,5 ****
  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
! /* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt  -mavx512dq -mavx512bw -mavx512vl -mavx512ifma -mavx512vbmi -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd" } */
  
  /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
     xopintrin.h, abmintrin.h, bmiintrin.h, tbmintrin.h, lwpintrin.h,
--- 1,5 ----
  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
! /* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt  -mavx512dq -mavx512bw -mavx512vl -mavx512ifma -mavx512vbmi -mavx512vbmi2 -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd" } */
  
  /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
     xopintrin.h, abmintrin.h, bmiintrin.h, tbmintrin.h, lwpintrin.h,
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/other/i386-3.C gcc-8.4.0/gcc/testsuite/g++.dg/other/i386-3.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/other/i386-3.C	Mon Mar  5 14:37:54 2018
--- gcc-8.4.0/gcc/testsuite/g++.dg/other/i386-3.C	Wed Mar  4 08:30:01 2020
***************
*** 1,5 ****
  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
! /* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt -mavx512dq -mavx512bw -mavx512vl -mavx512ifma -mavx512vbmi -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd" } */
  
  /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
     xopintrin.h, abmintrin.h, bmiintrin.h, tbmintrin.h, lwpintrin.h,
--- 1,5 ----
  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
! /* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt -mavx512dq -mavx512bw -mavx512vl -mavx512ifma -mavx512vbmi -mavx512vbmi2 -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd" } */
  
  /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
     xopintrin.h, abmintrin.h, bmiintrin.h, tbmintrin.h, lwpintrin.h,
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/other/pr88568.C gcc-8.4.0/gcc/testsuite/g++.dg/other/pr88568.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/other/pr88568.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/other/pr88568.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,13 ----
+ // PR c/88568
+ // { dg-do compile }
+ // { dg-require-dll "" }
+ 
+ struct S {
+   __attribute__((dllimport)) static const char foo[];
+ };
+ 
+ int
+ foo (int x)
+ {
+   return S::foo[x];
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/other/pr92201.C gcc-8.4.0/gcc/testsuite/g++.dg/other/pr92201.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/other/pr92201.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/other/pr92201.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/92201
+ 
+ int
+ foo (void (*p) ())
+ {
+   return (*reinterpret_cast<int (*)()> (p)) ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/overload/bit-field1.C gcc-8.4.0/gcc/testsuite/g++.dg/overload/bit-field1.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/overload/bit-field1.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/overload/bit-field1.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/92859
+ // { dg-do compile { target c++11 } }
+ 
+ void f(int) = delete;
+ 
+ struct ES { 
+   enum E { v }; 
+   friend void f(E) { }
+ };
+ 
+ struct S {
+   ES::E e : 1; 
+ };
+ 
+ int main() {
+   S s{}; 
+   f (s.e);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/overload/conv-op2.C gcc-8.4.0/gcc/testsuite/g++.dg/overload/conv-op2.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/overload/conv-op2.C	Thu Mar 22 03:53:19 2018
--- gcc-8.4.0/gcc/testsuite/g++.dg/overload/conv-op2.C	Wed Mar  4 08:30:01 2020
***************
*** 1,5 ****
  // PR c++/81311
! // { dg-do link }
  
  struct function
  {
--- 1,5 ----
  // PR c++/81311
! // { dg-do compile { target c++11 } }
  
  struct function
  {
*************** struct function
*** 8,19 ****
  
  struct ref
  {
!   operator function&() const;
  } r;
  
  struct val
  {
!   operator function() const;
  } v;
  
  int main()
--- 8,19 ----
  
  struct ref
  {
!   operator function&() const = delete;
  } r;
  
  struct val
  {
!   operator function() const = delete;
  } v;
  
  int main()
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/pch/pr90326.C gcc-8.4.0/gcc/testsuite/g++.dg/pch/pr90326.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/pch/pr90326.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/pch/pr90326.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,9 ----
+ #include "pr90326.H"
+ 
+ int main()
+ {
+   float f = __FLT_MAX__;
+   if (f == 0.0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/pch/pr90326.Hs gcc-8.4.0/gcc/testsuite/g++.dg/pch/pr90326.Hs
*** gcc-8.3.0/gcc/testsuite/g++.dg/pch/pr90326.Hs	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/pch/pr90326.Hs	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1 ----
+ // empty
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/pr71694.C gcc-8.4.0/gcc/testsuite/g++.dg/pr71694.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/pr71694.C	Mon Oct 30 11:04:49 2017
--- gcc-8.4.0/gcc/testsuite/g++.dg/pr71694.C	Wed Mar  4 08:30:01 2020
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fno-store-merging" } */
+ /* { dg-additional-options "-fno-common -mdynamic-no-pic" { target { ia32 && { x86_64-*-darwin* i?86-*-darwin* } } } } */
  
  struct B {
      B() {}
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/pr86747.C gcc-8.4.0/gcc/testsuite/g++.dg/pr86747.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/pr86747.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/pr86747.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,8 ----
+ // { dg-do compile }
+ 
+ template <typename T> class A {
+   template <void (A::*p)()> class C; // #1
+   template <void (A::*q)()> friend class C; // #2
+ };
+ 
+ A<double> a;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/pr87770.C gcc-8.4.0/gcc/testsuite/g++.dg/pr87770.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/pr87770.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/pr87770.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,11 ----
+ // { dg-do compile }
+ 
+ template <typename> struct d {
+   template <typename e> d(e);
+ };
+ template <> template <typename e> d<int>::d(e);
+ template <> template <typename e> d<int>::d(e) {
+   long g;
+   (void)g;
+ }
+ template d<int>::d(char);
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/pr91173.C gcc-8.4.0/gcc/testsuite/g++.dg/pr91173.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/pr91173.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/pr91173.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,45 ----
+ class a {
+   int b;
+   void *c;
+ 
+ public:
+   bool aa();
+   int &ab() {
+     if (aa()) {
+       void *d(c);
+       return static_cast<int *>(d)[b];
+     }
+     return *(int *)0;
+   }
+ };
+ typedef enum {E} e;
+ class f : public a {
+   int g;
+ 
+ public:
+   int ac() {
+     if (g)
+       return 1;
+     return ac();
+   }
+ };
+ int *ad;
+ struct h {
+   static int ae(e, int *m) {
+     f ag;
+     int *ah;
+     while (!0) {
+       ad = &ag.ab();
+       ah = ad + ag.ac();
+       while (ad < ah)
+         *m = *ad++;
+     }
+   }
+ };
+ template <class, class>
+ void i(int *, int *, int, int *, e n, int *o) {
+   h::ae(n, o);
+ }
+ int aq, ar, as, at, au;
+ void aw() { i<int, bool>(&aq, &ar, as, &at, (e)0, &au); }
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/pr92022.C gcc-8.4.0/gcc/testsuite/g++.dg/pr92022.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/pr92022.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/pr92022.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,13 ----
+ // { dg-do compile { target alpha*-*-* } }
+ // { dg-options "-O1 -g -fno-var-tracking -mcpu=ev4 -mieee" }
+ 
+ struct a {
+   a(long);
+ };
+ long b;
+ void c() {
+   a d(1);
+   double e = b;
+   for (; b;)
+     d = e;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/template/scope6.C gcc-8.4.0/gcc/testsuite/g++.dg/template/scope6.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/template/scope6.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/template/scope6.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/89831
+ 
+ struct Q { 
+     int operator[](int i) { return 0; }
+     int operator[](int i) const { return 0; }
+ };
+ 
+ struct Base {
+     Q x;
+ };
+ struct X : public Base {
+     template <typename T>
+     void f(T) const {
+         int q = Base::x[0];
+     }   
+ };
+ int main() { X().f(3); }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/pr77285-2.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/pr77285-2.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/pr77285-2.C	Fri Nov 18 21:56:50 2016
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/pr77285-2.C	Wed Mar  4 08:30:01 2020
***************
*** 3,9 ****
  // { dg-require-effective-target tls }
  // { dg-final { scan-assembler "_Z4var1B3tag" } }
  // { dg-final { scan-assembler "_Z4var2B3tag" } }
! // { dg-final { scan-assembler "_ZTH4var1B3tag" } }
  // { dg-final { scan-assembler "_ZTW4var1B3tag" } }
  
  struct __attribute__((abi_tag("tag"))) X { ~X () {} int i = 0; };
--- 3,9 ----
  // { dg-require-effective-target tls }
  // { dg-final { scan-assembler "_Z4var1B3tag" } }
  // { dg-final { scan-assembler "_Z4var2B3tag" } }
! // { dg-final { scan-assembler "_ZTH4var1B3tag" { xfail *-*-darwin* } } }
  // { dg-final { scan-assembler "_ZTW4var1B3tag" } }
  
  struct __attribute__((abi_tag("tag"))) X { ~X () {} int i = 0; };
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/pr85400.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/pr85400.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/pr85400.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/pr85400.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,24 ----
+ // PR c++/85400
+ // Testcase by Brian Vandenberg <phantall@gmail.com>
+ 
+ // { dg-do link { target c++11 } }
+ // { dg-require-effective-target fpic }
+ // { dg-require-effective-target shared }
+ // { dg-require-effective-target tls }
+ // { dg-options "-shared -fPIC -O" }
+ // { dg-add-options tls }
+ 
+ struct Test
+ {
+   int blah (int y)
+   {
+     thread_local int mything = 3;
+     mything = y > 0 ? y : mything;
+     return mything;
+   }
+ };
+ 
+ int stuff (Test& test, int y)
+ {
+   return test.blah(y);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local11.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local11.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local11.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local11.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,36 ----
+ // PR c++/60702
+ // { dg-do compile { target c++11 } }
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
+ // { dg-additional-options "-fdump-tree-gimple" }
+ // { dg-final { scan-tree-dump-times "_ZTW2s1" 2 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTW2s2" 2 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTW2s3" 2 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTW2s4" 2 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTWN1T2u1E" 2 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTWN1T2u2E" 2 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTWN1T2u3E" 2 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTWN1T2u4E" 2 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTWN1T2u5E" 2 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTWN1T2u6E" 2 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTWN1T2u7E" 2 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTWN1T2u8E" 2 "gimple" } }
+ 
+ #include "thread_local11.h"
+ 
+ void
+ foo ()
+ {
+   f1 ();
+   f2 ();
+   f3 ();
+   f4 ();
+   f5 ();
+   f6 ();
+   f7<0> ();
+   f8<0> ();
+   f9<0> ();
+   f10<0> ();
+   f11<0> ();
+   f12<0> ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local11.h gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local11.h
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local11.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local11.h	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,26 ----
+ // PR c++/60702
+ 
+ extern "C" void abort ();
+ struct S { S () { i = 42; }; int i; };
+ thread_local S s1, s2, s3, s4;
+ struct T { static thread_local S u1, u2, u3, u4, u5, u6, u7, u8; int i; } t;
+ thread_local S T::u1, T::u2, T::u3, T::u4, T::u5, T::u6, T::u7, T::u8;
+ 
+ S *f1 () { return &s1; }
+ int *f2 () { return &s2.i; }
+ S *f3 () { return &t.u1; }
+ int *f4 () { return &t.u2.i; }
+ S *f5 () { return &T::u3; }
+ int *f6 () { return &T::u4.i; }
+ template <int N>
+ S *f7 () { return &s3; }
+ template <int N>
+ int *f8 () { return &s4.i; }
+ template <int N>
+ S *f9 () { return &t.u5; }
+ template <int N>
+ int *f10 () { return &t.u6.i; }
+ template <int N>
+ S *f11 () { return &T::u7; }
+ template <int N>
+ int *f12 () { return &T::u8.i; }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local11a.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local11a.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local11a.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local11a.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,20 ----
+ // PR c++/60702
+ // { dg-do compile { target c++11 } }
+ // { dg-add-options tls }
+ // { dg-require-alias "" }
+ // { dg-require-effective-target tls_runtime }
+ // { dg-additional-options "-fdump-tree-gimple" }
+ // { dg-final { scan-tree-dump-times "_ZTH2s1" 1 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTH2s2" 1 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTH2s3" 1 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTH2s4" 1 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTHN1T2u1E" 1 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTHN1T2u2E" 1 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTHN1T2u3E" 1 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTHN1T2u4E" 1 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTHN1T2u5E" 1 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTHN1T2u6E" 1 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTHN1T2u7E" 1 "gimple" } }
+ // { dg-final { scan-tree-dump-times "_ZTHN1T2u8E" 1 "gimple" } }
+ 
+ #include "thread_local11.C"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12a.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12a.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12a.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12a.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/60702
+ // { dg-do run { target c++11 } }
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
+ 
+ #include "thread_local11.h"
+ 
+ int
+ main ()
+ {
+   if (f1 ()->i != 42) abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12b.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12b.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12b.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12b.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/60702
+ // { dg-do run { target c++11 } }
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
+ 
+ #include "thread_local11.h"
+ 
+ int
+ main ()
+ {
+   if (*f2 () != 42) abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12c.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12c.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12c.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12c.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/60702
+ // { dg-do run { target c++11 } }
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
+ 
+ #include "thread_local11.h"
+ 
+ int
+ main ()
+ {
+   if (f3 ()->i != 42) abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12d.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12d.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12d.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12d.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/60702
+ // { dg-do run { target c++11 } }
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
+ 
+ #include "thread_local11.h"
+ 
+ int
+ main ()
+ {
+   if (*f4 () != 42) abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12e.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12e.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12e.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12e.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/60702
+ // { dg-do run { target c++11 } }
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
+ 
+ #include "thread_local11.h"
+ 
+ int
+ main ()
+ {
+   if (f5 ()->i != 42) abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12f.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12f.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12f.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12f.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/60702
+ // { dg-do run { target c++11 } }
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
+ 
+ #include "thread_local11.h"
+ 
+ int
+ main ()
+ {
+   if (*f6 () != 42) abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12g.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12g.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12g.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12g.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/60702
+ // { dg-do run { target c++11 } }
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
+ 
+ #include "thread_local11.h"
+ 
+ int
+ main ()
+ {
+   if (f7<0> ()->i != 42) abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12h.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12h.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12h.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12h.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/60702
+ // { dg-do run { target c++11 } }
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
+ 
+ #include "thread_local11.h"
+ 
+ int
+ main ()
+ {
+   if (*f8<0> () != 42) abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12i.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12i.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12i.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12i.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/60702
+ // { dg-do run { target c++11 } }
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
+ 
+ #include "thread_local11.h"
+ 
+ int
+ main ()
+ {
+   if (f9<0> ()->i != 42) abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12j.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12j.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12j.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12j.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/60702
+ // { dg-do run { target c++11 } }
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
+ 
+ #include "thread_local11.h"
+ 
+ int
+ main ()
+ {
+   if (*f10<0> () != 42) abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12k.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12k.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12k.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12k.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/60702
+ // { dg-do run { target c++11 } }
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
+ 
+ #include "thread_local11.h"
+ 
+ int
+ main ()
+ {
+   if (f11<0> ()->i != 42) abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12l.C gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12l.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tls/thread_local12l.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tls/thread_local12l.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/60702
+ // { dg-do run { target c++11 } }
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
+ 
+ #include "thread_local11.h"
+ 
+ int
+ main ()
+ {
+   if (*f12<0> () != 42) abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/torture/pr89698.C gcc-8.4.0/gcc/testsuite/g++.dg/torture/pr89698.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/torture/pr89698.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/torture/pr89698.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do run } */
+ 
+ extern "C" void abort (void);
+ 
+ class A {
+     virtual void f(){};
+ public:
+     int x;
+     A(int in): x(in) {};
+ };
+ 
+ class B: public A {
+ public:
+     int y;
+     B(int in):A(in-1), y(in) {};
+ };
+ 
+ int test(void)
+ {
+   int res;
+   B b(2);
+   A* bp = &b;
+   void* vp = dynamic_cast<void*>(bp);
+   if (((A*)vp)->x == 1 && ((B*)vp)->y == 2)
+     return 1;
+   return 0;
+ }
+ int main() { if (test() != 1) abort (); return 0; }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/torture/pr90194.C gcc-8.4.0/gcc/testsuite/g++.dg/torture/pr90194.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/torture/pr90194.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/torture/pr90194.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,18 ----
+ // { dg-do compile }
+ // { dg-additional-options "-g" }
+ 
+ struct cb {
+     int yr;
+ };
+ 
+ void *
+ operator new (__SIZE_TYPE__, void *nq)
+ {
+   return nq;
+ }
+ 
+ void
+ af (int xn)
+ {
+   new (&xn) cb { };
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/torture/pr90313.cc gcc-8.4.0/gcc/testsuite/g++.dg/torture/pr90313.cc
*** gcc-8.3.0/gcc/testsuite/g++.dg/torture/pr90313.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/torture/pr90313.cc	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,33 ----
+ // { dg-do run }
+ 
+ #include <stddef.h>
+ 
+ namespace std {
+   template<typename T, size_t N> struct array {
+     T elems[N];
+     const T &operator[](size_t i) const { return elems[i]; }
+   };
+ }
+ 
+ using Coordinates = std::array<double, 3>;
+ 
+ Coordinates map(const Coordinates &c, size_t level)
+ {
+   Coordinates result{ c[1], c[2], c[0] };
+ 
+   if (level != 0)
+     result = map (result, level - 1);
+ 
+   return result;
+ }
+ 
+ int main()
+ {
+   Coordinates vecOfCoordinates = { 1.0, 2.0, 3.0 };
+ 
+   auto result = map(vecOfCoordinates, 1);
+   if (result[0] != 3 || result[1] != 1 || result[2] != 2)
+     __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/torture/pr91280.C gcc-8.4.0/gcc/testsuite/g++.dg/torture/pr91280.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/torture/pr91280.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/torture/pr91280.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,223 ----
+ // { dg-do compile }
+ 
+ enum { Aligned, RowMajor };
+ enum { ReadOnlyAccessors };
+ template <typename> struct K {
+   enum { value };
+ };
+ template <typename> struct traits;
+ template <typename T> struct traits<const T> : traits<T> {};
+ struct A {
+   enum { has_write_access, value };
+ };
+ template <typename, int n> class array {
+ public:
+   int operator[](unsigned long p1) { return values[p1]; }
+   int values[n];
+ };
+ template <typename> struct I;
+ template <typename, int, template <class> class = I> class M;
+ template <typename, int, int, typename> class J;
+ template <typename, int> class N;
+ template <typename, typename> class D;
+ template <typename, typename, typename, typename> class TensorContractionOp;
+ template <long, typename> class TensorChippingOp;
+ class C;
+ template <typename DenseIndex, int NumDims>
+ struct K<array<DenseIndex, NumDims>> {
+   static const long value = NumDims;
+ };
+ template <typename Scalar_, int NumIndices_, int Options_, typename IndexType_>
+ struct traits<J<Scalar_, NumIndices_, Options_, IndexType_>> {
+   typedef IndexType_ Index;
+ };
+ template <typename PlainObjectType, int Options_,
+           template <class> class MakePointer_>
+ struct traits<M<PlainObjectType, Options_, MakePointer_>>
+     : traits<PlainObjectType> {};
+ template <typename T> struct B { typedef T type; };
+ template <typename Derived> class N<Derived, ReadOnlyAccessors> {
+ public:
+   typedef typename traits<Derived>::Index Index;
+   D<int, Derived> m_fn1();
+   template <typename OtherDerived, typename Dimensions>
+   TensorContractionOp<Dimensions, Derived, const OtherDerived, int>
+       m_fn2(OtherDerived, Dimensions);
+   template <Index> TensorChippingOp<1, Derived> m_fn3(Index);
+ };
+ template <typename Derived, int = A::value>
+ class N : public N<Derived, ReadOnlyAccessors> {
+ public:
+   template <typename DeviceType> C m_fn4(DeviceType);
+ };
+ template <typename, typename> struct TensorEvaluator;
+ template <typename UnaryOp, typename ArgType, typename Device>
+ struct TensorEvaluator<const D<UnaryOp, ArgType>, Device> {
+   TensorEvaluator(D<UnaryOp, ArgType>, Device);
+ };
+ template <typename, typename> class D {
+ public:
+   typedef typename B<D>::type Nested;
+ };
+ template <typename Indices_, typename LeftArgType_, typename RightArgType_,
+           typename OutputKernelType_, typename Device_>
+ struct traits<
+     TensorEvaluator<const TensorContractionOp<Indices_, LeftArgType_,
+                                               RightArgType_, OutputKernelType_>,
+                     Device_>> {
+   typedef Indices_ Indices;
+   typedef LeftArgType_ LeftArgType;
+   typedef RightArgType_ RightArgType;
+   typedef OutputKernelType_ OutputKernelType;
+   typedef Device_ Device;
+ };
+ template <typename, typename LhsXprType, typename RhsXprType, typename>
+ class TensorContractionOp {
+ public:
+   typedef typename B<TensorContractionOp>::type Nested;
+   typename LhsXprType::Nested m_fn5();
+   typename RhsXprType::Nested m_fn6();
+ };
+ template <typename Derived> struct TensorContractionEvaluatorBase {
+   typedef typename traits<Derived>::LeftArgType LeftArgType;
+   typedef typename traits<Derived>::RightArgType RightArgType;
+   typedef typename traits<Derived>::Device Device;
+   TensorContractionEvaluatorBase(
+       TensorContractionOp<typename traits<Derived>::Indices, LeftArgType,
+                           RightArgType,
+                           typename traits<Derived>::OutputKernelType>
+           p1,
+       Device p2)
+       : m_leftImpl(p1.m_fn6(), p2), m_rightImpl(p1.m_fn5(), p2) {
+     long nocontract_idx;
+     for (int i;; i++) {
+       bool contracting;
+       if (contracting) {
+         if (nocontract_idx < K<int>::value)
+           m_j_size = m_j_strides[nocontract_idx];
+         nocontract_idx++;
+       }
+     }
+   }
+   array<long, 1> m_j_strides;
+   long m_j_size;
+   TensorEvaluator<RightArgType, Device> m_leftImpl;
+   TensorEvaluator<LeftArgType, Device> m_rightImpl;
+ };
+ template <typename Indices, typename LeftArgType, typename RightArgType,
+           typename OutputKernelType, typename Device>
+ struct TensorEvaluator<
+     const TensorContractionOp<Indices, LeftArgType, RightArgType,
+                               OutputKernelType>,
+     Device>
+     : TensorContractionEvaluatorBase<TensorEvaluator<
+           const TensorContractionOp<Indices, LeftArgType, RightArgType,
+                                     OutputKernelType>,
+           Device>> {
+   typedef TensorEvaluator Self;
+   typedef TensorContractionEvaluatorBase<Self> Base;
+   TensorEvaluator(
+       TensorContractionOp<Indices, LeftArgType, RightArgType, OutputKernelType>
+           p1,
+       Device p2)
+       : Base(p1, p2) {}
+ };
+ template <long DimId, typename XprType>
+ struct traits<TensorChippingOp<DimId, XprType>> : traits<XprType> {};
+ template <long, typename XprType>
+ class TensorChippingOp : public N<TensorChippingOp<1, XprType>> {
+ public:
+   typedef typename B<TensorChippingOp>::type Nested;
+ };
+ template <long DimId, typename ArgType, typename Device>
+ struct TensorEvaluator<const TensorChippingOp<DimId, ArgType>, Device> {
+   static const int NumInputDims = K<typename ArgType::Dimensions>::value;
+   array<long, NumInputDims> m_dimensions;
+ };
+ template <long DimId, typename ArgType, typename Device>
+ struct TensorEvaluator<TensorChippingOp<DimId, ArgType>, Device>
+     : TensorEvaluator<const TensorChippingOp<1, ArgType>, Device> {
+   TensorEvaluator(TensorChippingOp<DimId, ArgType>, Device);
+ };
+ template <typename, typename RhsXprType> class TensorAssignOp {
+ public:
+   TensorAssignOp(TensorChippingOp<0, const M<J<int, 3, 1, int>, 1>>,
+                  RhsXprType);
+   TensorChippingOp<0, const M<J<int, 3, 1, int>, 1>> m_fn7();
+   typename RhsXprType::Nested m_fn8();
+ };
+ template <typename LeftArgType, typename RightArgType, typename Device>
+ struct TensorEvaluator<const TensorAssignOp<LeftArgType, RightArgType>,
+                        Device> {
+   TensorEvaluator(TensorAssignOp<LeftArgType, RightArgType> p1, Device p2)
+       : m_leftImpl(p1.m_fn7(), p2), m_rightImpl(p1.m_fn8(), p2) {}
+   TensorEvaluator<LeftArgType, Device> m_leftImpl;
+   TensorEvaluator<RightArgType, Device> m_rightImpl;
+ };
+ template <typename Expression> class F {
+ public:
+   static void m_fn9(Expression p1) {
+     int device;
+     TensorEvaluator<Expression, int>(p1, device);
+   }
+ };
+ class C {
+ public:
+   void
+   operator=(TensorContractionOp<array<int, 1>,
+                                 TensorChippingOp<1, M<J<float, 3, 1, int>, 0>>,
+                                 const D<int, M<J<float, 3, 1, int>, 0>>, int>
+                 p1) {
+     TensorAssignOp<
+         TensorChippingOp<0, const M<J<int, 3, 1, int>, 1>>,
+         const TensorContractionOp<
+             array<int, 1>, TensorChippingOp<1, M<J<float, 3, 1, int>, 0>>,
+             const D<int, M<J<float, 3, 1, int>, 0>>, int>>
+         assign(m_expression, p1);
+     F<const TensorAssignOp<
+         TensorChippingOp<0, const M<J<int, 3, 1, int>, 1>>,
+         const TensorContractionOp<
+             array<int, 1>, TensorChippingOp<1, M<J<float, 3, 1, int>, 0>>,
+             const D<int, M<J<float, 3, 1, int>, 0>>, int>>>::m_fn9(assign);
+   }
+   TensorChippingOp<0, const M<J<int, 3, 1, int>, 1>> m_expression;
+ };
+ template <typename, int NumIndices_, int, typename> class J {
+ public:
+   typedef array<long, NumIndices_> Dimensions;
+ };
+ template <typename PlainObjectType, int Options_, template <class> class>
+ class M : public N<M<PlainObjectType, Options_>> {
+ public:
+   typedef typename PlainObjectType::Dimensions Dimensions;
+ };
+ template <int NDIMS> struct TTypes {
+   typedef M<J<float, NDIMS, RowMajor, int>, Aligned> ConstTensor;
+ };
+ class L {
+ public:
+   template <typename, long NDIMS> typename TTypes<NDIMS>::ConstTensor m_fn10();
+ };
+ class H {
+ public:
+   H(int *);
+ };
+ class G {
+ public:
+   G(H *(int *));
+ };
+ int Run_d;
+ class O : H {
+ public:
+   int BatchMatMul_context;
+   O() : H(&BatchMatMul_context) {
+     L out, in_y, in_x;
+     auto Tx = in_x.m_fn10<float, 3>(), Ty = in_y.m_fn10<float, 3>(),
+          Tz = out.m_fn10<float, 3>(), z = Tz;
+     array<int, 1> contract_pairs;
+     auto x = Tx.m_fn3<0>(0);
+     auto y = Ty.m_fn1();
+     z.m_fn4(Run_d) = x.m_fn2(y, contract_pairs);
+   }
+ };
+ G registrar__body__0__object([](int *) -> H * { O(); return 0; });
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/torture/pr91355.C gcc-8.4.0/gcc/testsuite/g++.dg/torture/pr91355.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/torture/pr91355.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/torture/pr91355.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,28 ----
+ // PR tree-optimization/91355
+ // { dg-do run }
+ // { dg-options "-std=c++14" }
+ 
+ unsigned int d = 0;
+ 
+ struct S {
+   S () { d++; }
+   S (const S &) { d++; }
+   ~S () { d--; }
+ };
+ 
+ void
+ foo (int i) throw (int) // { dg-warning "dynamic exception specifications are deprecated" }
+ {
+   if (i == 0)
+     throw 3;
+   S d;
+   throw 3;
+ }
+ 
+ int
+ main ()
+ {
+   try { foo (1); } catch (...) {}
+   if (d)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/torture/pr92384.C gcc-8.4.0/gcc/testsuite/g++.dg/torture/pr92384.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/torture/pr92384.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/torture/pr92384.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,38 ----
+ // PR c++/92384
+ // { dg-do run }
+ 
+ struct S {};
+ struct T : public S { S a, b, c, d, e, f, g, h, i, j, k, l, m; };
+ struct U { long long a, b, c; };
+ 
+ U
+ foo (S, S, S, T, T, T, U g)
+ {
+   return g;
+ }
+ 
+ __attribute__((noipa)) bool
+ bar (S a, S b, S c, T d, T e, T f, U g, void **h)
+ {
+   h[0] = (void *) &a;
+   h[1] = (void *) &b;
+   h[2] = (void *) &c;
+   h[3] = (void *) &d;
+   h[4] = (void *) &e;
+   h[5] = (void *) &f;
+   h[6] = (void *) &g;
+   asm volatile ("" : : "r" (h) : "memory");
+   return (h[0] != h[1] && h[1] != h[2] && h[2] != h[3]
+ 	  && h[3] != h[4] && h[4] != h[5] && h[5] != h[6]);
+ }
+ 
+ int
+ main ()
+ {
+   S a;
+   T b;
+   U c = { 1, 2, 3 };
+   void *d[7];
+   if (!bar (a, a, a, b, b, b, c, d))
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/torture/pr93246.C gcc-8.4.0/gcc/testsuite/g++.dg/torture/pr93246.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/torture/pr93246.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/torture/pr93246.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,31 ----
+ // { dg-do run }
+ // { dg-additional-options "-fstrict-aliasing" }
+ 
+ template <typename = void> struct Optional {
+   auto is_present() const { const bool &p = inner.present; return p; }
+   auto set_present() { if (not is_present()) inner.present = true; }
+   struct InnerType {
+     bool present = false;
+     char padding[1] = {0};
+   };
+   using inner_t = InnerType;
+   inner_t inner = {};
+ };
+ 
+ template <typename WrappedType> struct Wrapper {
+   auto operator-> () { return value; }
+   WrappedType *value;
+ };
+ 
+ void __attribute__((noipa)) foo(Optional<>& x) {}
+ 
+ int main()
+ {
+   Optional<> buf{};
+   foo(buf);
+   Wrapper<Optional<>> wo = {&buf};
+   wo->set_present();
+   auto x = wo->is_present();
+   if (!x)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tree-prof/devirt.C gcc-8.4.0/gcc/testsuite/g++.dg/tree-prof/devirt.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tree-prof/devirt.C	Thu Jan  3 08:49:04 2019
--- gcc-8.4.0/gcc/testsuite/g++.dg/tree-prof/devirt.C	Wed Mar  4 08:30:01 2020
***************
*** 1,5 ****
  /* PR ipa/88561 */
! /* { dg-options "-O3 -fdump-tree-dom3-details" } */
  
  struct nsISupports
  {
--- 1,5 ----
  /* PR ipa/88561 */
! /* { dg-options "-O3 -fdump-tree-tracer-details -fdump-tree-dom3-details" } */
  
  struct nsISupports
  {
*************** main ()
*** 121,126 ****
      __builtin_abort ();
  }
  
! /* { dg-final-use-not-autofdo { scan-tree-dump-times "folding virtual function call to virtual unsigned int mozPersonalDictionary::_ZThn16" 1 "dom3" { target { lp64 || llp64 } } } } */
! /* { dg-final-use-not-autofdo { scan-tree-dump-times "folding virtual function call to virtual unsigned int mozPersonalDictionary::_ZThn8" 1 "dom3" { target ilp32 } } } */
! /* { dg-final-use-not-autofdo { scan-tree-dump-times "folding virtual function call to virtual unsigned int mozPersonalDictionary::AddRef" 1 "dom3" } } */
--- 121,126 ----
      __builtin_abort ();
  }
  
! /* { dg-final-use-not-autofdo { scan-tree-dump-times "folding virtual function call to virtual unsigned int mozPersonalDictionary::_ZThn16" 1 "tracer" { target { lp64 || llp64 } } } } */
! /* { dg-final-use-not-autofdo { scan-tree-dump-times "folding virtual function call to virtual unsigned int mozPersonalDictionary::_ZThn8" 1 "tracer" { target ilp32 } } } */
! /* { dg-final-use-not-autofdo { scan-tree-dump-times "folding virtual function call to virtual unsigned int mozPersonalDictionary::AddRef" 1 "tracer" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tree-ssa/pr87008.C gcc-8.4.0/gcc/testsuite/g++.dg/tree-ssa/pr87008.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tree-ssa/pr87008.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tree-ssa/pr87008.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ extern void dontcallthis();
+ 
+ struct A { long a, b; };
+ struct B : A {};
+ template<class T>void cp(T&a,T const&b){a=b;}
+ long f(B x){
+   B y; cp<A>(y,x);
+   B z; cp<A>(z,x);
+   if (y.a - z.a)
+     dontcallthis ();
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "dontcallthis" "optimized" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/tree-ssa/tail-call-1.C gcc-8.4.0/gcc/testsuite/g++.dg/tree-ssa/tail-call-1.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/tree-ssa/tail-call-1.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/tree-ssa/tail-call-1.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/82081
+ // { dg-do compile { target c++11 } }
+ // { dg-additional-options "-O2 -fdump-tree-optimized" }
+ // { dg-final { scan-tree-dump-not "tail call" "optimized" } }
+ 
+ int g(int) ;
+ 
+ int f() noexcept {
+     int i = 42, j = 43;
+     return g(i+j);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/ubsan/vptr-14.C gcc-8.4.0/gcc/testsuite/g++.dg/ubsan/vptr-14.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/ubsan/vptr-14.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/ubsan/vptr-14.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,18 ----
+ // PR sanitizer/89869
+ // { dg-do run }
+ // { dg-options "-fsanitize=vptr -fno-sanitize-recover=vptr" }
+ 
+ struct S { S *s = 0; virtual ~S () {} };
+ 
+ void
+ foo (S *x, S *y)
+ {
+   (x->s ? y : x) = x->s;
+ }
+ 
+ int
+ main ()
+ {
+   S a;
+   foo (&a, 0);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/g++.dg/warn/conv5.C gcc-8.4.0/gcc/testsuite/g++.dg/warn/conv5.C
*** gcc-8.3.0/gcc/testsuite/g++.dg/warn/conv5.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/g++.dg/warn/conv5.C	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/89876
+ // { dg-do compile { target c++11 } }
+ // { dg-prune-output "sorry" }
+ 
+ template <typename T>
+ T f (T, char*);
+ 
+ template <typename T>
+ decltype (f (T (), "")) g (T) { return ""; } // { dg-error "invalid conversion" }
+ 
+ void h () { g (0); }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/20191108-1.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/20191108-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/20191108-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/20191108-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,14 ----
+ /* PR target/92095 */
+ /* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */
+ 
+ typedef union {
+   double a;
+   int b[2];
+ } c;
+ 
+ double d(int e)
+ {
+   c f;
+   (&f)->b[0] = 15728640;
+   return e ? -(&f)->a : (&f)->a;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr72802.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr72802.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr72802.c	Mon Aug  8 09:06:49 2016
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr72802.c	Wed Mar  4 08:30:01 2020
***************
*** 1,3 ****
--- 1,4 ----
+ /* { dg-skip-if "see PR trail" { *-*-darwin* } } */
  static a[];
  static b, h, m, n, o, p, q, t, u, v, t5, t6, t16, t17, t18, t25;
  c;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89412.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89412.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89412.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89412.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,16 ----
+ /* PR middle-end/89412 */
+ 
+ struct S { double a, b; } d;
+ int e;
+ double f;
+ 
+ void
+ foo ()
+ {
+   _Complex double h;
+   while (e)
+     {
+       f = h;
+       *(struct S *) &h = d;
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89655.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89655.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89655.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89655.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,15 ----
+ /* PR middle-end/89655 */
+ 
+ int a, b, d;
+ char *c;
+ 
+ void
+ foo (void)
+ {
+   int f = a;
+   for (;;)
+     {
+       for (f = 0; f < (a > 3 ? : a); f++)
+ 	b = c[f] ? c[(f + 2 > a - 1 ? a - 1 : 2) * d] : 0;
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89663-1.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89663-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89663-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89663-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,81 ----
+ /* PR middle-end/89663 */
+ 
+ int irint ();
+ long lrint ();
+ long long llrint ();
+ int iround ();
+ long lround ();
+ long long llround ();
+ int iceil ();
+ long lceil ();
+ long long llceil ();
+ int ifloor ();
+ long lfloor ();
+ long long llfloor ();
+ int irintf ();
+ long lrintf ();
+ long long llrintf ();
+ int iroundf ();
+ long lroundf ();
+ long long llroundf ();
+ int iceilf ();
+ long lceilf ();
+ long long llceilf ();
+ int ifloorf ();
+ long lfloorf ();
+ long long llfloorf ();
+ int irintl ();
+ long lrintl ();
+ long long llrintl ();
+ int iroundl ();
+ long lroundl ();
+ long long llroundl ();
+ int iceill ();
+ long lceill ();
+ long long llceill ();
+ int ifloorl ();
+ long lfloorl ();
+ long long llfloorl ();
+ 
+ void
+ foo (long long *p)
+ {
+   int n = 0;
+ #define T(f) p[n++] = f (1);
+   T (irint)
+   T (lrint)
+   T (llrint)
+   T (iround)
+   T (lround)
+   T (llround)
+   T (iceil)
+   T (lceil)
+   T (llceil)
+   T (ifloor)
+   T (lfloor)
+   T (llfloor)
+   T (irintf)
+   T (lrintf)
+   T (llrintf)
+   T (iroundf)
+   T (lroundf)
+   T (llroundf)
+   T (iceilf)
+   T (lceilf)
+   T (llceilf)
+   T (ifloorf)
+   T (lfloorf)
+   T (llfloorf)
+   T (irintl)
+   T (lrintl)
+   T (llrintl)
+   T (iroundl)
+   T (lroundl)
+   T (llroundl)
+   T (iceill)
+   T (lceill)
+   T (llceill)
+   T (ifloorl)
+   T (lfloorl)
+   T (llfloorl)
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,82 ----
+ /* PR middle-end/89663 */
+ 
+ int irint (double);
+ long lrint (double);
+ long long llrint (double);
+ int iround (double);
+ long lround (double);
+ long long llround (double);
+ int iceil (double);
+ long lceil (double);
+ long long llceil (double);
+ int ifloor (double);
+ long lfloor (double);
+ long long llfloor (double);
+ int irintf (float);
+ long lrintf (float);
+ long long llrintf (float);
+ int iroundf (float);
+ long lroundf (float);
+ long long llroundf (float);
+ int iceilf (float);
+ long lceilf (float);
+ long long llceilf (float);
+ int ifloorf (float);
+ long lfloorf (float);
+ long long llfloorf (float);
+ int irintl (long double);
+ long lrintl (long double);
+ long long llrintl (long double);
+ int iroundl (long double);
+ long lroundl (long double);
+ long long llroundl (long double);
+ int iceill (long double);
+ long lceill (long double);
+ long long llceill (long double);
+ int ifloorl (long double);
+ long lfloorl (long double);
+ long long llfloorl (long double);
+ 
+ void
+ foo (long long *p)
+ {
+   int (*fn) (int);
+   int n = 0;
+ #define T(f) fn = (int (*) (int)) f; p[n++] = fn (1);
+   T (irint)
+   T (lrint)
+   T (llrint)
+   T (iround)
+   T (lround)
+   T (llround)
+   T (iceil)
+   T (lceil)
+   T (llceil)
+   T (ifloor)
+   T (lfloor)
+   T (llfloor)
+   T (irintf)
+   T (lrintf)
+   T (llrintf)
+   T (iroundf)
+   T (lroundf)
+   T (llroundf)
+   T (iceilf)
+   T (lceilf)
+   T (llceilf)
+   T (ifloorf)
+   T (lfloorf)
+   T (llfloorf)
+   T (irintl)
+   T (lrintl)
+   T (llrintl)
+   T (iroundl)
+   T (lroundl)
+   T (llroundl)
+   T (iceill)
+   T (lceill)
+   T (llceill)
+   T (ifloorl)
+   T (lfloorl)
+   T (llfloorl)
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89703-1.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89703-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89703-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89703-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,13 ----
+ /* PR tree-optimization/89703 */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ extern char *strlen (const char *);
+ extern char *strnlen (const char *, size_t);
+ extern char c[2];
+ 
+ void
+ foo (char **q)
+ {
+   q[0] = strlen (c);
+   q[1] = strnlen (c, 2);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89703-2.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89703-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89703-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89703-2.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,13 ----
+ /* PR tree-optimization/89703 */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ extern void *memcpy (void *, const void *, size_t);
+ extern char *strlen (const char *);
+ extern char c[2];
+ 
+ void
+ foo (char **q)
+ {
+   memcpy (c, "a", 2);
+   q[0] = strlen (c);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89998-1.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89998-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89998-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89998-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,42 ----
+ /* PR tree-optimization/89998 */
+ 
+ unsigned int sprintf (char *str, const char *fmt, ...);
+ unsigned int snprintf (char *str, __SIZE_TYPE__ len, const char *fmt, ...);
+ 
+ int
+ f1 (char *s)
+ {
+   return sprintf (s, "foo");
+ }
+ 
+ int
+ f2 (char *s)
+ {
+   return sprintf (s, "%d", 123);
+ }
+ 
+ int
+ f3 (int *p, char *s)
+ {
+   const char *t = "bar";
+   return sprintf (s, "%s", t);
+ }
+ 
+ int
+ f4 (char *s)
+ {
+   return snprintf (s, 8, "foo");
+ }
+ 
+ int
+ f5 (char *s)
+ {
+   return snprintf (s, 8, "%d", 123);
+ }
+ 
+ int
+ f6 (int *p, char *s)
+ {
+   const char *t = "bar";
+   return snprintf (s, 8, "%s", t);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89998-2.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89998-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr89998-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr89998-2.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,4 ----
+ /* PR tree-optimization/89998 */
+ /* { dg-additional-options "-fno-printf-return-value" } */
+ 
+ #include "pr89998-1.c"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr90139.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr90139.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr90139.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr90139.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,20 ----
+ /* PR middle-end/90139 */
+ 
+ typedef float __attribute__((vector_size (sizeof (float)))) V;
+ void bar (int, V *);
+ int l;
+ 
+ void
+ foo (void)
+ {
+   V n, b, o;
+   while (1)
+     switch (l)
+       {
+       case 0:
+ 	o = n;
+ 	n = b;
+ 	b = o;
+ 	bar (1, &o);
+       }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr90840.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr90840.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr90840.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr90840.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,19 ----
+ /* PR middle-end/90840 */
+ struct S { long long a; int b; };
+ struct S foo (void);
+ struct __attribute__((packed)) T { long long a; char b; };
+ struct T baz (void);
+ 
+ void
+ bar (void)
+ {
+   _Complex long double c;
+   *(struct S *) &c = foo ();
+ }
+ 
+ void
+ qux (void)
+ {
+   _Complex long double c;
+   *(struct T *) &c = baz ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr91001.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr91001.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr91001.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr91001.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,31 ----
+ /* PR middle-end/91001 */
+ /* PR middle-end/91105 */
+ /* PR middle-end/91106 */
+ 
+ struct __attribute__((packed)) S { short b; char c; };
+ struct T { short b, c, d; };
+ struct __attribute__((packed)) R { int b; char c; };
+ union __attribute__((aligned(128), transparent_union)) U { struct S c; } u;
+ union __attribute__((aligned(32), transparent_union)) V { struct T c; } v;
+ union __attribute__((aligned(32), transparent_union)) W { struct R c; } w;
+ void foo (union U);
+ void bar (union V);
+ void baz (union W);
+ 
+ void
+ qux (void)
+ {
+   foo (u);
+ }
+ 
+ void
+ quux (void)
+ {
+   bar (v);
+ }
+ 
+ void
+ corge (void)
+ {
+   baz (w);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr92056.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr92056.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr92056.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr92056.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,18 ----
+ /* PR tree-optimization/92056 */
+ 
+ const char *d;
+ 
+ void
+ foo (int c, char *e, const char *a, const char *b)
+ {
+   switch (c)
+     {
+     case 33:
+       for (;; d++)
+         if (__builtin_strcmp (b ? : "", d))
+           return;
+       break;
+     case 4:
+       __builtin_sprintf (e, a);
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr93333.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr93333.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr93333.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr93333.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,10 ----
+ /* PR target/93333 */
+ 
+ unsigned
+ foo (int b, int c, int d, unsigned long e, int x, int y, int g, int h,
+      unsigned i)
+ {
+   e >>= b;
+   i >>= e & 31;
+   return i & 1;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr93348-1.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr93348-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr93348-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr93348-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,5 ----
+ int
+ ya (void)
+ {
+   return (long int) (1 / 0);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr93505.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr93505.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/compile/pr93505.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/compile/pr93505.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,15 ----
+ /* PR middle-end/93505 */
+ 
+ unsigned a;
+ 
+ unsigned
+ foo (unsigned x)
+ {
+   unsigned int y = 32 - __builtin_bswap64 (-a);
+   /* This would be UB (x << 32) at runtime.  Ensure we don't
+      invoke UB in the compiler because of that (visible with
+      bootstrap-ubsan).  */
+   x = x << y | x >> (-y & 31);
+   x >>= 31;
+   return x;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/20190228-1.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/20190228-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/20190228-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/20190228-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,16 ----
+ /* PR tree-optimization/89536 */
+ /* Testcase by Zhendong Su <su@cs.ucdavis.edu> */
+ 
+ int a = 1;
+ 
+ int main (void)
+ {
+   a = ~(a && 1); 
+   if (a < -1)
+     a = ~a;
+   
+   if (!a)
+     __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/20190820-1.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/20190820-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/20190820-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/20190820-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,111 ----
+ /* PR rtl-optimization/91347 */
+ /* Reported by John David Anglin <danglin@gcc.gnu.org> */
+ 
+ typedef unsigned short __u16;
+ typedef __signed__ int __s32;
+ typedef unsigned int __u32;
+ typedef __signed__ long long __s64;
+ typedef unsigned long long __u64;
+ typedef __u16 u16;
+ typedef __s32 s32;
+ typedef __u32 u32;
+ typedef __u64 u64;
+ typedef _Bool bool;
+ typedef s32 int32_t;
+ typedef u32 uint32_t;
+ typedef u64 uint64_t;
+ 
+ char hex_asc_upper[16];
+ u16 decpair[100];
+ 
+ static __attribute__ ((noipa)) void
+ put_dec_full4 (char *buf, unsigned r)
+ {
+  unsigned q;
+  q = (r * 0x147b) >> 19;
+  *((u16 *)buf) = decpair[r - 100*q];
+  buf += 2;
+  *((u16 *)buf) = decpair[q];
+ }
+ 
+ static __attribute__ ((noipa)) unsigned
+ put_dec_helper4 (char *buf, unsigned x)
+ {
+   uint32_t q = (x * (uint64_t)0x346DC5D7) >> 43;
+   put_dec_full4(buf, x - q * 10000);
+   return q;
+ }
+ 
+ static __attribute__ ((noipa)) char *
+ put_dec (char *buf, unsigned long long n)
+ {
+  uint32_t d3, d2, d1, q, h;
+  d1 = ((uint32_t)n >> 16);
+  h = (n >> 32);
+  d2 = (h ) & 0xffff;
+  d3 = (h >> 16);
+  q = 656 * d3 + 7296 * d2 + 5536 * d1 + ((uint32_t)n & 0xffff);
+  q = put_dec_helper4(buf, q);
+  q += 7671 * d3 + 9496 * d2 + 6 * d1;
+  q = put_dec_helper4(buf+4, q);
+  q += 4749 * d3 + 42 * d2;
+  q = put_dec_helper4(buf+8, q);
+  return buf;
+ }
+ 
+ struct printf_spec {
+  unsigned int type:8;
+  signed int field_width:24;
+  unsigned int flags:8;
+  unsigned int base:8;
+  signed int precision:16;
+ } __attribute__((__packed__));
+ 
+ static __attribute__ ((noipa)) char *
+ number (char *buf, char *end, unsigned long long num, struct printf_spec spec)
+ {
+ 
+  char tmp[3 * sizeof(num)] __attribute__((__aligned__(2)));
+  char sign;
+  char locase;
+  int need_pfx = ((spec.flags & 64) && spec.base != 10);
+  int i;
+  bool is_zero = num == 0LL;
+  int field_width = spec.field_width;
+  int precision = spec.precision;
+ 
+  i = 0;
+  if (num < spec.base)
+   tmp[i++] = hex_asc_upper[num] | locase;
+  else if (spec.base != 10) {
+   int mask = spec.base - 1;
+   int shift = 3;
+   if (spec.base == 16)
+    shift = 4;
+   else
+     __builtin_abort ();
+   do {
+    tmp[i++] = (hex_asc_upper[((unsigned char)num) & mask] | locase);
+    num >>= shift;
+   } while (num);
+  } else {
+   i = put_dec(tmp, num) - tmp;
+  }
+  return buf;
+ }
+ 
+ static __attribute__ ((noipa)) char *
+ pointer_string (char *buf, char *end, const void *ptr, struct printf_spec spec)
+ {
+  spec.base = 16;
+  spec.flags = 0;
+  return number(buf, end, 100, spec);
+ }
+ 
+ int
+ main (void)
+ {
+   struct printf_spec spec;
+   char *s = pointer_string (0, 0, 0, spec);
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/20190901-1.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/20190901-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/20190901-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/20190901-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,36 ----
+ /* PR target/91472 */
+ /* Reported by John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> */
+ 
+ typedef unsigned int gmp_uint_least32_t;
+ 
+ union ieee_double_extract
+ {
+   struct
+     {
+       gmp_uint_least32_t sig:1;
+       gmp_uint_least32_t exp:11;
+       gmp_uint_least32_t manh:20;
+       gmp_uint_least32_t manl:32;
+     } s;
+   double d;
+ };
+ 
+ double __attribute__((noipa))
+ tests_infinity_d (void)
+ {
+   union ieee_double_extract x;
+   x.s.exp = 2047;
+   x.s.manl = 0;
+   x.s.manh = 0;
+   x.s.sig = 0;
+   return x.d;
+ }
+ 
+ int
+ main (void)
+ {
+   double x = tests_infinity_d ();
+   if (x == 0.0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/20191023-1.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/20191023-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/20191023-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/20191023-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,73 ----
+ /* PR tree-optimization/92131 */
+ /* Testcase by Armin Rigo <arigo@tunes.org> */
+ 
+ long b, c, d, e, f, i;
+ char g, h, j, k;
+ int *aa;
+ 
+ static void error (void) __attribute__((noipa));
+ static void error (void) { __builtin_abort(); }
+ 
+ static void see_me_here (void) __attribute__((noipa));
+ static void see_me_here (void) {}
+ 
+ static void aaa (void) __attribute__((noipa));
+ static void aaa (void) {}
+ 
+ static void a (void) __attribute__((noipa));
+ static void a (void) {
+   long am, ao;
+   if (aa == 0) {
+     aaa();
+     if (j)
+       goto ay;
+   }
+   return;
+ ay:
+   aaa();
+   if (k) {
+     aaa();
+     goto az;
+   }
+   return;
+ az:
+   if (i)
+     if (g)
+       if (h)
+         if (e)
+           goto bd;
+   return;
+ bd:
+   am = 0;
+   while (am < e) {
+     switch (c) {
+     case 8:
+       goto bh;
+     case 4:
+       return;
+     }
+   bh:
+     if (am >= 0)
+       b = -am;
+     ao = am + b;
+     f = ao & 7;
+     if (f == 0)
+       see_me_here();
+     if (ao >= 0)
+       am++;
+     else
+       error();
+   }
+ }
+ 
+ int main (void)
+ {
+     j++;
+     k++;
+     i++;
+     g++;
+     h++;
+     e = 1;
+     a();
+     return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp	Wed Mar  4 08:30:01 2020
*************** load_lib c-torture.exp
*** 37,43 ****
  torture-init
  set-torture-options $C_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS
  
! set additional_flags "-fno-tree-loop-distribute-patterns -fno-tracer"
  if [istarget "powerpc-*-darwin*"] {
     lappend additional_flags "-Wl,-multiply_defined,suppress"
  }
--- 37,43 ----
  torture-init
  set-torture-options $C_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS
  
! set additional_flags "-fno-tree-loop-distribute-patterns -fno-tracer -fno-ipa-ra"
  if [istarget "powerpc-*-darwin*"] {
     lappend additional_flags "-Wl,-multiply_defined,suppress"
  }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr90949.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr90949.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr90949.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr90949.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,42 ----
+ void __attribute__ ((noipa, noinline)) my_puts (const char *str) { }
+ 
+ void __attribute__ ((noipa, noinline)) my_free (void *p) { }
+ 
+ 
+ struct Node
+ {
+   struct Node *child;
+ };
+ 
+ struct Node space[2] = { };
+ 
+ struct Node * __attribute__ ((noipa, noinline)) my_malloc (int bytes)
+ {
+   return &space[0];
+ }
+ 
+ void
+ walk (struct Node *module, int cleanup)
+ {
+   if (module == 0)
+     {
+       return;
+     }
+   if (!cleanup)
+     {
+       my_puts ("No cleanup");
+     }
+   walk (module->child, cleanup);
+   if (cleanup)
+     {
+       my_free (module);
+     }
+ }
+ 
+ int
+ main ()
+ {
+   struct Node *node = my_malloc (sizeof (struct Node));
+   node->child = 0;
+   walk (node, 1);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr91137.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr91137.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr91137.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr91137.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,34 ----
+ long long a;
+ unsigned b;
+ int c[70];
+ int d[70][70];
+ int e;
+ 
+ __attribute__ ((noinline)) void f(long long *g, int p2) {
+   *g = p2;
+ }
+ 
+ __attribute__ ((noinline)) void fn2() {
+   for (int j = 0; j < 70; j++) {
+     for (int i = 0; i < 70; i++) {
+       if (b)
+         c[i] = 0;
+       for (int l = 0; l < 70; l++)
+         d[i][1] = d[l][i];
+     }
+     for (int k = 0; k < 70; k++)
+       e = c[0];
+   }
+ }
+ 
+ int main() {
+   b = 5;
+   for (int j = 0; j < 70; ++j)
+     c[j] = 2075593088;
+   fn2();
+   f(&a, e);
+   if (a)
+     __builtin_abort();
+   return 0;
+ }
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr91450-1.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr91450-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr91450-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr91450-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,88 ----
+ /* PR middle-end/91450 */
+ 
+ __attribute__((noipa)) unsigned long long
+ foo (int a, int b)
+ {
+   unsigned long long r;
+   if (!__builtin_mul_overflow (a, b, &r))
+     __builtin_abort ();
+   return r;
+ }
+ 
+ __attribute__((noipa)) unsigned long long
+ bar (int a, int b)
+ {
+   unsigned long long r;
+   if (a >= 0)
+     return 0;
+   if (!__builtin_mul_overflow (a, b, &r))
+     __builtin_abort ();
+   return r;
+ }
+ 
+ __attribute__((noipa)) unsigned long long
+ baz (int a, int b)
+ {
+   unsigned long long r;
+   if (b >= 0)
+     return 0;
+   if (!__builtin_mul_overflow (a, b, &r))
+     __builtin_abort ();
+   return r;
+ }
+ 
+ __attribute__((noipa)) unsigned long long
+ qux (int a, int b)
+ {
+   unsigned long long r;
+   if (a >= 0)
+     return 0;
+   if (b < 0)
+     return 0;
+   if (!__builtin_mul_overflow (a, b, &r))
+     __builtin_abort ();
+   return r;
+ }
+ 
+ __attribute__((noipa)) unsigned long long
+ quux (int a, int b)
+ {
+   unsigned long long r;
+   if (a < 0)
+     return 0;
+   if (b >= 0)
+     return 0;
+   if (!__builtin_mul_overflow (a, b, &r))
+     __builtin_abort ();
+   return r;
+ }
+ 
+ int
+ main ()
+ {
+   if (foo (-4, 2) != -8ULL)
+     __builtin_abort ();
+   if (foo (2, -4) != -8ULL)
+     __builtin_abort ();
+   if (bar (-4, 2) != -8ULL)
+     __builtin_abort ();
+   if (baz (2, -4) != -8ULL)
+     __builtin_abort ();
+   if (qux (-4, 2) != -8ULL)
+     __builtin_abort ();
+   if (quux (2, -4) != -8ULL)
+     __builtin_abort ();
+   if (foo (-2, 1) != -2ULL)
+     __builtin_abort ();
+   if (foo (1, -2) != -2ULL)
+     __builtin_abort ();
+   if (bar (-2, 1) != -2ULL)
+     __builtin_abort ();
+   if (baz (1, -2) != -2ULL)
+     __builtin_abort ();
+   if (qux (-2, 1) != -2ULL)
+     __builtin_abort ();
+   if (quux (1, -2) != -2ULL)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr91450-2.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr91450-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr91450-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr91450-2.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,76 ----
+ /* PR middle-end/91450 */
+ 
+ __attribute__((noipa)) void
+ foo (int a, int b)
+ {
+   unsigned long long r;
+   if (__builtin_mul_overflow (a, b, &r))
+     __builtin_abort ();
+   if (r != 0)
+     __builtin_abort ();
+ }
+ 
+ __attribute__((noipa)) void
+ bar (int a, int b)
+ {
+   unsigned long long r;
+   if (a >= 0)
+     return;
+   if (__builtin_mul_overflow (a, b, &r))
+     __builtin_abort ();
+   if (r != 0)
+     __builtin_abort ();
+ }
+ 
+ __attribute__((noipa)) void
+ baz (int a, int b)
+ {
+   unsigned long long r;
+   if (b >= 0)
+     return;
+   if (__builtin_mul_overflow (a, b, &r))
+     __builtin_abort ();
+   if (r != 0)
+     __builtin_abort ();
+ }
+ 
+ __attribute__((noipa)) void
+ qux (int a, int b)
+ {
+   unsigned long long r;
+   if (a >= 0)
+     return;
+   if (b < 0)
+     return;
+   if (__builtin_mul_overflow (a, b, &r))
+     __builtin_abort ();
+   if (r != 0)
+     __builtin_abort ();
+ }
+ 
+ __attribute__((noipa)) void
+ quux (int a, int b)
+ {
+   unsigned long long r;
+   if (a < 0)
+     return;
+   if (b >= 0)
+     return;
+   if (__builtin_mul_overflow (a, b, &r))
+     __builtin_abort ();
+   if (r != 0)
+     __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+   foo (-4, 0);
+   foo (0, -4);
+   foo (0, 0);
+   bar (-4, 0);
+   baz (0, -4);
+   qux (-4, 0);
+   quux (0, -4);
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr92904.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr92904.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr92904.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr92904.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,395 ----
+ /* PR target/92904 */
+ 
+ #include <stdarg.h>
+ 
+ struct S { long long a, b; };
+ struct __attribute__((aligned (16))) T { long long a, b; };
+ struct U { double a, b, c, d; };
+ struct __attribute__((aligned (32))) V { double a, b, c, d; };
+ struct W { double a; long long b; };
+ struct __attribute__((aligned (16))) X { double a; long long b; };
+ #if __SIZEOF_INT128__ == 2 * __SIZEOF_LONG_LONG__
+ __int128 b;
+ #endif
+ struct S c;
+ struct T d;
+ struct U e;
+ struct V f;
+ struct W g;
+ struct X h;
+ 
+ #if __SIZEOF_INT128__ == 2 * __SIZEOF_LONG_LONG__
+ __attribute__((noipa)) __int128
+ f1 (int x, ...)
+ {
+   __int128 r;
+   va_list ap;
+   va_start (ap, x);
+   while (x--)
+     va_arg (ap, int);
+   r = va_arg (ap, __int128);
+   va_end (ap);
+   return r;
+ }
+ #endif
+ 
+ __attribute__((noipa)) struct S
+ f2 (int x, ...)
+ {
+   struct S r;
+   va_list ap;
+   va_start (ap, x);
+   while (x--)
+     va_arg (ap, int);
+   r = va_arg (ap, struct S);
+   va_end (ap);
+   return r;
+ }
+ 
+ __attribute__((noipa)) struct T
+ f3 (int x, ...)
+ {
+   struct T r;
+   va_list ap;
+   va_start (ap, x);
+   while (x--)
+     va_arg (ap, int);
+   r = va_arg (ap, struct T);
+   va_end (ap);
+   return r;
+ }
+ 
+ #if __SIZEOF_INT128__ == 2 * __SIZEOF_LONG_LONG__
+ __attribute__((noipa)) void
+ f4 (int x, ...)
+ {
+   va_list ap;
+   va_start (ap, x);
+   while (x--)
+     va_arg (ap, int);
+   b = va_arg (ap, __int128);
+   va_end (ap);
+ }
+ #endif
+ 
+ __attribute__((noipa)) void
+ f5 (int x, ...)
+ {
+   va_list ap;
+   va_start (ap, x);
+   while (x--)
+     va_arg (ap, int);
+   c = va_arg (ap, struct S);
+   va_end (ap);
+ }
+ 
+ __attribute__((noipa)) void
+ f6 (int x, ...)
+ {
+   va_list ap;
+   va_start (ap, x);
+   while (x--)
+     va_arg (ap, int);
+   d = va_arg (ap, struct T);
+   va_end (ap);
+ }
+ 
+ __attribute__((noipa)) struct U
+ f7 (int x, ...)
+ {
+   struct U r;
+   va_list ap;
+   va_start (ap, x);
+   while (x--)
+     va_arg (ap, double);
+   r = va_arg (ap, struct U);
+   va_end (ap);
+   return r;
+ }
+ 
+ __attribute__((noipa)) struct V
+ f8 (int x, ...)
+ {
+   struct V r;
+   va_list ap;
+   va_start (ap, x);
+   while (x--)
+     va_arg (ap, double);
+   r = va_arg (ap, struct V);
+   va_end (ap);
+   return r;
+ }
+ 
+ __attribute__((noipa)) void
+ f9 (int x, ...)
+ {
+   va_list ap;
+   va_start (ap, x);
+   while (x--)
+     va_arg (ap, double);
+   e = va_arg (ap, struct U);
+   va_end (ap);
+ }
+ 
+ __attribute__((noipa)) void
+ f10 (int x, ...)
+ {
+   va_list ap;
+   va_start (ap, x);
+   while (x--)
+     va_arg (ap, double);
+   f = va_arg (ap, struct V);
+   va_end (ap);
+ }
+ 
+ __attribute__((noipa)) struct W
+ f11 (int x, ...)
+ {
+   struct W r;
+   va_list ap;
+   va_start (ap, x);
+   while (x--)
+     {
+       va_arg (ap, int);
+       va_arg (ap, double);
+     }
+   r = va_arg (ap, struct W);
+   va_end (ap);
+   return r;
+ }
+ 
+ __attribute__((noipa)) struct X
+ f12 (int x, ...)
+ {
+   struct X r;
+   va_list ap;
+   va_start (ap, x);
+   while (x--)
+     {
+       va_arg (ap, int);
+       va_arg (ap, double);
+     }
+   r = va_arg (ap, struct X);
+   va_end (ap);
+   return r;
+ }
+ 
+ __attribute__((noipa)) void
+ f13 (int x, ...)
+ {
+   va_list ap;
+   va_start (ap, x);
+   while (x--)
+     {
+       va_arg (ap, int);
+       va_arg (ap, double);
+     }
+   g = va_arg (ap, struct W);
+   va_end (ap);
+ }
+ 
+ __attribute__((noipa)) void
+ f14 (int x, ...)
+ {
+   va_list ap;
+   va_start (ap, x);
+   while (x--)
+     {
+       va_arg (ap, int);
+       va_arg (ap, double);
+     }
+   h = va_arg (ap, struct X);
+   va_end (ap);
+ }
+ 
+ int
+ main ()
+ {
+   union Y {
+ #if __SIZEOF_INT128__ == 2 * __SIZEOF_LONG_LONG__
+     __int128 b;
+ #endif
+     struct S c;
+     struct T d;
+     struct U e;
+     struct V f;
+     struct W g;
+     struct X h;
+   } u, v;
+   u.c.a = 0x5555555555555555ULL;
+   u.c.b = 0xaaaaaaaaaaaaaaaaULL;
+ #define C(x) \
+   do {								\
+     if (u.c.a != x.c.a || u.c.b != x.c.b) __builtin_abort ();	\
+     u.c.a++;							\
+     u.c.b--;							\
+   } while (0)
+ #if __SIZEOF_INT128__ == 2 * __SIZEOF_LONG_LONG__
+   v.b = f1 (0, u.b); C (v);
+   v.b = f1 (1, 0, u.b); C (v);
+   v.b = f1 (2, 0, 0, u.b); C (v);
+   v.b = f1 (3, 0, 0, 0, u.b); C (v);
+   v.b = f1 (4, 0, 0, 0, 0, u.b); C (v);
+   v.b = f1 (5, 0, 0, 0, 0, 0, u.b); C (v);
+   v.b = f1 (6, 0, 0, 0, 0, 0, 0, u.b); C (v);
+   v.b = f1 (7, 0, 0, 0, 0, 0, 0, 0, u.b); C (v);
+   v.b = f1 (8, 0, 0, 0, 0, 0, 0, 0, 0, u.b); C (v);
+   v.b = f1 (9, 0, 0, 0, 0, 0, 0, 0, 0, 0, u.b); C (v);
+ #endif
+   v.c = f2 (0, u.c); C (v);
+   v.c = f2 (1, 0, u.c); C (v);
+   v.c = f2 (2, 0, 0, u.c); C (v);
+   v.c = f2 (3, 0, 0, 0, u.c); C (v);
+   v.c = f2 (4, 0, 0, 0, 0, u.c); C (v);
+   v.c = f2 (5, 0, 0, 0, 0, 0, u.c); C (v);
+   v.c = f2 (6, 0, 0, 0, 0, 0, 0, u.c); C (v);
+   v.c = f2 (7, 0, 0, 0, 0, 0, 0, 0, u.c); C (v);
+   v.c = f2 (8, 0, 0, 0, 0, 0, 0, 0, 0, u.c); C (v);
+   v.c = f2 (9, 0, 0, 0, 0, 0, 0, 0, 0, 0, u.c); C (v);
+   v.d = f3 (0, u.d); C (v);
+   v.d = f3 (1, 0, u.d); C (v);
+   v.d = f3 (2, 0, 0, u.d); C (v);
+   v.d = f3 (3, 0, 0, 0, u.d); C (v);
+   v.d = f3 (4, 0, 0, 0, 0, u.d); C (v);
+   v.d = f3 (5, 0, 0, 0, 0, 0, u.d); C (v);
+   v.d = f3 (6, 0, 0, 0, 0, 0, 0, u.d); C (v);
+   v.d = f3 (7, 0, 0, 0, 0, 0, 0, 0, u.d); C (v);
+   v.d = f3 (8, 0, 0, 0, 0, 0, 0, 0, 0, u.d); C (v);
+   v.d = f3 (9, 0, 0, 0, 0, 0, 0, 0, 0, 0, u.d); C (v);
+ #if __SIZEOF_INT128__ == 2 * __SIZEOF_LONG_LONG__
+   f4 (0, u.b); v.b = b; C (v);
+   f4 (1, 0, u.b); v.b = b; C (v);
+   f4 (2, 0, 0, u.b); v.b = b; C (v);
+   f4 (3, 0, 0, 0, u.b); v.b = b; C (v);
+   f4 (4, 0, 0, 0, 0, u.b); v.b = b; C (v);
+   f4 (5, 0, 0, 0, 0, 0, u.b); v.b = b; C (v);
+   f4 (6, 0, 0, 0, 0, 0, 0, u.b); v.b = b; C (v);
+   f4 (7, 0, 0, 0, 0, 0, 0, 0, u.b); v.b = b; C (v);
+   f4 (8, 0, 0, 0, 0, 0, 0, 0, 0, u.b); v.b = b; C (v);
+   f4 (9, 0, 0, 0, 0, 0, 0, 0, 0, 0, u.b); v.b = b; C (v);
+ #endif
+   f5 (0, u.c); v.c = c; C (v);
+   f5 (1, 0, u.c); v.c = c; C (v);
+   f5 (2, 0, 0, u.c); v.c = c; C (v);
+   f5 (3, 0, 0, 0, u.c); v.c = c; C (v);
+   f5 (4, 0, 0, 0, 0, u.c); v.c = c; C (v);
+   f5 (5, 0, 0, 0, 0, 0, u.c); v.c = c; C (v);
+   f5 (6, 0, 0, 0, 0, 0, 0, u.c); v.c = c; C (v);
+   f5 (7, 0, 0, 0, 0, 0, 0, 0, u.c); v.c = c; C (v);
+   f5 (8, 0, 0, 0, 0, 0, 0, 0, 0, u.c); v.c = c; C (v);
+   f5 (9, 0, 0, 0, 0, 0, 0, 0, 0, 0, u.c); v.c = c; C (v);
+   f6 (0, u.d); v.d = d; C (v);
+   f6 (1, 0, u.d); v.d = d; C (v);
+   f6 (2, 0, 0, u.d); v.d = d; C (v);
+   f6 (3, 0, 0, 0, u.d); v.d = d; C (v);
+   f6 (4, 0, 0, 0, 0, u.d); v.d = d; C (v);
+   f6 (5, 0, 0, 0, 0, 0, u.d); v.d = d; C (v);
+   f6 (6, 0, 0, 0, 0, 0, 0, u.d); v.d = d; C (v);
+   f6 (7, 0, 0, 0, 0, 0, 0, 0, u.d); v.d = d; C (v);
+   f6 (8, 0, 0, 0, 0, 0, 0, 0, 0, u.d); v.d = d; C (v);
+   f6 (9, 0, 0, 0, 0, 0, 0, 0, 0, 0, u.d); v.d = d; C (v);
+   u.e.a = 1.25;
+   u.e.b = 2.75;
+   u.e.c = -3.5;
+   u.e.d = -2.0;
+ #undef C
+ #define C(x) \
+   do {								\
+     if (u.e.a != x.e.a || u.e.b != x.e.b			\
+ 	|| u.e.c != x.e.c || u.e.d != x.e.d) __builtin_abort ();\
+     u.e.a++;							\
+     u.e.b--;							\
+     u.e.c++;							\
+     u.e.d--;							\
+   } while (0)
+   v.e = f7 (0, u.e); C (v);
+   v.e = f7 (1, 0.0, u.e); C (v);
+   v.e = f7 (2, 0.0, 0.0, u.e); C (v);
+   v.e = f7 (3, 0.0, 0.0, 0.0, u.e); C (v);
+   v.e = f7 (4, 0.0, 0.0, 0.0, 0.0, u.e); C (v);
+   v.e = f7 (5, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); C (v);
+   v.e = f7 (6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); C (v);
+   v.e = f7 (7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); C (v);
+   v.e = f7 (8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); C (v);
+   v.e = f7 (9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); C (v);
+   v.f = f8 (0, u.f); C (v);
+   v.f = f8 (1, 0.0, u.f); C (v);
+   v.f = f8 (2, 0.0, 0.0, u.f); C (v);
+   v.f = f8 (3, 0.0, 0.0, 0.0, u.f); C (v);
+   v.f = f8 (4, 0.0, 0.0, 0.0, 0.0, u.f); C (v);
+   v.f = f8 (5, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); C (v);
+   v.f = f8 (6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); C (v);
+   v.f = f8 (7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); C (v);
+   v.f = f8 (8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); C (v);
+   v.f = f8 (9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); C (v);
+   f9 (0, u.e); v.e = e; C (v);
+   f9 (1, 0.0, u.e); v.e = e; C (v);
+   f9 (2, 0.0, 0.0, u.e); v.e = e; C (v);
+   f9 (3, 0.0, 0.0, 0.0, u.e); v.e = e; C (v);
+   f9 (4, 0.0, 0.0, 0.0, 0.0, u.e); v.e = e; C (v);
+   f9 (5, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); v.e = e; C (v);
+   f9 (6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); v.e = e; C (v);
+   f9 (7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); v.e = e; C (v);
+   f9 (8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); v.e = e; C (v);
+   f9 (9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); v.e = e; C (v);
+   f10 (0, u.f); v.f = f; C (v);
+   f10 (1, 0.0, u.f); v.f = f; C (v);
+   f10 (2, 0.0, 0.0, u.f); v.f = f; C (v);
+   f10 (3, 0.0, 0.0, 0.0, u.f); v.f = f; C (v);
+   f10 (4, 0.0, 0.0, 0.0, 0.0, u.f); v.f = f; C (v);
+   f10 (5, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); v.f = f; C (v);
+   f10 (6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); v.f = f; C (v);
+   f10 (7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); v.f = f; C (v);
+   f10 (8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); v.f = f; C (v);
+   f10 (9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); v.f = f; C (v);
+   u.g.a = 9.5;
+   u.g.b = 0x5555555555555555ULL;
+ #undef C
+ #define C(x) \
+   do {								\
+     if (u.e.a != x.e.a || u.e.b != x.e.b) __builtin_abort ();	\
+     u.e.a++;							\
+     u.e.b--;							\
+   } while (0)
+   v.g = f11 (0, u.g); C (v);
+   v.g = f11 (1, 0, 0.0, u.g); C (v);
+   v.g = f11 (2, 0, 0.0, 0, 0.0, u.g); C (v);
+   v.g = f11 (3, 0, 0.0, 0, 0.0, 0, 0.0, u.g); C (v);
+   v.g = f11 (4, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); C (v);
+   v.g = f11 (5, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); C (v);
+   v.g = f11 (6, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); C (v);
+   v.g = f11 (7, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); C (v);
+   v.g = f11 (8, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); C (v);
+   v.g = f11 (9, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); C (v);
+   v.h = f12 (0, u.h); C (v);
+   v.h = f12 (1, 0, 0.0, u.h); C (v);
+   v.h = f12 (2, 0, 0.0, 0, 0.0, u.h); C (v);
+   v.h = f12 (3, 0, 0.0, 0, 0.0, 0, 0.0, u.h); C (v);
+   v.h = f12 (4, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); C (v);
+   v.h = f12 (5, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); C (v);
+   v.h = f12 (6, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); C (v);
+   v.h = f12 (7, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); C (v);
+   v.h = f12 (8, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); C (v);
+   v.h = f12 (9, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); C (v);
+   f13 (0, u.g); v.g = g; C (v);
+   f13 (1, 0, 0.0, u.g); v.g = g; C (v);
+   f13 (2, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
+   f13 (3, 0, 0.0, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
+   f13 (4, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
+   f13 (5, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
+   f13 (6, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
+   f13 (7, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
+   f13 (8, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
+   f13 (9, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
+   f14 (0, u.h); v.h = h; C (v);
+   f14 (1, 0, 0.0, u.h); v.h = h; C (v);
+   f14 (2, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
+   f14 (3, 0, 0.0, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
+   f14 (4, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
+   f14 (5, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
+   f14 (6, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
+   f14 (7, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
+   f14 (8, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
+   f14 (9, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr93402.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr93402.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr93402.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr93402.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,21 ----
+ /* PR rtl-optimization/93402 */
+ 
+ struct S { unsigned int a; unsigned long long b; };
+ 
+ __attribute__((noipa)) struct S
+ foo (unsigned long long x)
+ {
+   struct S ret;
+   ret.a = 0;
+   ret.b = x * 11111111111ULL + 111111111111ULL;
+   return ret;
+ }
+ 
+ int
+ main ()
+ {
+   struct S a = foo (1);
+   if (a.a != 0 || a.b != 122222222222ULL)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr93434.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr93434.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr93434.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr93434.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,36 ----
+ typedef struct creal_T {
+   double re;
+   double im;
+ } creal_T;
+ 
+ #define N 16
+ int main() {
+   int k;
+   int i;
+   int j;
+   creal_T t2[N];
+   double inval;
+ 
+   inval = 1.0;
+   for (j = 0; j < N; ++j) {
+     t2[j].re = 0;
+     t2[j].im = 0;
+   }
+ 
+   for (j = 0; j < N/4; j++) {
+     i = j * 4;
+     t2[i].re = inval;
+     t2[i].im = inval;
+     k = i + 3;
+     t2[k].re = inval;
+     t2[k].im = inval;
+     t2[i] = t2[k];
+     t2[k].re = inval;
+   }
+ 
+   for (i = 0; i < 2; ++i)
+     if (t2[i].re != !i || t2[i].im != !i)
+       __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr93744-1.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr93744-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr93744-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr93744-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,14 ----
+ /* PR tree-optimization/93744 */
+ 
+ typedef int I;
+ 
+ int
+ main ()
+ {
+   int a = 0;
+   I b = 0;
+   (a > 0) * (b |= 2);
+   if (b != 2)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr93744-2.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr93744-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr93744-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr93744-2.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,21 ----
+ /* PR tree-optimization/93744 */
+ 
+ int w;
+ 
+ int
+ foo (int x, int y, int z)
+ {
+   int r = z - ((z - w++) & -(x < y));
+   return r;
+ }
+ 
+ int
+ main ()
+ {
+   w = 4;
+   if (foo (5, 7, 12) != 4 || w != 5)
+     __builtin_abort ();
+   if (foo (7, 5, 12) != 12 || w != 6)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr93744-3.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr93744-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr93744-3.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr93744-3.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,21 ----
+ /* PR tree-optimization/93744 */
+ 
+ int w;
+ 
+ int
+ foo (int x, int y, int z)
+ {
+   int r = z + ((w++ - z) & -(x < y));
+   return r;
+ }
+ 
+ int
+ main ()
+ {
+   w = 4;
+   if (foo (5, 7, 12) != 4 || w != 5)
+     __builtin_abort ();
+   if (foo (7, 5, 12) != 12 || w != 6)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr93908.c gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr93908.c
*** gcc-8.3.0/gcc/testsuite/gcc.c-torture/execute/pr93908.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.c-torture/execute/pr93908.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,54 ----
+ /* PR rtl-optimization/93908 */
+ 
+ struct T
+ {
+   int b;
+   int c;
+   unsigned short d;
+   unsigned e:1, f:1, g:1, h:2, i:1, j:1;
+   signed int k:2;
+ };
+ 
+ struct S
+ {
+   struct T s;
+   char c[64];
+ } buf[2];
+ 
+ __attribute__ ((noipa)) void *
+ baz (void)
+ {
+   static int cnt;
+   return (void *) &buf[cnt++];
+ }
+ 
+ static inline __attribute__ ((always_inline)) struct T *
+ bar (const char *a)
+ {
+   struct T *s;
+   s = baz ();
+   s->b = 1;
+   s->k = -1;
+   return s;
+ }
+ 
+ __attribute__ ((noipa)) void
+ foo (const char *x, struct T **y)
+ {
+   struct T *l = bar (x);
+   struct T *m = bar (x);
+   y[0] = l;
+   y[1] = m;
+ }
+ 
+ int
+ main ()
+ {
+   struct T *r[2];
+   foo ("foo", r);
+   if (r[0]->e || r[0]->f || r[0]->g || r[0]->h || r[0]->i || r[0]->j || r[0]->k != -1)
+     __builtin_abort ();
+   if (r[1]->e || r[1]->f || r[1]->g || r[1]->h || r[1]->i || r[1]->j || r[1]->k != -1)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/Warray-bounds-38.c gcc-8.4.0/gcc/testsuite/gcc.dg/Warray-bounds-38.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/Warray-bounds-38.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/Warray-bounds-38.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,30 ----
+ /* PR middle-end/88273 - bogus warning: 'memcpy' offset [-527, -529]
+    is out of the bounds [0, 16]
+    { dg-do compile }
+    { dg-options "-O2 -Wall" }  */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ 
+ void *q;
+ 
+ size_t x, y;
+ 
+ inline void f (char *p, int i, size_t j)
+ {
+   size_t n = y ? y : j;
+ 
+   p += x - i;
+ 
+   __builtin_memcpy (q, p, n);   /* { dg-bogus "bounds" } */
+ 
+   x = n;
+ }
+ 
+ void g (void)
+ {
+   struct { char a[16]; } s;
+ 
+   f (q, 0, sizeof s);
+ 
+   f (s.a, 33 * sizeof s, 1);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/Wnonnull.c gcc-8.4.0/gcc/testsuite/gcc.dg/Wnonnull.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/Wnonnull.c	Mon Feb  5 22:45:04 2018
--- gcc-8.4.0/gcc/testsuite/gcc.dg/Wnonnull.c	Wed Mar  4 08:30:01 2020
***************
*** 2,8 ****
     { dg-do compile }
     { dg-options "-O2 -Wall" } */
  
! #include <string.h>
  
  char buf[100];
  
--- 2,11 ----
     { dg-do compile }
     { dg-options "-O2 -Wall" } */
  
! extern __SIZE_TYPE__ strlen (const char *__s)
! 			     __attribute ((pure)) __attribute ((nonnull (1)));
! extern void *memcpy (void *__restrict __dest, const void *__restrict __src,
! 		     __SIZE_TYPE__ __n) __attribute ((nonnull (1, 2)));
  
  char buf[100];
  
*************** struct Test
*** 14,22 ****
  
  __attribute ((nonnull (1, 2)))
  inline char*
! my_strcpy (char *restrict dst, const char *restrict src, size_t size)
  {
!   size_t len = strlen (src);        /* { dg-warning "argument 1 null where non-null expected" } */
    if (len < size)
      memcpy (dst, src, len + 1);     /* { dg-warning "argument 2 null where non-null expected" } */
    else
--- 17,25 ----
  
  __attribute ((nonnull (1, 2)))
  inline char*
! my_strcpy (char *restrict dst, const char *restrict src, __SIZE_TYPE__ size)
  {
!   __SIZE_TYPE__ len = strlen (src); /* { dg-warning "argument 1 null where non-null expected" } */
    if (len < size)
      memcpy (dst, src, len + 1);     /* { dg-warning "argument 2 null where non-null expected" } */
    else
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/Wrestrict-19.c gcc-8.4.0/gcc/testsuite/gcc.dg/Wrestrict-19.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/Wrestrict-19.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/Wrestrict-19.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,33 ----
+ /* PR middle-end/89934 - ICE on a call with fewer arguments to strncpy
+    declared without prototype
+    { dg-do compile }
+    { dg-options "-O2 -Wall" } */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ 
+ char *strncpy ();
+ 
+ char* f0 (char *s)
+ {
+   return strncpy ();
+ }
+ 
+ char* f1 (char *s)
+ {
+   return strncpy (s);
+ }
+ 
+ char* f2 (char *s)
+ {
+   return strncpy (s, s + 1);   /* ICE here.  */
+ }
+ 
+ void f3 (char *s, size_t n, const char *t)
+ {
+   strncpy (s, n, t);
+   strncpy (n, s, t);
+ }
+ 
+ /* { dg-prune-output "\\\[-Wbuiltin-declaration-mismatch]" }
+    { dg-prune-output "\\\[-Wint-conversion]" } */
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/Wrestrict-5.c gcc-8.4.0/gcc/testsuite/gcc.dg/Wrestrict-5.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/Wrestrict-5.c	Wed Jan  3 23:41:32 2018
--- gcc-8.4.0/gcc/testsuite/gcc.dg/Wrestrict-5.c	Wed Mar  4 08:30:01 2020
***************
*** 1,19 ****
! /* Test to verify that valid calls to common restrict-qualified built-in
     functions declared with no prototype are checked for overlap, and that
     invalid calls are ignored.
    { dg-do compile }
    { dg-options "-O2 -Wrestrict" }  */
  
- typedef __SIZE_TYPE__ size_t;
- 
- #if __cplusplus
- extern "C" {
- 
- #define NO_PROTO ...
- #else
- #define NO_PROTO /* empty */
- #endif
- 
  void* memcpy ();
  char* strncpy ();
  
--- 1,11 ----
! /* PR tree-optimization/83655 - ICE on an invalid call to memcpy declared
!    with no prototype
!    Test to verify that valid calls to common restrict-qualified built-in
     functions declared with no prototype are checked for overlap, and that
     invalid calls are ignored.
    { dg-do compile }
    { dg-options "-O2 -Wrestrict" }  */
  
  void* memcpy ();
  char* strncpy ();
  
*************** void test_strncpy_nowarn (char *d)
*** 41,43 ****
--- 33,38 ----
  {
    strncpy (d + 1, d + 3, "");
  }
+ 
+ /* { dg-prune-output "\\\[-Wbuiltin-declaration-mismatch]" }
+    { dg-prune-output "\\\[-Wint-conversion]" } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/autopar/pr91162.c gcc-8.4.0/gcc/testsuite/gcc.dg/autopar/pr91162.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/autopar/pr91162.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/autopar/pr91162.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile { target int128 } } */
+ /* { dg-options "-O -ftree-parallelize-loops=2 -fno-tree-dominator-opts --param parloops-min-per-thread=30" } */
+ 
+ void
+ zf (__int128 ct)
+ {
+   __int128 *rk = &ct;
+ 
+   if (0)
+     {
+       int jj;
+ 
+ t9:
+       for (jj = 0; jj < 60; ++jj)
+ 	{
+ 	}
+ 
+       __builtin_unreachable ();
+     }
+ 
+   while (*rk < 1)
+     ++*rk;
+ 
+   goto t9;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/c11-static-assert-10.c gcc-8.4.0/gcc/testsuite/gcc.dg/c11-static-assert-10.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/c11-static-assert-10.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/c11-static-assert-10.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,9 ----
+ /* Test for constant expressions: casts with integer overflow.  PR
+    c/93241.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c11 -pedantic-errors" } */
+ 
+ #include <limits.h>
+ 
+ _Static_assert (0 ? (_Bool) (INT_MAX + 1) : 1, "");
+ _Static_assert (0 ? (short) ((INT_MAX + 1) != 0) : 1, "");
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/c99-const-expr-15.c gcc-8.4.0/gcc/testsuite/gcc.dg/c99-const-expr-15.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/c99-const-expr-15.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/c99-const-expr-15.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,9 ----
+ /* Test for constant expressions: casts with integer overflow.  PR
+    c/93241.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c99 -pedantic-errors" } */
+ 
+ #include <limits.h>
+ 
+ struct s { int a : (0 ? (_Bool) (INT_MAX + 1) : 1); };
+ struct t { int a : (0 ? (short) ((INT_MAX + 1) != 0) : 1); };
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/cpp/isysroot-1.c gcc-8.4.0/gcc/testsuite/gcc.dg/cpp/isysroot-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/cpp/isysroot-1.c	Tue Nov 30 19:38:15 2004
--- gcc-8.4.0/gcc/testsuite/gcc.dg/cpp/isysroot-1.c	Wed Mar  4 08:30:01 2020
***************
*** 1,10 ****
  /* { dg-options "-isysroot ${srcdir}/gcc.dg/cpp" } */
  /* { dg-do compile  { target *-*-darwin* } } */
  
! #include <stdio.h>
  int main()
  {
!   /* Special stdio.h supplies function foo.  */
    void (*x)(void) = foo;
    return 0;
  }
--- 1,17 ----
  /* { dg-options "-isysroot ${srcdir}/gcc.dg/cpp" } */
  /* { dg-do compile  { target *-*-darwin* } } */
  
! /* For the test to succeed there needs to be some header that is to be found
!    in the 'expected' place i.e. <sysroot>/usr/include/.  It's important that
!    it is not the name of a header for which fixincludes have been applied,
!    since such headers will be found in the gcc include-fixed dir and, in
!    general, reference additional headers.  The dummy sysroot will prevent the
!    additional headers from being found, resulting in a failed test.  So use
!    a header name we don't expect to see. */
! #include <example.h>
  int main()
  {
!   /* Special example.h supplies function foo.  */
    void (*x)(void) = foo;
    return 0;
  }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/cpp/usr/include/example.h gcc-8.4.0/gcc/testsuite/gcc.dg/cpp/usr/include/example.h
*** gcc-8.3.0/gcc/testsuite/gcc.dg/cpp/usr/include/example.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/cpp/usr/include/example.h	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,4 ----
+ /* Used by gcc.dg/cpp/isysroot-1.c to test isysroot.  */
+ void foo()
+ {
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h gcc-8.4.0/gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h
*** gcc-8.3.0/gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h	Wed Nov 24 17:47:32 2004
--- gcc-8.4.0/gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h	Thu Jan  1 00:00:00 1970
***************
*** 1,4 ****
- /* Used by gcc.dg/cpp/isysroot-1.c to test isysroot.  */
- void foo()
- {
- }
--- 0 ----
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/darwin-minversion-1.c gcc-8.4.0/gcc/testsuite/gcc.dg/darwin-minversion-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/darwin-minversion-1.c	Sun Nov 27 15:07:22 2016
--- gcc-8.4.0/gcc/testsuite/gcc.dg/darwin-minversion-1.c	Wed Mar  4 08:30:01 2020
***************
*** 1,6 ****
  /* Basic test for -mmacosx-version-min switch on Darwin.  */
  /* { dg-options "-mmacosx-version-min=10.5" } */
! /* { dg-do run { target *-*-darwin* } } */
  
  int
  main ()
--- 1,6 ----
  /* Basic test for -mmacosx-version-min switch on Darwin.  */
  /* { dg-options "-mmacosx-version-min=10.5" } */
! /* { dg-do compile { target *-*-darwin* } } */
  
  int
  main ()
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/darwin-minversion-2.c gcc-8.4.0/gcc/testsuite/gcc.dg/darwin-minversion-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/darwin-minversion-2.c	Sun Nov 27 15:07:22 2016
--- gcc-8.4.0/gcc/testsuite/gcc.dg/darwin-minversion-2.c	Wed Mar  4 08:30:01 2020
***************
*** 1,6 ****
  /* Basic test for -mmacosx-version-min switch on Darwin.  */
  /* { dg-options "-mmacosx-version-min=10.1 -mmacosx-version-min=10.5" } */
! /* { dg-do run { target *-*-darwin* } } */
  
  int
  main ()
--- 1,6 ----
  /* Basic test for -mmacosx-version-min switch on Darwin.  */
  /* { dg-options "-mmacosx-version-min=10.1 -mmacosx-version-min=10.5" } */
! /* { dg-do compile { target *-*-darwin* } } */
  
  int
  main ()
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/darwin-minversion-link.c gcc-8.4.0/gcc/testsuite/gcc.dg/darwin-minversion-link.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/darwin-minversion-link.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/darwin-minversion-link.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,26 ----
+ /* Test that we can handle leading-zeros on mmacosx-version-min for invocations
+    including linking (so that spec processing works).  To make sure that any
+    necessary target libs are present we make this specific to the target version
+    being built.  */
+ /* { dg-do link { target *-*-darwin* } } */
+ /* { dg-additional-options "-mmacosx-version-min=010.04.11 -DCHECK=1049" { target *-*-darwin8* } } */
+ /* { dg-additional-options "-mmacosx-version-min=010.05.08 -DCHECK=1058" { target *-*-darwin9* } } */
+ /* { dg-additional-options "-mmacosx-version-min=010.06.08 -DCHECK=1068" { target *-*-darwin10* } } */
+ /* { dg-additional-options "-mmacosx-version-min=010.07.05 -DCHECK=1075" { target *-*-darwin11* } } */
+ /* { dg-additional-options "-mmacosx-version-min=010.08.05 -DCHECK=1085" { target *-*-darwin12* } } */
+ /* { dg-additional-options "-mmacosx-version-min=010.09.05 -DCHECK=1095" { target *-*-darwin13* } } */
+ /* { dg-additional-options "-mmacosx-version-min=010.010.03 -DCHECK=101003" { target *-*-darwin14* } } */
+ /* { dg-additional-options "-mmacosx-version-min=010.011.06 -DCHECK=101106" { target *-*-darwin15* } } */
+ /* { dg-additional-options "-mmacosx-version-min=010.012.06 -DCHECK=101206" { target *-*-darwin16* } } */
+ /* { dg-additional-options "-mmacosx-version-min=010.013.06 -DCHECK=101306" { target *-*-darwin17* } } */
+ /* This next test covers 10.18 and (currently unreleased) 10.19 for now. */  
+ /* { dg-additional-options "-mmacosx-version-min=010.014.05 -DCHECK=101405" { target *-*-darwin1[89]* } } */
+ 
+ int
+ main ()
+ {
+ #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != CHECK
+   fail me;
+ #endif
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/darwin-version-1.c gcc-8.4.0/gcc/testsuite/gcc.dg/darwin-version-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/darwin-version-1.c	Fri Jul  8 05:51:06 2005
--- gcc-8.4.0/gcc/testsuite/gcc.dg/darwin-version-1.c	Wed Mar  4 08:30:01 2020
***************
*** 1,10 ****
  /* Basic test of the -mmacosx-version-min option.  */
  
! /* { dg-options "-mmacosx-version-min=10.1" } */
  /* { dg-do link { target *-*-darwin* } } */
  
  int main()
  {
    return 0;
  }
- 
--- 1,14 ----
  /* Basic test of the -mmacosx-version-min option.  */
  
! /* Darwin4 corresponds to MacOS 10.0.  */
! /* { dg-options "-mmacosx-version-min=10.1" { target *-*-darwin[456789]* } } */
! /* Later Darwin linkers decline to link for less than Darwin8/MacOS 10.4.
!    However, we need to make the link for 10.6 because the relevant libgcc_s
!    shim files for 10.4 and 10.5 are also not installed in later SDKs.  */
! /* { dg-options "-mmacosx-version-min=10.6" { target *-*-darwin[123]* } } */
  /* { dg-do link { target *-*-darwin* } } */
  
  int main()
  {
    return 0;
  }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/darwin-weakimport-3.c gcc-8.4.0/gcc/testsuite/gcc.dg/darwin-weakimport-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/darwin-weakimport-3.c	Fri Oct 13 21:37:12 2006
--- gcc-8.4.0/gcc/testsuite/gcc.dg/darwin-weakimport-3.c	Wed Mar  4 08:30:01 2020
***************
*** 1,5 ****
  /* { dg-do compile { target *-*-darwin* } } */
! /* { dg-options "-fno-asynchronous-unwind-tables" } */
  /* { dg-require-weak "" } */
  
  /* { dg-final { scan-assembler-not "coalesced" } } */
--- 1,20 ----
  /* { dg-do compile { target *-*-darwin* } } */
! 
! /* Here we want to test if "foo" gets placed into a coalesced
!    section (it should not).
! 
!    However, for i386, and PIC code we have a "get_pc thunk" that
!    is (correctly) placed in a coalesced section when using an older
!    linker - also unwind tables are emitted into coalesced.
! 
!    With modern linkers this is moot, since even weak symbols
!    are emitted into the regular sections.
! 
!    To avoid the unwind tables -fno-asynchronous-unwind-tables.
!    To ensure that we emit code for an older linker -mtarget-linker
!    To avoid the get_pc thunk optimise at least O1.  */
! 
! /* { dg-options "-fno-asynchronous-unwind-tables -O1 -mtarget-linker 85.2" } */
  /* { dg-require-weak "" } */
  
  /* { dg-final { scan-assembler-not "coalesced" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/debug/pr89704.c gcc-8.4.0/gcc/testsuite/gcc.dg/debug/pr89704.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/debug/pr89704.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/debug/pr89704.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,14 ----
+ /* PR debug/89704 */
+ /* { dg-do compile } */
+ 
+ typedef __INTPTR_TYPE__ intptr_t;
+ 
+ int
+ foo (void)
+ {
+   lab1:;
+   lab2:;
+   static int i = (intptr_t) &&lab1 - (intptr_t) &&lab2;
+   static int j = (intptr_t) &&lab1 - (intptr_t) &&lab2;
+   return i;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,30 ----
+ /* Test non-canonical BID significands: _Decimal128.  Bug 91226.  */
+ /* { dg-do run { target { { i?86-*-* x86_64-*-* } && lp64 } } } */
+ /* { dg-options "-std=gnu11 -O2" } */
+ 
+ extern void abort (void);
+ extern void exit (int);
+ 
+ union u
+ {
+   _Decimal128 d128;
+   unsigned __int128 u128;
+ };
+ 
+ #define U128(hi, lo) (((unsigned __int128) lo) \
+ 		      | (((unsigned __int128) hi) << 64))
+ 
+ int
+ main (void)
+ {
+   unsigned __int128 i = U128 (0x3041ed09bead87c0ULL, 0x378d8e6400000001ULL);
+   union u x;
+   _Decimal128 d128;
+   x.u128 = i;
+   d128 = x.d128;
+   volatile double d = d128;
+   if (d == 0)
+     exit (0);
+   else
+     abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,42 ----
+ /* Test non-canonical BID significands: _Decimal128, case where
+    combination field starts 11.  Bug 91226.  */
+ /* { dg-do run { target { { i?86-*-* x86_64-*-* } && lp64 } } } */
+ /* { dg-options "-std=gnu11 -O2" } */
+ 
+ extern void abort (void);
+ extern void exit (int);
+ 
+ union u
+ {
+   _Decimal128 d128;
+   unsigned __int128 u128;
+ };
+ 
+ #define U128(hi, lo) (((unsigned __int128) lo) \
+ 		      | (((unsigned __int128) hi) << 64))
+ 
+ int
+ main (void)
+ {
+   unsigned __int128 i = U128 (0x6e79000000000000ULL, 0x1ULL);
+   union u x;
+   _Decimal128 d128;
+   x.u128 = i;
+   d128 = x.d128;
+   volatile double d = d128;
+   if (d != 0)
+     abort ();
+   /* The above number should have quantum exponent 1234.  */
+   _Decimal128 t1233 = 0.e1233DL, t1234 = 0.e1234DL, t1235 = 0.e1235DL;
+   _Decimal128 dx;
+   dx = d128 + t1233;
+   if (__builtin_memcmp (&dx, &t1233, 16) != 0)
+     abort ();
+   dx = d128 + t1234;
+   if (__builtin_memcmp (&dx, &t1234, 16) != 0)
+     abort ();
+   dx = d128 + t1235;
+   if (__builtin_memcmp (&dx, &t1234, 16) != 0)
+     abort ();
+   exit (0);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,5 ----
+ /* Test non-canonical BID significands: _Decimal128.  Bug 91226.  */
+ /* { dg-do run { target { { i?86-*-* x86_64-*-* } && lp64 } } } */
+ /* { dg-options "-std=gnu11 -O0" } */
+ 
+ #include "bid-non-canonical-d128-1.c"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,6 ----
+ /* Test non-canonical BID significands: _Decimal128, case where
+    combination field starts 11.  Bug 91226.  */
+ /* { dg-do run { target { { i?86-*-* x86_64-*-* } && lp64 } } } */
+ /* { dg-options "-std=gnu11 -O0" } */
+ 
+ #include "bid-non-canonical-d128-2.c"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,26 ----
+ /* Test non-canonical BID significands: _Decimal32.  Bug 91226.  */
+ /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+ /* { dg-options "-std=gnu11 -O2" } */
+ 
+ extern void abort (void);
+ extern void exit (int);
+ 
+ union u
+ {
+   _Decimal32 d32;
+   unsigned int u32;
+ };
+ 
+ int
+ main (void)
+ {
+   union u x;
+   _Decimal32 d32;
+   x.u32 = 0x6cb89681U;
+   d32 = x.d32;
+   volatile double d = d32;
+   if (d == 0)
+     exit (0);
+   else
+     abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,5 ----
+ /* Test non-canonical BID significands: _Decimal32.  Bug 91226.  */
+ /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+ /* { dg-options "-std=gnu11 -O0" } */
+ 
+ #include "bid-non-canonical-d32-1.c"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,26 ----
+ /* Test non-canonical BID significands: _Decimal64.  Bug 91226.  */
+ /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+ /* { dg-options "-std=gnu11 -O2" } */
+ 
+ extern void abort (void);
+ extern void exit (int);
+ 
+ union u
+ {
+   _Decimal64 d64;
+   unsigned long long int u64;
+ };
+ 
+ int
+ main (void)
+ {
+   union u x;
+   _Decimal64 d64;
+   x.u64 = 0x6c7386f26fc10001ULL;
+   d64 = x.d64;
+   volatile double d = d64;
+   if (d == 0)
+     exit (0);
+   else
+     abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,5 ----
+ /* Test non-canonical BID significands: _Decimal64.  Bug 91226.  */
+ /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+ /* { dg-options "-std=gnu11 -O0" } */
+ 
+ #include "bid-non-canonical-d64-1.c"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/gomp/pr78884.c gcc-8.4.0/gcc/testsuite/gcc.dg/gomp/pr78884.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/gomp/pr78884.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/gomp/pr78884.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,16 ----
+ /* PR middle-end/78884 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fopenmp" } */
+ 
+ void bar (int *);
+ 
+ void
+ foo (int n)
+ {
+ #pragma omp simd
+   for (int i = 0; i < 1024; i++)
+     {
+       int vla[n];
+       bar (vla);
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/gomp/pr89796.c gcc-8.4.0/gcc/testsuite/gcc.dg/gomp/pr89796.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/gomp/pr89796.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/gomp/pr89796.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,23 ----
+ /* PR c++/89796 */
+ /* { dg-do compile } */
+ /* { dg-additional-options "-Wunused-value" } */
+ 
+ int
+ f1 (int *p)
+ {
+   int r;
+   #pragma omp atomic capture		/* { dg-bogus "value computed is not used" } */
+   { r = *p; (*p)++; }
+   return r;
+ }
+ 
+ int
+ f2 (int *p)
+ {
+   int s
+     = ({ int r;
+ 	 #pragma omp atomic capture	/* { dg-bogus "value computed is not used" } */
+ 	 { r = *p; (*p)++; }
+ 	 r; });
+   return s;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/gomp/pr90900.c gcc-8.4.0/gcc/testsuite/gcc.dg/gomp/pr90900.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/gomp/pr90900.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/gomp/pr90900.c	Wed Mar  4 08:30:01 2020
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fopenmp -g" } */
+ 
+ void f (int a)
+ {
+   void *x = &&lab;
+ #pragma omp parallel
+   if (a)
+     { lab: __builtin_unreachable(); }
+   x;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/guality/pr54970.c gcc-8.4.0/gcc/testsuite/gcc.dg/guality/pr54970.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/guality/pr54970.c	Fri Dec  8 12:11:02 2017
--- gcc-8.4.0/gcc/testsuite/gcc.dg/guality/pr54970.c	Wed Mar  4 08:30:02 2020
***************
*** 8,24 ****
  int
  main ()
  {
!   int a[] = { 1, 2, 3 };	/* { dg-final { gdb-test 15 "a\[0\]" "1" } } */
    int *p = a + 2;		/* { dg-final { gdb-test 15 "a\[1\]" "2" } } */
    int *q = a + 1;		/* { dg-final { gdb-test 15 "a\[2\]" "3" } } */
  				/* { dg-final { gdb-test 15 "*p" "3" } } */
    asm volatile (NOP);		/* { dg-final { gdb-test 15 "*q" "2" } } */
!   *p += 10;			/* { dg-final { gdb-test 20 "a\[0\]" "1" } } */
  				/* { dg-final { gdb-test 20 "a\[1\]" "2" } } */
  				/* { dg-final { gdb-test 20 "a\[2\]" "13" } } */
  				/* { dg-final { gdb-test 20 "*p" "13" } } */
    asm volatile (NOP);		/* { dg-final { gdb-test 20 "*q" "2" } } */
!   *q += 10;			/* { dg-final { gdb-test 25 "a\[0\]" "1" } } */
  				/* { dg-final { gdb-test 25 "a\[1\]" "12" } } */
  				/* { dg-final { gdb-test 25 "a\[2\]" "13" } } */
  				/* { dg-final { gdb-test 25 "*p" "13" } } */
--- 8,24 ----
  int
  main ()
  {
!   int a[] = { 1, 2, 3 };	/* { dg-final { gdb-test 15 "a\[0\]" "1" { xfail { *-*-* } } } } */
    int *p = a + 2;		/* { dg-final { gdb-test 15 "a\[1\]" "2" } } */
    int *q = a + 1;		/* { dg-final { gdb-test 15 "a\[2\]" "3" } } */
  				/* { dg-final { gdb-test 15 "*p" "3" } } */
    asm volatile (NOP);		/* { dg-final { gdb-test 15 "*q" "2" } } */
!   *p += 10;			/* { dg-final { gdb-test 20 "a\[0\]" "1" { xfail { *-*-* } } } } */
  				/* { dg-final { gdb-test 20 "a\[1\]" "2" } } */
  				/* { dg-final { gdb-test 20 "a\[2\]" "13" } } */
  				/* { dg-final { gdb-test 20 "*p" "13" } } */
    asm volatile (NOP);		/* { dg-final { gdb-test 20 "*q" "2" } } */
!   *q += 10;			/* { dg-final { gdb-test 25 "a\[0\]" "1" { xfail { *-*-* } } } } */
  				/* { dg-final { gdb-test 25 "a\[1\]" "12" } } */
  				/* { dg-final { gdb-test 25 "a\[2\]" "13" } } */
  				/* { dg-final { gdb-test 25 "*p" "13" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/inline-42.c gcc-8.4.0/gcc/testsuite/gcc.dg/inline-42.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/inline-42.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/inline-42.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,50 ----
+ /* Test inline functions declared in inner scopes.  Bug 93072.  */
+ /* { dg-do compile } */
+ /* { dg-options "" } */
+ 
+ void
+ inline_1 (void)
+ {
+ }
+ 
+ void
+ inline_2 (void)
+ {
+ }
+ 
+ static void
+ inline_static_1 (void)
+ {
+ }
+ 
+ static void
+ inline_static_2 (void)
+ {
+ }
+ 
+ static void
+ test (void)
+ {
+   inline void inline_1 (void);
+   if (inline_1 == 0) ;
+   extern inline void inline_2 (void);
+   if (inline_2 == 0) ;
+   inline void inline_3 (void);
+   if (inline_3 == 0) ;
+   extern inline void inline_4 (void);
+   if (inline_4 == 0) ;
+   inline void inline_static_1 (void);
+   if (inline_static_1 == 0) ;
+   extern inline void inline_static_2 (void);
+   if (inline_static_2 == 0) ;
+ }
+ 
+ void
+ inline_3 (void)
+ {
+ }
+ 
+ void
+ inline_4 (void)
+ {
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/inline-43.c gcc-8.4.0/gcc/testsuite/gcc.dg/inline-43.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/inline-43.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/inline-43.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,50 ----
+ /* Test inline functions declared in inner scopes.  Bug 93072.  */
+ /* { dg-do compile } */
+ /* { dg-options "-fgnu89-inline" } */
+ 
+ void
+ inline_1 (void)
+ {
+ }
+ 
+ void
+ inline_2 (void)
+ {
+ }
+ 
+ static void
+ inline_static_1 (void)
+ {
+ }
+ 
+ static void
+ inline_static_2 (void)
+ {
+ }
+ 
+ static void
+ test (void)
+ {
+   inline void inline_1 (void);
+   if (inline_1 == 0) ;
+   extern inline void inline_2 (void);
+   if (inline_2 == 0) ;
+   inline void inline_3 (void);
+   if (inline_3 == 0) ;
+   extern inline void inline_4 (void);
+   if (inline_4 == 0) ;
+   inline void inline_static_1 (void);
+   if (inline_static_1 == 0) ;
+   extern inline void inline_static_2 (void);
+   if (inline_static_2 == 0) ;
+ }
+ 
+ void
+ inline_3 (void)
+ {
+ }
+ 
+ void
+ inline_4 (void)
+ {
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/ipa/ipcp-5.c gcc-8.4.0/gcc/testsuite/gcc.dg/ipa/ipcp-5.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/ipa/ipcp-5.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/ipa/ipcp-5.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,45 ----
+ /* Test that estimated local cloning time benefit of extern inline functions is
+    zero.  */
+ 
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fdump-ipa-cp -fno-early-inlining"  } */
+ /* { dg-add-options bind_pic_locally } */
+ 
+ extern int get_int (void);
+ extern void use_stuff (int);
+ 
+ int arr[10];
+ 
+ inline void
+ f (int a)
+ {
+   arr[0] += a + 5;
+   arr[1] += a + 50;
+   arr[2] += a - 3;
+   arr[3] += a;
+   arr[4] += a + 21;
+   arr[5] += a + 900;
+   arr[6] += a + 2;
+   arr[7] += a + 3456;
+   arr[8] += a + 3;
+   arr[9] += a + 32;
+   use_stuff (a);
+ }
+ 
+ 
+ int
+ entry (void)
+ {
+   int i;
+   for (i = 0; i < 100; i++)
+     f (7);
+   for (i = 0; i < 100; i++)
+     f (get_int ());
+   return 0;
+ }
+ 
+ 
+ /* { dg-final { scan-ipa-dump "loc_time: 0" "cp" } } */
+ /* { dg-final { scan-ipa-dump-not "replacing param.*with const" "cp"  } } */
+ 
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/ipa/ipcp-agg-12.c gcc-8.4.0/gcc/testsuite/gcc.dg/ipa/ipcp-agg-12.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/ipa/ipcp-agg-12.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/ipa/ipcp-agg-12.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,53 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fno-ipa-sra -fdump-ipa-cp-details --param=ipa-cp-eval-threshold=2"  } */
+ 
+ struct S
+ {
+   int a, b, c;
+ };
+ 
+ int __attribute__((noinline)) foo (int i, struct S s);
+ int __attribute__((noinline)) bar (int i, struct S s);
+ int __attribute__((noinline)) baz (int i, struct S s);
+ 
+ 
+ int __attribute__((noinline))
+ bar (int i, struct S s)
+ {
+   return baz (i, s);
+ }
+ 
+ int __attribute__((noinline))
+ baz (int i, struct S s)
+ {
+   return foo (i, s);
+ }
+ 
+ int __attribute__((noinline))
+ foo (int i, struct S s)
+ {
+   if (i == 2)
+     return 0;
+   else
+     return s.b * s.b + bar (i - 1, s);
+ }
+ 
+ volatile int g;
+ 
+ void entry (void)
+ {
+   struct S s;
+   s.b = 4;
+   g = bar (g, s);
+ }
+ 
+ 
+ void entry2 (void)
+ {
+   struct S s;
+   s.b = 6;
+   g = baz (g, s);
+ }
+ 
+ 
+ /* { dg-final { scan-ipa-dump-times "adding an extra caller" 2 "cp" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr84032.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr84032.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr84032.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr84032.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,23 ----
+ /* PR rtl-optimization/84032 */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fmodulo-sched" } */
+ /* { dg-additional-options "-mcpu=power6" { target { powerpc-*-* } } } */
+ 
+ void
+ yr (int cm)
+ {
+   int ka = cm;
+ 
+   for (;;)
+     {
+       short int m0;
+ 
+       for (m0 = 0; m0 < 6; ++m0)
+         {
+           ka &= 1;
+           cm *= 2;
+         }
+ 
+       ka = (ka == 0) ? cm : 0;
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr87979.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr87979.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr87979.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr87979.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ /* PR rtl-optimization/87979 */
+ /* { dg-do compile } */
+ /* { dg-options "-Os -fmodulo-sched -fno-tree-loop-im" } */
+ /* { dg-additional-options "-march=z196" { target { s390*-*-* } } } */
+ 
+ void foo(void)
+ {
+   static int m;
+   for (int i = 0; i < 10; ++i)
+     m++;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr88074-2.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr88074-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr88074-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr88074-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,17 ----
+ /* PR middle-end/88074 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ /* { dg-add-options float128 } */
+ /* { dg-require-effective-target float128 } */
+ /* { dg-final { scan-tree-dump-not "link_error " "optimized" } } */
+ 
+ extern void link_error (void);
+ int
+ main ()
+ {
+   if (((__FLT128_MAX__ * 0.5 + __FLT128_MAX__ * 0.5i)
+        / (__FLT128_MAX__ * 0.25 + __FLT128_MAX__ * 0.25i))
+       != (_Complex _Float128) 2)
+     link_error ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr88074.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr88074.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr88074.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr88074.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O" } */
+ 
+ #include <complex.h>
+ 
+ int main()
+ {
+   _Complex double x;
+   __real x = 3.091e+8;
+   __imag x = -4.045e+8;
+   /* This used to spend huge amounts of compile-time inside mpc.  */
+   volatile _Complex double y = ctan (x);
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr89037.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr89037.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr89037.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr89037.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-options "" } */
+ 
+ struct s
+ {
+   __int128 y : 66;
+ };
+ typedef struct s T;
+ T a[] = { 1, 10000, 0x12345, 0xff000001, 1ULL << 63, (__int128) 1 << 64,
+ 	  ((__int128) 1 << 64) | 1 };
+ 
+ int
+ main (void)
+ {
+   if (a[0].y != 1
+       || a[1].y != 10000
+       || a[2].y != 0x12345
+       || a[3].y != 0xff000001
+       || a[4].y != (1ULL << 63)
+       || a[5].y != ((__int128) 1 << 64)
+       || a[6].y != (((__int128) 1 << 64) | 1))
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr89520-1.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr89520-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr89520-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr89520-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,13 ----
+ /* PR c/89520 */
+ /* { dg-do compile } */
+ /* { dg-options "-Ofast -w" } */
+ 
+ #define A(name) __typeof (__builtin_##name (0)) name (); long name##1 () { return name (); }
+ #define B(name) A(name) A(name##f) A(name##l)
+ B (ceil)
+ B (floor)
+ B (round)
+ B (trunc)
+ B (nearbyint)
+ B (rint)
+ B (logb)
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr89520-2.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr89520-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr89520-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr89520-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,42 ----
+ /* PR c/89520 */
+ /* { dg-do compile } */
+ /* { dg-options "-Ofast -w" } */
+ 
+ #define A(name) __typeof (__builtin_##name (0)) name (); \
+   float name##1 () { return name (); } \
+   double name##2 () { return name (); }
+ #define B(name) A(name) A(name##l)
+ B (cosh)
+ B (exp)
+ B (exp10)
+ B (exp2)
+ B (expm1)
+ B (gamma)
+ B (j0)
+ B (j1)
+ B (lgamma)
+ B (pow10)
+ B (sinh)
+ B (tgamma)
+ B (y0)
+ B (y1)
+ B (acos)
+ B (acosh)
+ B (asin)
+ B (asinh)
+ B (atan)
+ B (atanh)
+ B (cbrt)
+ B (cos)
+ B (erf)
+ B (erfc)
+ B (log)
+ B (log10)
+ B (log2)
+ B (log1p)
+ B (sin)
+ B (tan)
+ B (tanh)
+ B (sqrt)
+ B (fabs)
+ B (logb)
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr89521-1.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr89521-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr89521-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr89521-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,13 ----
+ /* PR c/89521 */
+ /* { dg-do compile } */
+ /* { dg-options "-Ofast -w" } */
+ 
+ #define A(name) __typeof (__builtin_##name (0)) name (); long name##1 () { return name (1); }
+ #define B(name) A(name) A(name##f) A(name##l)
+ B (ceil)
+ B (floor)
+ B (round)
+ B (trunc)
+ B (nearbyint)
+ B (rint)
+ B (logb)
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr89521-2.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr89521-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr89521-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr89521-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,42 ----
+ /* PR c/89521 */
+ /* { dg-do compile } */
+ /* { dg-options "-Ofast -w" } */
+ 
+ #define A(name) __typeof (__builtin_##name (0)) name (); \
+   float name##1 () { return name (1); } \
+   double name##2 () { return name (1); }
+ #define B(name) A(name) A(name##l)
+ B (cosh)
+ B (exp)
+ B (exp10)
+ B (exp2)
+ B (expm1)
+ B (gamma)
+ B (j0)
+ B (j1)
+ B (lgamma)
+ B (pow10)
+ B (sinh)
+ B (tgamma)
+ B (y0)
+ B (y1)
+ B (acos)
+ B (acosh)
+ B (asin)
+ B (asinh)
+ B (atan)
+ B (atanh)
+ B (cbrt)
+ B (cos)
+ B (erf)
+ B (erfc)
+ B (log)
+ B (log10)
+ B (log2)
+ B (log1p)
+ B (sin)
+ B (tan)
+ B (tanh)
+ B (sqrt)
+ B (fabs)
+ B (logb)
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr89590.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr89590.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr89590.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr89590.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ /* PR middle-end/89590 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wall -w" } */
+ 
+ void free (void *);
+ 
+ void
+ foo (void)
+ {
+   ((void (*)()) free) ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr89679.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr89679.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr89679.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr89679.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,26 ----
+ /* PR rtl-optimization/89679 */
+ /* { dg-do run } */
+ /* { dg-options "-Og -frerun-cse-after-loop -fno-tree-fre" } */
+ 
+ unsigned short g;
+ 
+ void
+ foo (unsigned long long x)
+ {
+   if (x != 0xffff)
+     __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+ #if __SIZEOF_SHORT__ == 2 && __SIZEOF_INT__ == 4 && __CHAR_BIT__ == 8
+   unsigned short d = 0;
+   unsigned long long x, c = ~0;
+   c = c >> d;
+   __builtin_memset (&d, c, 2);
+   x = d + g;
+   foo (x);
+ #endif
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr89734.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr89734.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr89734.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr89734.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,12 ----
+ /* PR c/89734 */
+ /* { dg-do compile } */
+ /* { dg-options "" } */
+ 
+ typedef const int CI;
+ typedef _Atomic int AI;
+ 
+ CI foo (void);
+ const int foo (void);
+ 
+ AI baz (void);
+ _Atomic int baz (void);
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr90010.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr90010.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr90010.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr90010.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,27 ----
+ /* PR c++/90010 */
+ /* { dg-do compile } */
+ /* { dg-options "-Wall" } */
+ 
+ char b[4096] = "abc";
+ void bar (char *);
+ 
+ void
+ foo ()
+ {
+   char d[4096];
+   __builtin_snprintf (d, sizeof d, "%sfoobarbazquxquuxquuzthudfred", b);	/* { dg-warning "'foobarbazquxquuxquuzthudfred' directive output may be truncated writing 28 bytes into a region of size between 1 and 4096" } */
+   /* { dg-message "'__builtin_snprintf' output between 29 and 4124 bytes into a destination of size 4096" "" { target *-*-* } .-1 } */
+   bar (d);
+   __builtin_snprintf (d, sizeof d, "%sfoobarbazquxquuxquuzcorgefred", b);	/* { dg-warning "'foobarbazquxquuxquuzcorgefred' directive output may be truncated writing 29 bytes into a region of size between 1 and 4096" } */
+   /* { dg-message "'__builtin_snprintf' output between 30 and 4125 bytes into a destination of size 4096" "" { target *-*-* } .-1 } */
+   bar (d);
+   __builtin_snprintf (d, sizeof d, "%sfoobarbazquxquuxquuzcorgewaldo", b);	/* { dg-warning "'foobarbazquxquuxquuzcorgewaldo' directive output may be truncated writing 30 bytes into a region of size between 1 and 4096" } */
+   /* { dg-message "'__builtin_snprintf' output between 31 and 4126 bytes into a destination of size 4096" "" { target *-*-* } .-1 } */
+   bar (d);
+   __builtin_snprintf (d, sizeof d, "%sfoobarbazquxquuxquuzcorgegarply", b);	/* { dg-warning "'foobarbazquxquuxquuzcorgegarply' directive output may be truncated writing 31 bytes into a region of size between 1 and 4096" } */
+   /* { dg-message "'__builtin_snprintf' output between 32 and 4127 bytes into a destination of size 4096" "" { target *-*-* } .-1 } */
+   bar (d);
+   __builtin_snprintf (d, sizeof d, "%sfoobarfredquxquuxquuzcorgegarply", b);	/* { dg-warning "'foobarfredquxquuxquuzcorgega\.\.\.' directive output may be truncated writing 32 bytes into a region of size between 1 and 4096" } */
+   /* { dg-message "'__builtin_snprintf' output between 33 and 4128 bytes into a destination of size 4096" "" { target *-*-* } .-1 } */
+   bar (d);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr90082.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr90082.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr90082.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr90082.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,13 ----
+ /* PR rtl-optimization/90082 */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fnon-call-exceptions -ftrapv" } */
+ 
+ void *buf[5];
+ 
+ void
+ foo (int a)
+ {
+   if (__builtin_setjmp (buf) == 0)
+     __asm__ ("" : : "n" (a * 2));	/* { dg-error "impossible constraint in 'asm'" } */
+ 					/* { dg-warning "asm operand 0 probably doesn't match constraints" "" { target *-*-* } .-1 } */
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr90733.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr90733.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr90733.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr90733.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,22 ----
+ /* PR debug/90733 */
+ /* { dg-do compile } */
+ /* { dg-options "-g -O2 -w" } */
+ 
+ struct S { unsigned a : 1; };
+ union U { struct S b; _Complex unsigned c; };
+ 
+ union U
+ foo (union U d)
+ {
+   union U e = d;
+   return e;
+ }
+ 
+ int
+ bar (void)
+ {
+   union U x, y;
+   x.c = x.b.a;
+   y = foo (x);
+   return x.c != y.c;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr90756.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr90756.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr90756.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr90756.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,26 ----
+ /* PR rtl-optimization/90756 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wno-psabi" } */
+ /* { dg-additional-options "-mno-sse" { target ia32 } } */
+ 
+ typedef float B __attribute__((vector_size(4 * sizeof (float))));
+ typedef unsigned long long C __attribute__((vector_size(4 * sizeof (long long))));
+ typedef short D __attribute__((vector_size(4 * sizeof (short))));
+ B z;
+ void foo (C);
+ C bar (D);
+ B baz ();
+ D qux (B);
+ 
+ void
+ quux (int x)
+ {
+   B n = z, b = z;
+   while (1)
+     switch (x)
+       {
+       case 0: n = baz (); /* FALLTHRU */
+       case 1: { B o = n; n = b; b = o; } /* FALLTHRU */
+       case 2: { D u = qux (b); C v = bar (u); foo (v); }
+       }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr90760.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr90760.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr90760.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr90760.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,9 ----
+ /* PR c/90760 */
+ /* { dg-do compile } */
+ /* { dg-require-alias "" } */
+ /* { dg-require-named-sections "" } */
+ 
+ void bar (void) {}
+ void foo (void) __attribute__ ((alias ("bar")));	/* { dg-error "section of alias 'foo' must match section of its target" } */
+ void foo (void) __attribute__ ((section ("baz")));
+ void qux (void) __attribute__ ((alias ("bar"), section ("baz")));	/* { dg-error "section of alias 'qux' must match section of its target" } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr90898.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr90898.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr90898.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr90898.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,16 ----
+ /* PR c/90898 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ void *p;
+ int bar (void);
+ void baz (int *);
+ 
+ void
+ foo (void)
+ {
+   p = __builtin_stack_save ();
+   int a[(bar (), 2)];
+   baz (a);
+   __builtin_stack_restore (p);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr91854.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr91854.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr91854.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr91854.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,55 ----
+ /* PR target/91854 */
+ /* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */
+ /* { dg-do assemble } */
+ /* { dg-options "-O2 -Wno-int-conversion" }  */
+ /* { dg-additional-options "-fPIE -mcpu=niagara4" { target sparc*-*-* } } */
+ 
+ typedef struct {
+   long a;
+ } __attribute__((packed)) c;
+ void *e, *f;
+ int i, j, ab, k, l, m, o;
+ inline int g(int p) {
+   if (__builtin_expect(p, 1)) {
+     const int aa = ((c *)e)->a ^ ((c *)f)->a;
+     if (aa)
+       f = sizeof(long);
+     return f;
+   }
+ }
+ void d();
+ int am ();
+ inline int n(char p, int u) {
+   int q, r, ac = i;
+   short b = m;
+   while (r && u) {
+     if (l) {
+       if (k) {
+         void *h = i;
+         if (__builtin_expect(p, 1)) {
+           const int aa = ((c *)e)->a ^ ((c *)h)->a;
+           if (aa)
+             h = sizeof(long);
+           q = h;
+         }
+       }
+       ab = q;
+       char s;
+       if (s) {
+         char t = l = g(t);
+       }
+     }
+     if (j && b)
+       if (ac)
+         d();
+   }
+ }
+ void v() {
+   const int al = am();
+   if (al)
+     n(am, v);
+ an:
+   n(am, v);
+   if (o)
+     goto an;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr92591-1.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr92591-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr92591-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr92591-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ /* PR rtl-optimization/92591 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fmodulo-sched -fweb -fno-dce -fno-ivopts -fno-sched-pressure -fno-tree-loop-distribute-patterns --param sms-dfa-history=1" } */
+ /* { dg-additional-options "-mcpu=e500mc" { target { powerpc-*-* } } } */
+ 
+ void
+ wf (char *mr, int tc)
+ {
+   while (tc-- > 0)
+     *mr++ = 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr92591-2.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr92591-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr92591-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr92591-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,5 ----
+ /* PR rtl-optimization/92591 */
+ /* { dg-do compile } */
+ /* { dg-options "-Os -fmodulo-sched -fmodulo-sched-allow-regmoves --param sms-dfa-history=8" } */
+ 
+ #include "../gcc.c-torture/execute/pr61682.c"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr92768.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr92768.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr92768.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr92768.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,7 ----
+ /* PR tree-optimization/92768 */
+ /* { dg-options "-O2 -fno-signed-zeros -fdump-tree-optimized -w -Wno-psabi" } */
+ 
+ typedef float v4sf __attribute__((vector_size(16)));
+ v4sf f () { return (v4sf) { 0.0, -0.0, 0.0, -0.0 }; }
+ 
+ /* { dg-final { scan-tree-dump {{ 0\.0, -0\.0, 0\.0, -0\.0 }} "optimized" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr93054.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr93054.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr93054.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr93054.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-w" } */
+ 
+ __attribute__ ((returns_twice)) int
+ bp (int);
+ 
+ __attribute__ ((noreturn)) int
+ cb (void)
+ {
+   return bp (cb ());
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr93576.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr93576.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr93576.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr93576.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,10 ----
+ /* PR c/93576 */
+ /* { dg-do compile } */
+ /* { dg-options "" } */
+ 
+ void
+ foo (void)
+ {
+   int b[] = { 0 };
+   (char (*)[(1, 7, 2)]) 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/pr93820.c gcc-8.4.0/gcc/testsuite/gcc.dg/pr93820.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/pr93820.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/pr93820.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,26 ----
+ /* PR tree-optimization/93820 */
+ /* { dg-do run } */
+ /* { dg-options "-O2 -fno-tree-dse" } */
+ 
+ typedef int v4si __attribute__((vector_size(4 * sizeof (int))));
+ int a[10];
+ 
+ __attribute__((noipa)) int
+ foo (int *p)
+ {
+   a[6] = *p;
+   a[4] = 1;
+   *(((v4si *)&a[0]) + 1) = (v4si) { 0, 0, 0, 0 };
+   a[3] = 0;
+ }
+ 
+ int
+ main ()
+ {
+   int i = 0;
+   foo (&i);
+   for (i = 0; i < 10; i++)
+     if (a[i])
+       __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/neon-immediate-timode.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/neon-immediate-timode.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/neon-immediate-timode.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/neon-immediate-timode.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,10 ----
+ union a {
+   char b;
+   long long c;
+ };
+ union a d;
+ int g(int, union a, union a);
+ void e() {
+   union a f[2] = {-1L};
+   g(0, d, f[0]);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr89091.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr89091.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr89091.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr89091.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,10 ----
+ /* PR middle-end/89091 */
+ /* { dg-do compile { target int128 } } */
+ 
+ struct S { unsigned __int128 s : 65; };
+ 
+ int
+ foo (struct S *x, int y)
+ {
+   return y && x->s;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr89505.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr89505.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr89505.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr89505.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do run } */
+ 
+ struct S { int i; void *p; int j; };
+ int a;
+ int __attribute__((noinline))
+ foo (struct S * __restrict p, int q)
+ {
+   int *x = &p->j;
+   if (q)
+     x = &a;
+   p->j = 1;
+   *x = 2;
+   return p->j;
+ }
+ 
+ int main()
+ {
+   struct S s;
+   if (foo (&s, 0) != 2)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr89572.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr89572.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr89572.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr89572.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-finline-functions" } */
+ 
+ int vh, it, k1;
+ 
+ void
+ vn (void)
+ {
+   ++vh;
+   if (vh == 0 && it == 0)
+     k1 = -k1;
+ }
+ 
+ __attribute__ ((returns_twice)) void
+ ef (int *uw)
+ {
+   while (uw != (void *) 0)
+     {
+       vn ();
+       *uw = 0;
+     }
+ }
+ 
+ void
+ gu (int *uw)
+ {
+   ef (uw);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr89595.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr89595.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr89595.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr89595.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,39 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-fgimple" } */
+ 
+ int __attribute__((noipa))
+ __GIMPLE(startwith("dom")) bar(int cond, int val)
+ {
+   int i;
+ 
+   if (0 != 0)
+     goto bb_6;
+   else
+     goto bb_2;
+ 
+ bb_2:
+   if (cond_5(D) != 0)
+     goto bb_4;
+   else
+     goto bb_5;
+ 
+ bb_4:
+   i_6 = val_2(D);
+   i_1 = val_2(D) > 0 ? i_6 : 0;
+ 
+ bb_5:
+   i_3 = __PHI (bb_4: i_1, bb_2: 0);
+   return i_3;
+ 
+ bb_6:
+   i_4 = 1;
+   i_9 = 2;
+   goto bb_2;
+ }
+ 
+ int main()
+ {
+   if (bar (1, 1) != 1)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr89677.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr89677.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr89677.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr89677.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target int32plus } */
+ 
+ int a, b, d;
+ unsigned c;
+ float e, f, g;
+ void h() {
+     float *i = &g;
+     for (; c < 10; c += 3)
+       for (; d; d += 3) {
+ 	  a = *i;
+ 	  g = f + 0;
+ 	  f = b + *i + (b - e + 305219) + -b + 3;
+       }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr89710.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr89710.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr89710.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr89710.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ 
+ void
+ gm (int *);
+ 
+ __attribute__ ((returns_twice)) void
+ jg (void)
+ {
+ }
+ 
+ void
+ eb (void)
+ {
+   int r6 = 0;
+ 
+   if (r6 != 0)
+     gm (&r6);
+ }
+ 
+ void
+ gm (int *r6)
+ {
+   jg ();
+ 
+   for (;;)
+     {
+       eb ();
+       *r6 = 0;
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr90020.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr90020.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr90020.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr90020.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do run } */
+ /* { dg-require-weak "" } */
+ /* { dg-additional-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } } */
+ /* { dg-additional-options "-Wl,-flat_namespace" { target *-*-darwin[89]* } } */
+ 
+ void __attribute__((noinline,noclone))
+ check (int i)
+ {
+   if (i == 0)
+     __builtin_exit (0);
+ }
+ 
+ int i;
+ extern int x __attribute__((weak));
+ 
+ int main(int argc, char **argv)
+ {
+   if (argc)
+     {
+       check (i);
+       return x;
+     }
+   else
+     {
+       check (i);
+       return x-1;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr90071.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr90071.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr90071.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr90071.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile } */
+ 
+ int a;
+ static int b;
+ 
+ void
+ foo ()
+ {
+   int d;
+   int e = (int) (__INTPTR_TYPE__) &&f;
+   void *g = &&h;
+ h: ++e;
+    if (a)
+      i: goto *g;
+    for (;;)
+      {
+        e = 0;
+        if (b)
+ 	 goto i;
+      }
+ f:
+    goto *({ d || e < 0 || e >= 2; });
+    &e;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr90278.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr90278.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr90278.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr90278.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fexceptions -fnon-call-exceptions" } */
+ 
+ double
+ hc (void)
+ {
+   double dp = 0.0;
+   double ek[1];
+ 
+   ek[0] = 1.0 / dp < 0.0;
+ 
+   return ek[0];
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr90328.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr90328.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr90328.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr90328.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do run } */
+ 
+ void g(int*__restrict x, int*y)
+ {
+   *x = *y;
+ }
+ 
+ void __attribute__((noipa)) f(int* a,int* b)
+ {
+   for(int i=0;i<1024;++i)
+     g(a+i,b+i);
+ }
+ 
+ int main()
+ {
+   int x[1025];
+   for (int i = 0; i < 1025; ++i)
+     x[i] = i+1;
+   f(x+1, x);
+   for (int i = 0; i < 1025; ++i)
+     if (x[i] != 1)
+       __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr91126.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr91126.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr91126.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr91126.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do run } */
+ 
+ struct S
+ {
+   __INT32_TYPE__ a : 24;
+   __INT32_TYPE__ b : 8;
+ } s;
+ 
+ int
+ main()
+ {
+   s.a = 0xfefefe;
+   s.b = 0xfe;
+   unsigned char c;
+   c = ((unsigned char *)&s)[0];
+   if (c != 0xfe)
+     __builtin_abort ();
+   c = ((unsigned char *)&s)[1];
+   if (c != 0xfe)
+     __builtin_abort ();
+   c = ((unsigned char *)&s)[2];
+   if (c != 0xfe)
+     __builtin_abort ();
+   c = ((unsigned char *)&s)[3];
+   if (c != 0xfe)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr91200.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr91200.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr91200.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr91200.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ 
+ int printf (const char *, ...);
+ 
+ char a;
+ int b, c, **d;
+ 
+ int main ()
+ {
+   int f = -128, *g, *h[2] = {0, 0}, i;
+   printf("0");
+   if (a)
+     {
+       while (f > a) {
+         int *j = &i;
+         *j |= 0;
+       }
+       h[i] = &c;
+     }
+   if (h[1])
+     {
+       int **k = &g;
+       *k = &f;
+       while (i)
+         {
+           int **l[] = {&g};
+         }
+       int **m = &g;
+       *d = *m = &b;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr91812.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr91812.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr91812.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr91812.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ /* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } { "" } } */
+ /* { dg-options "-fdump-tree-optimized-blocks" } */
+ 
+ unsigned register1;
+ unsigned register2;
+ 
+ void busy_wait_for_register (int x)
+ {
+   volatile unsigned* ptr;
+   switch(x) {
+     case 0x1111:
+     ptr = &register1;
+     break;
+ 
+     case 0x2222:
+     ptr = &register2;
+     break;
+ 
+     default:
+     return;
+   }
+   while (*ptr) {}
+ }
+ 
+ /* { dg-final { scan-tree-dump "loop depth 1" "optimized" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr92704.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr92704.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr92704.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr92704.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fexceptions -fnon-call-exceptions -fno-tree-dce -ftree-loop-if-convert" } */
+ int zr, yx;
+ 
+ void __attribute__ ((simd))
+ oj (int rd, int q7)
+ {
+   int wo = (__UINTPTR_TYPE__)&rd;
+ 
+   while (q7 < 1)
+     {
+       int kv;
+       short int v3;
+ 
+       for (v3 = 0; v3 < 82; v3 += 3)
+         {
+         }
+ 
+       kv = zr ? 0 : v3;
+       yx = kv < rd;
+       zr = zr && yx;
+       ++q7;
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr93381.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr93381.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/pr93381.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/pr93381.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do run } */
+ 
+ static struct S { int *p1; int *p2; } s;
+ typedef __UINTPTR_TYPE__ uintptr_t;
+ int foo()
+ {
+   int i = 1, j = 2;
+   struct S s;
+   int **p;
+   s.p1 = &i;
+   s.p2 = &j;
+   p = &s.p1;
+   uintptr_t pi = (uintptr_t)p;
+   pi = pi + sizeof (int *);
+   p = (int **)pi;
+   **p = 3;
+   return j;
+ }
+ 
+ int main()
+ {
+   if (foo () != 3)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/torture/restrict-7.c gcc-8.4.0/gcc/testsuite/gcc.dg/torture/restrict-7.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/torture/restrict-7.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/torture/restrict-7.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do run } */
+ 
+ extern void abort (void);
+ 
+ static inline __attribute__((always_inline)) void
+ copy(int *restrict a, int *restrict b)
+ {
+   *b = *a;
+   *a = 7;
+ }
+ 
+ void __attribute__((noinline))
+ floppy(int mat[static 2], unsigned idxs[static 3])
+ {
+   for (int i = 0; i < 3; i++)
+     copy(&mat[i%2], &mat[idxs[i]]);
+ }
+ 
+ int main()
+ {
+   int mat[2] = {10, 20};
+   unsigned idxs[3] = {1, 0, 1};
+   floppy(mat, idxs);
+   if (mat[0] != 7 || mat[1] != 10)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/tree-ssa/pr89546.c gcc-8.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr89546.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/tree-ssa/pr89546.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr89546.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,100 ----
+ /* { dg-do run } */
+ /* { dg-options "-O" } */
+ 
+ struct I
+ {
+   int i;
+ };
+ 
+ struct A
+ {
+   struct I i1;
+   struct I i2;
+   struct I i3;
+ };
+ 
+ struct B
+ {
+   struct I i0;
+   struct A a;
+ };
+ 
+ struct C
+ {
+   struct I i00;
+   struct B b;
+ };
+ 
+ volatile int v;
+ 
+ void __attribute__((noipa))
+ consume_i (struct I i)
+ {
+   v = i.i;
+ }
+ 
+ void __attribute__((noipa))
+ consume_a (struct A a)
+ {
+   v = a.i1.i;
+ }
+ 
+ void __attribute__((noipa))
+ consume_b (struct B b)
+ {
+   v = b.a.i1.i;
+ }
+ 
+ void __attribute__((noipa))
+ consume_c (struct C c)
+ {
+   v = c.b.a.i1.i;
+ }
+ 
+ 
+ 
+ 
+ int __attribute__((noipa))
+ foo (struct I input)
+ {
+   struct I i1, i2, i3;
+   struct A a1, a2, a3;
+   struct B b1;
+   struct C c;
+ 
+   i1 = input;
+   a1.i1 = i1;
+   b1.a = a1;
+ 
+   i2.i = 1;
+   b1.i0 = i2;
+ 
+   c.b = b1;
+ 
+   a2 = c.b.a;
+   a3 = a2;
+   i3 = a3.i1;
+ 
+   int t = c.b.i0.i;
+   a2.i3.i = 4;
+   consume_i (i1);
+   consume_i (i2);
+   consume_b (b1);
+   consume_a (a1);
+   consume_a (a2);
+   consume_a (a3);
+   consume_c (c);
+ 
+   return i3.i + t;
+ }
+ 
+ int
+ main (int argc, char *argv[])
+ {
+   struct I s;
+   s.i = 1234;
+   int i = foo (s);
+   if (i != 1235)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/tree-ssa/pr89725.c gcc-8.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr89725.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/tree-ssa/pr89725.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr89725.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -floop-interchange -fno-tree-dce" } */
+ int abs (int);
+ int find_sad_16x16(int *intra_mode)
+ {
+   int current_intra_sad_2,best_intra_sad2;
+   int M1[16][16],M0[4][4][4][4],M3[4],M4[4][4];
+   int i,j,k;
+   int ii,jj;
+   int up_avail, left_avail, left_up_avail;
+   for (i=0;i<17;i++)
+     if (left_up_avail)
+       {
+ 	for (jj=0;jj<4;jj++)
+ 	  for (ii=0;ii<4;ii++)
+ 	    for (j=0;j<4;j++)
+ 	      for (i=0;i<4;i++)
+ 		{
+ 		  M0[i][ii][2][jj]=M3[0]-M3[1];
+ 		  M0[i][ii][1][jj]=M3[2]+M3[3];
+ 		  current_intra_sad_2 += abs(M0[i][ii][j][jj]);
+ 		}
+ 
+         if(current_intra_sad_2 < best_intra_sad2)
+           best_intra_sad2=current_intra_sad_2;
+       }
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/tree-ssa/pr89872.c gcc-8.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr89872.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/tree-ssa/pr89872.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr89872.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,27 ----
+ /* PR c/89872 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ /* { dg-final { scan-tree-dump-times " ={v} 1;" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " ={v} 2;" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " ={v} 3;" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " ={v} 4;" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " ={v} 0;" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " ={v} " 10 "optimized" } } */
+ 
+ void
+ foo (void)
+ {
+   (volatile int){1} + (volatile int){2};
+ }
+ 
+ void
+ bar (void)
+ {
+   (volatile int){3};
+ }
+ 
+ void
+ baz (void)
+ {
+   (volatile int){4} / (volatile int){0};
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/tree-ssa/pr91091-1.c gcc-8.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr91091-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/tree-ssa/pr91091-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr91091-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -fno-strict-aliasing" } */
+ 
+ struct s { int x; } __attribute__((packed));
+ struct t { int x; };
+ 
+ void __attribute__((noinline,noipa))
+ swap(struct s* p, struct t* q)
+ {
+   p->x = q->x;
+   q->x = p->x;
+ }
+ 
+ int main()
+ {    
+   struct t a[2];
+   a[0].x = 0x12345678;
+   a[1].x = 0x98765432;
+   swap ((struct s *)((char *)a + 1), a);
+   if (a[0].x != 0x12345678)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/tree-ssa/pr92930.c gcc-8.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr92930.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/tree-ssa/pr92930.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr92930.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,19 ----
+ /* PR tree-optimization/92930 */
+ /* { dg-do compile { target untyped_assembly } } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ /* { dg-final { scan-tree-dump "__builtin_apply " "optimized" } } */
+ /* { dg-final { scan-tree-dump "__builtin_apply_args" "optimized" } } */
+ 
+ void foo (int a, int b, int c, int d, int e, int f, int g);
+ 
+ static void bar (int a, ...)
+ {
+   __builtin_apply (foo, __builtin_apply_args (), 20);
+ }
+ 
+ int
+ main ()
+ {
+   bar (1024, 1025, 1026, 1027, 1028, 1029, 1030);
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/tree-ssa/reassoc-43.c gcc-8.4.0/gcc/testsuite/gcc.dg/tree-ssa/reassoc-43.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/tree-ssa/reassoc-43.c	Fri Dec  4 16:19:30 2015
--- gcc-8.4.0/gcc/testsuite/gcc.dg/tree-ssa/reassoc-43.c	Wed Mar  4 08:30:02 2020
*************** c_parser_translation_unit (c_parser * pa
*** 50,53 ****
  	}
      }
  }
! /* { dg-final { scan-tree-dump-not "0 != 0" "reassoc2"} } */
--- 50,53 ----
  	}
      }
  }
! /* { dg-final { scan-tree-dump-not "\[ (\]0 != 0" "reassoc2"} } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-78.c gcc-8.4.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-78.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-78.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-78.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -fstrict-aliasing" } */
+ 
+ union U {
+   struct A { int : 2; int x : 8; } a;
+   struct B { int : 6; int x : 8; } b;
+ };
+ 
+ int __attribute__((noipa))
+ foo (union U *p, union U *q)
+ {
+   p->a.x = 1;
+   q->b.x = 1;
+   return p->a.x;
+ }
+ 
+ int
+ main()
+ {
+   union U x;
+   if (foo (&x, &x) != x.a.x)
+     __builtin_abort ();
+   return 0;
+ }
+ 
+ /* We support arbitrary punning through unions when it happens through
+    the union type and thus p == q is valid here.  */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/tsan/pr90208-2.c gcc-8.4.0/gcc/testsuite/gcc.dg/tsan/pr90208-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/tsan/pr90208-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/tsan/pr90208-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,20 ----
+ /* PR tree-optimization/90208 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fexceptions -fsanitize=thread" } */
+ 
+ void *b[5];
+ void foo (void);
+ 
+ void
+ bar (int d)
+ {
+   while (d)
+     foo ();
+ }
+ 
+ void
+ baz (void)
+ {
+   bar (2);
+   __builtin_setjmp (b);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/uninit-19.c gcc-8.4.0/gcc/testsuite/gcc.dg/uninit-19.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/uninit-19.c	Fri May 26 09:25:00 2017
--- gcc-8.4.0/gcc/testsuite/gcc.dg/uninit-19.c	Wed Mar  4 08:30:02 2020
*************** fn1 (int p1, float *f1, float *f2, float
*** 12,18 ****
  {
    if (p1 & 8)
      b[3] = p10[a];
!   /* { dg-warning "may be used uninitialized" "" { target { { nonpic } || { hppa*64*-*-* } } } .-1 } */
  }
  
  void
--- 12,18 ----
  {
    if (p1 & 8)
      b[3] = p10[a];
!   /* { dg-warning "may be used uninitialized" "" { target { { nonpic } || { hppa*64*-*-* *-*-darwin* } } } .-1 } */
  }
  
  void
*************** fn2 ()
*** 22,26 ****
    if (l & 6)
      n = &c + m;
    fn1 (l, &d, &e, &g, &i, &h, &k, n);
!   /* { dg-warning "may be used uninitialized" "" { target { ! { { nonpic } || { hppa*64*-*-* } } } } .-1 } */
  }
--- 22,26 ----
    if (l & 6)
      n = &c + m;
    fn1 (l, &d, &e, &g, &i, &h, &k, n);
!   /* { dg-warning "may be used uninitialized" "" { target { ! { { nonpic } || { hppa*64*-*-* *-*-darwin* } } } } .-1 } */
  }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/uninit-pr89296.c gcc-8.4.0/gcc/testsuite/gcc.dg/uninit-pr89296.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/uninit-pr89296.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/uninit-pr89296.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wuninitialized" } */
+ 
+ int get_a_value ();
+ void printk(const char *);
+ void test_func()
+ {
+     int loop;
+     while (!loop) {             /* { dg-warning "is used uninitialized" } */
+ 	loop = get_a_value();
+ 	printk("...");
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/uninit-pred-8_b.c gcc-8.4.0/gcc/testsuite/gcc.dg/uninit-pred-8_b.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/uninit-pred-8_b.c	Fri Mar 31 15:26:18 2017
--- gcc-8.4.0/gcc/testsuite/gcc.dg/uninit-pred-8_b.c	Wed Mar  4 08:30:02 2020
***************
*** 1,6 ****
- 
  /* { dg-do compile } */
! /* { dg-options "-Wuninitialized -O2" } */
  
  int g;
  void bar();
--- 1,7 ----
  /* { dg-do compile } */
! /* ???  Jump threading makes a mess of the logical-op-non-short-circuit=0 case
!    so force it our way.  */
! /* { dg-options "-Wuninitialized -O2 --param logical-op-non-short-circuit=1" } */
  
  int g;
  void bar();
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c gcc-8.4.0/gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fno-math-errno" } */
+ /* { dg-additional-options "-march=x86-64" { target x86_64-*-* i?86-*-* } } */
+ 
+ long int lrint(double x);
+ 
+ int a, b;
+ union c {
+     int d;
+ };
+ 
+ int e()
+ {
+   int f, g, h;
+   long i, j, k;
+   double l, m = b = lrint(0.3127);
+   a = b >> 16 >> 8 & 255;
+   ((union c *)e)->d = a;
+   k = m;
+   h = k >> 16 >> 8 & 255;
+   ((union c *)(e + 4))->d = h;
+   j = lrint(l);
+   g = j >> 16 >> 8 & 255;
+   ((union c *)(e + 8))->d = g;
+   i = lrint(0.292);
+   f = i >> 16 >> 8 & 255;
+   ((union c *)(e + 12))->d = f;
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "basic block vectorized" "slp2" { target { { x86_64-*-* i?86-*-* } && ilp32 } } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr81740-1.c gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr81740-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr81740-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr81740-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ #include "tree-vect.h"
+ 
+ int a[8][10] = { [2][5] = 4 }, c;
+ 
+ int
+ main ()
+ {
+   short b;
+   int i, d;
+   check_vect ();
+   for (b = 4; b >= 0; b--)
+     for (c = 0; c <= 6; c++)
+       a[c + 1][b + 2] = a[c][b + 1];
+   for (i = 0; i < 8; i++)
+     for (d = 0; d < 10; d++)
+       if (a[i][d] != (i == 3 && d == 6) * 4)
+ 	__builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr81740-2.c gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr81740-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr81740-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr81740-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vect_int } */
+ /* { dg-require-effective-target vect_hw_misalign } */
+ 
+ #include "tree-vect.h"
+ 
+ int a[8][10] = { [2][5] = 4 }, c;
+ 
+ int
+ main ()
+ {
+   short b;
+   int i, d;
+   check_vect ();
+   for (b = 4; b >= 0; b--)
+     for (c = 6; c >= 0; c--)
+       a[c + 1][b + 2] = a[c][b + 1];
+   for (i = 0; i < 8; i++)
+     for (d = 0; d < 10; d++)
+       if (a[i][d] != (i == 3 && d == 6) * 4)
+ 	__builtin_abort ();
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "OUTER LOOP VECTORIZED" "vect" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr90018.c gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr90018.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr90018.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr90018.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,47 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vect_double } */
+ 
+ #include "tree-vect.h"
+ 
+ void __attribute__((noinline,noclone))
+ foo (double *a4, int n)
+ {
+   for (int i = 0; i < n; ++i)
+     {
+       /* We may not apply interleaving to the group (a), (b) because of (c).  */
+       double tem1 = a4[i*4] + a4[i*4+n*4] /* (a) */;
+       double tem2 = a4[i*4+2*n*4+1];
+       a4[i*4+n*4+1] = tem1; /* (c) */
+       a4[i*4+1] = tem2;
+       double tem3 = a4[i*4] - tem2;
+       double tem4 = tem3 + a4[i*4+n*4];
+       a4[i*4+n*4+1] = tem4 + a4[i*4+n*4+1] /* (b) */;
+     }
+ }
+ int main(int argc, char **argv)
+ {
+   int n = 11;
+   double a4[4 * n * 3];
+   double a42[4 * n * 3];
+   check_vect ();
+   for (int i = 0; i < 4 * n * 3; ++i)
+     a4[i] = a42[i] = i;
+   foo (a4, n);
+   for (int i = 0; i < n; ++i)
+     {
+       double tem1 = a42[i*4] + a42[i*4+n*4];
+       double tem2 = a42[i*4+2*n*4+1];
+       a42[i*4+n*4+1] = tem1;
+       a42[i*4+1] = tem2;
+       double tem3 = a42[i*4] - tem2;
+       double tem4 = tem3 + a42[i*4+n*4];
+       a42[i*4+n*4+1] = tem4 + a42[i*4+n*4+1];
+       __asm__ volatile ("": : : "memory");
+     }
+   for (int i = 0; i < 4 * n * 3; ++i)
+     if (a4[i] != a42[i])
+       __builtin_abort ();
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "READ_WRITE dependence in interleaving" "vect" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr91293-1.c gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr91293-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr91293-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr91293-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-msse4.1" { target { sse4_runtime } } } */
+ 
+ long long a;
+ unsigned b, c;
+ int d = 62;
+ void e(long long *f, int p2) { *f = p2; }
+ int main()
+ {
+   for (int g = 2; g <= d; g++)
+     {
+       b += g + 4;
+       c += 5 - g;
+     }
+   e(&a, b);
+   if (a != 2196)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr91293-2.c gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr91293-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr91293-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr91293-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-msse4.1" { target { sse4_runtime } } } */
+ 
+ long long a;
+ unsigned b, c;
+ int d = 62;
+ void e(long long *f, int p2) { *f = p2; }
+ int main()
+ {
+   for (int g = 2; g <= d; g++)
+     {
+       c += 5 - g;
+       b += g + 4;
+     }
+   e(&a, b);
+   if (a != 2196)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr91293-3.c gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr91293-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr91293-3.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr91293-3.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-msse4.1" { target { sse4_runtime } } } */
+ 
+ long long a;
+ unsigned b, c;
+ int d = 62;
+ void e(long long *f, int p2) { *f = p2; }
+ int xx = 5, yy = 4;
+ int main()
+ {
+   for (int g = 2; g <= d; g++)
+     {
+       c += xx - g;
+       b += yy + g;
+     }
+   e(&a, b);
+   if (a != 2196)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr91665.c gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr91665.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr91665.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr91665.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,15 ----
+ /* PR tree-optimization/91665 */
+ /* { dg-do compile } */
+ /* { dg-additional-options "-Ofast" } */
+ 
+ short int v;
+ 
+ void
+ foo (short int x, short int y)
+ {
+   short int *p = &v;
+ 
+   x = 1;
+   while (x != 0)
+     x += ++y || (*p = x);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr92420.c gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr92420.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr92420.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr92420.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,48 ----
+ /* { dg-additional-options "-mavx2" { target avx_runtime } } */
+ 
+ #include "tree-vect.h"
+ 
+ #define N 16
+ struct C { int r, i; };
+ struct C a[N], b[N], c[N], d[N], e[N];
+ 
+ __attribute__((noipa)) static void
+ foo (struct C *__restrict x, struct C *__restrict y, struct C *__restrict z, int w)
+ {
+   int i;
+   for (int i = 0; i < w; i++)
+     {
+       z[i].r = x[i].r * y[-1 - i].r - x[i].i * y[-1 - i].i;
+       z[i].i = x[i].i * y[-1 - i].r + x[i].r * y[-1 - i].i;
+     }
+ }
+ 
+ __attribute__((noipa)) static void
+ bar (struct C *__restrict x, struct C *__restrict y, struct C *__restrict z, int w)
+ {
+   int i;
+   for (int i = 0; i < w; i++)
+     {
+       z[i].r = x[i].r * y[i].r - x[i].i * y[i].i;
+       z[i].i = x[i].i * y[i].r + x[i].r * y[i].i;
+     }
+ }
+ 
+ int
+ main ()
+ {
+   check_vect ();
+   int i;
+   for (i = 0; i < N; ++i)
+     {
+       a[i].r = N - i; a[i].i = i - N;
+       b[i].r = i - N; b[i].i = i + N;
+       c[i].r = -1 - i; c[i].i = 2 * N - 1 - i;
+     }
+   foo (a, b + N, d, N);
+   bar (a, c, e, N);
+   for (i = 0; i < N; ++i)
+     if (d[i].r != e[i].r || d[i].i != e[i].i)
+       __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr92723.c gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr92723.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr92723.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr92723.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ 
+ void
+ foo (unsigned long long *x, unsigned long long *y, int z)
+ {
+   int i;
+   for (i = 0; i < 1024; i++)
+     x[i] = (y[i] >> z) | (y[i] << (-z & (__SIZEOF_LONG_LONG__ * __CHAR_BIT__ - 1)));
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr93767.c gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr93767.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/vect/pr93767.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.dg/vect/pr93767.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,13 ----
+ int
+ main ()
+ {
+   int a[10], b;
+   for (b = 6; b >= 3; b--)
+     {
+       a[b] = 1;
+       a[b + 2] = a[3];
+     }
+   if (a[5] != 1)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.dg/vect/slp-reduc-sad.c gcc-8.4.0/gcc/testsuite/gcc.dg/vect/slp-reduc-sad.c
*** gcc-8.3.0/gcc/testsuite/gcc.dg/vect/slp-reduc-sad.c	Fri May 29 08:20:29 2015
--- gcc-8.4.0/gcc/testsuite/gcc.dg/vect/slp-reduc-sad.c	Wed Mar  4 08:30:02 2020
*************** extern void abort (void);
*** 12,18 ****
  int __attribute__((noinline,noclone))
  foo (uint8_t *pix1, uint8_t *pix2, int i_stride_pix2)
  {
!   int i_sum = 0;
    for( int y = 0; y < 16; y++ )
      {
        i_sum += abs ( pix1[0] - pix2[0] );
--- 12,18 ----
  int __attribute__((noinline,noclone))
  foo (uint8_t *pix1, uint8_t *pix2, int i_stride_pix2)
  {
!   int i_sum = 5;
    for( int y = 0; y < 16; y++ )
      {
        i_sum += abs ( pix1[0] - pix2[0] );
*************** main ()
*** 52,58 ****
        __asm__ volatile ("");
      }
  
!   if (foo (X, Y, 16) != 32512)
      abort ();
  
    return 0;
--- 52,58 ----
        __asm__ volatile ("");
      }
  
!   if (foo (X, Y, 16) != 32512 + 5)
      abort ();
  
    return 0;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target ilp32 } */
+ /* { dg-options "-O3 -fno-math-errno -fno-fp-int-builtin-inexact" } */
+ 
+ #define TEST(name, float_type, int_type, fn) void f_##name (float_type x) \
+ {									  \
+   volatile int_type   b = __builtin_##fn (x);				  \
+ }
+ 
+ TEST (dld, double, long, lrint)
+ TEST (flf, float , long, lrintf)
+ 
+ TEST (did, double, int, lrint)
+ TEST (fif, float , int, lrintf)
+ 
+ /* { dg-final { scan-assembler-times "fcvtzs\tw\[0-9\]+, \[d,s\]\[0-9\]+" 2 } } */
+ /* { dg-final { scan-assembler-times "bl\tlrint" 2 } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,15 ----
+ /* Check that storing the 64-bit immediate to a volatile location is done
+    with a single store.  */
+ 
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ typedef unsigned long long u64;
+ 
+ void bar (u64 *x)
+ {
+   *(volatile u64 *)x = 0xabcdef10abcdef10ULL;
+ }
+ 
+ /* { dg-final { scan-assembler-times "str\tx..?, .*" 1 } } */
+ /* { dg-final { scan-assembler-not "str\tw..?, .*" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_1.c gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-march=armv8.2-a" } */
+ 
+ int main ()
+ {
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\.arch armv8\.2\-a\+crc} 1 } } */
+ 
+ /* Check to see if crc is output by default.  */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_10.c gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_10.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_10.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_10.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */
+ /* { dg-additional-options "-mcpu=native" } */
+ 
+ int main ()
+ {
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler-not {\.arch .+\+profile.*} } } */
+ 
+  /* Check that an empty feature string is not detected during mcpu=native.  */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_2.c gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-march=armv8.2-a+crypto" } */
+ 
+ int main ()
+ {
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\.arch armv8\.2\-a\+crypto\+crc} 1 } } */
+ 
+ /* Check to see if crc and crypto are maintained if crypto specified.  */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_3.c gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_3.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_3.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-march=armv8.2-a+aes+sha2+crypto" } */
+ 
+ int main ()
+ {
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\.arch armv8\.2\-a\+crypto\+crc} 1 } } */
+ 
+ /* Check if smallest set is maintained when outputting. */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_4.c gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_4.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_4.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-march=armv8.2-a+aes+sha2" } */
+ 
+ int main ()
+ {
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\.arch armv8\.2\-a\+crypto\+crc} 1 } } */
+ 
+ /* Check if individual bits that make up a grouping is specified that only the
+    grouping is kept. */
\ No newline at end of file
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_5.c gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_5.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_5.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_5.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-march=armv8.2-a+aes+sha2+nosha2" } */
+ 
+ int main ()
+ {
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\.arch armv8\.2\-a\+crc\+aes} 1 } } */
+ 
+ /* Check if turning off feature bits works correctly and grouping is no
+    longer valid.   */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_6.c gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_6.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_6.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_6.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-march=armv8.2-a+crypto+nosha2" } */
+ 
+ int main ()
+ {
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\.arch armv8\.2\-a\+crypto\+crc} 1 } } */
+ 
+ /* Group as a whole was requested to be turned on, crypto itself is a bit and so
+    just turning off one feature can't turn it off.   */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_7.c gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_7.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_7.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_7.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-march=armv8.4-a+dotprod" } */
+ 
+ int main ()
+ {
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\.arch armv8\.4\-a} 1 } } */
+ 
+ /* Checking if enabling default features drops the superfluous bits.   */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_8.c gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_8.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_8.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_8.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-march=armv8.4-a+nodotprod" } */
+ 
+ int main ()
+ {
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\.arch armv8\.4\-a} 1 } } */
+ 
+ /* Checking if trying to turn off default features propagates the commandline
+    option.  */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_9.c gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_9.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/options_set_9.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/options_set_9.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-march=armv8-a+simd+fp" } */
+ 
+ int main ()
+ {
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\.arch armv8\-a} 1 } } */
+ 
+  /* Check that grouping of bits that don't form a synthetic group don't turn
+     on the parent. e.g. rdma turns on simd+fp, but simd+fp does not turn on
+     rdma since rdma is it's own group.  crypto however turns on aes and sha2
+     and turning on sha2 and eas should turn on crypto!.  */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/pr90075.c gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/pr90075.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/aarch64/pr90075.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/aarch64/pr90075.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O1" } */
+ 
+ typedef struct {
+   float one, two;
+ } twofloats;
+ 
+ float
+ bug (twofloats tf)
+ {
+   float f1, f2;
+   union {
+     twofloats tfloats;
+     float arr[2];
+   } utfloats;
+ 
+   utfloats.tfloats = tf;
+   f1 = utfloats.arr[1];
+   f2 = __builtin_copysignf (0, f1);
+   return f2;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/alpha/pr86984.c gcc-8.4.0/gcc/testsuite/gcc.target/alpha/pr86984.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/alpha/pr86984.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/alpha/pr86984.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,96 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wall -Wwrite-strings -Werror -fmerge-all-constants -fno-stack-protector -mieee -fdump-rtl-expand" } */
+ 
+ struct expression {
+   unsigned long int num;
+ };
+ union YYSTYPE {
+   unsigned long int num;
+   struct expression *exp;
+ };
+ 
+ typedef union YYSTYPE YYSTYPE;
+ 
+ struct expression * new_exp_0 (int);
+ 
+ union yyalloc {
+   short yyss_alloc;
+ };
+ 
+ static const signed char yypact[] = {
+   -9, -9, -10, -10, -9, 8, 36, -10, 13, -10, -9, -9, -9, -9, -9, -9, -9, -10, 26, 41, 45, 18, -2, 14, -10, -9, 36 };
+ static const unsigned char yydefact[] = {
+   0, 0, 12, 11, 0, 0, 2, 10, 0, 1, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 5, 6, 7, 8, 9, 0, 3 };
+ 
+ static const signed char yypgoto[3] = "\366\366\377";
+ static const signed char yydefgoto[3] = "\377\005\006";
+ 
+ static const unsigned char yytable[] = {
+   7, 1, 2, 8, 3, 4, 15, 16, 9, 18, 19, 20, 21, 22, 23, 24, 10, 11, 12, 13, 14, 15, 16, 16, 26, 14, 15, 16, 17, 10, 11, 12, 13, 14, 15, 16, 0, 0, 25, 10, 11, 12, 13, 14, 15, 16, 12, 13, 14, 15, 16, 13, 14, 15, 16 };
+ 
+ static const signed char yycheck[] = {
+   1, 10, 11, 4, 13, 14, 8, 9, 0, 10, 11, 12, 13, 14, 15, 16, 3, 4, 5, 6, 7, 8, 9, 9, 25, 7, 8, 9, 15, 3, 4, 5, 6, 7, 8, 9, -1, -1, 12, 3, 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, 9, 6, 7, 8, 9 };
+ 
+ static const unsigned char yyr1[] = {
+   0, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18 };
+ 
+ static const unsigned char yyr2[] = {
+   0, 2, 1, 5, 3, 3, 3, 3, 3, 3, 2, 1, 1, 3 };
+ 
+ int __gettextparse (void)
+ {
+   int yystate = 0;
+   short yyssa[200];
+   short *yyss = yyss;
+   short *yyssp = yyssa;
+   YYSTYPE yyvsa[200];
+   YYSTYPE *yyvsp = yyvsa;
+   enum { yystacksize = 200 };
+   int yylen = 0;
+   goto yysetstate;
+  yynewstate: yyssp++;
+  yysetstate: *yyssp = yystate;
+ 
+   if (yyss + yystacksize - 1 <= yyssp)
+     {
+       long unsigned int yysize = yyssp - yyss + 1;
+       {
+ 	short *yyss1 = yyss;
+ 	union yyalloc *yyptr = (union yyalloc *) __builtin_malloc ((yystacksize * (sizeof (short) + sizeof (YYSTYPE)) + (sizeof (union yyalloc) - 1)));
+ 	if (!yyptr) return 0;
+ 	__builtin_memcpy (&yyptr->yyss_alloc, yyss, yysize * sizeof *(yyss));
+ 	yyss = &yyptr->yyss_alloc;
+ 	if (yyss1 != yyssa) __builtin_free (yyss1);
+       }
+       if (yyss + yystacksize - 1 <= yyssp)
+ 	return 0;
+     }
+ 
+   int yyn = yypact[yystate];
+   if (yyn == -10)
+     goto yydefault;
+ 
+   yyn = yytable[yyn];
+   if (yyn <= 0)
+     goto yyreduce;
+ 
+  yydefault: yyn = yydefact[yystate];
+  yyreduce: yylen = yyr2[yyn];
+ 
+   YYSTYPE yyval;
+   if (yyn == 12 && (yyval.exp = new_exp_0 (0)) != 0)
+     (yyval.exp)->num = (yyvsp[0].num);
+ 
+   (yyvsp -= yylen, yyssp -= yylen);
+   yyn = yyr1[yyn];
+   yystate = yypgoto[yyn - 16] + *yyssp;
+   if (0 <= yystate && yystate <= 54 && yycheck[yystate] == *yyssp)
+     yystate = yytable[yystate];
+   else
+     yystate = yydefgoto[yyn - 16];
+ 
+   goto yynewstate;
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "const_int 230584300921" "expand" } } */
+ /* { dg-final { scan-assembler-not "yypgoto\\+230584300921" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c gcc-8.4.0/gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,14 ----
+ /* Test that using an Armv8-a hard-float target doesn't
+    break CRC intrinsics.  */
+ 
+ /* { dg-do compile } */
+ /* { dg-require-effective-target arm_hard_vfp_ok }  */
+ /* { dg-options "-mfloat-abi=hard -march=armv8-a+simd+crc" } */
+ 
+ #include <arm_acle.h>
+ 
+ uint32_t
+ foo (uint32_t a, uint32_t b)
+ {
+   return __crc32cw (a, b);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c gcc-8.4.0/gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target arm_fp16_ok } */
+ /* { dg-skip-if "do not override fpu" { *-*-* } { "-mfpu=*" } { "-mfpu=fpv5-sp-d16" } } */
+ /* { dg-skip-if "do not disable fpu" { *-*-* } { "-mfloat-abi=soft" } { * } } */
+ /* { dg-skip-if "do not override fp16-format" { *-*-* } { "-mfp16-format=*" } { "-mfp16-format=ieee" } } */
+ /* { dg-options "-O1 -mfpu=fpv5-sp-d16 -mfloat-abi=hard -mfp16-format=ieee" } */
+ 
+ __fp16 foo (double a)
+ {
+   return a;
+ }
+ 
+ double bar (__fp16 a)
+ {
+   return a;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/arm/pr86487.c gcc-8.4.0/gcc/testsuite/gcc.target/arm/pr86487.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/arm/pr86487.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/arm/pr86487.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-skip-if "" { *-*-* } { "-march=armv[0-6]*" "-mthumb" } { "" } } */
+ /* { dg-require-effective-target arm_neon_hw } */
+ /* { dg-options "-O1 -mbig-endian" } */
+ /* { dg-add-options arm_neon } */
+ int a, b, c, d;
+ long long fn1(long long p2) { return p2 == 0 ? -1 : -1 % p2; }
+ void fn2(long long p1, short p2, long p3) {
+   b = fn1((d || 6) & a);
+   c = b | p3;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/arm/pr88167-1.c gcc-8.4.0/gcc/testsuite/gcc.target/arm/pr88167-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/arm/pr88167-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/arm/pr88167-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target arm_thumb1_ok } */
+ /* { dg-options "-O2 -mthumb" }  */
+ 
+ void *retaddr;
+ 
+ void foo (void) {
+   retaddr = __builtin_return_address (0);
+ 
+   /* Used for enforcing registers stacking.  */
+   asm volatile ("" : : : "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
+ 			 "r8", "r9", "r10", "r11", "r12");
+ }
+ 
+ /* { dg-final { scan-assembler-not "mov\tlr," } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/arm/pr88167-2.c gcc-8.4.0/gcc/testsuite/gcc.target/arm/pr88167-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/arm/pr88167-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/arm/pr88167-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2" }  */
+ /* { dg-skip-if "" { ! { arm_thumb1 } } } */
+ 
+ int __attribute__((noclone, noinline))
+ foo (int a, long long b) {
+   /* Used for enforcing registers stacking.  */
+   asm volatile ("" : : : "r0", "r1", "r2", "r3",
+ 			 "r8", "r9", "r10", "r11", "r12");
+   return (int) b;
+ }
+ 
+ int main ()
+ {
+   if (foo (1, 0x1000000000000003LL) != 3)
+     __builtin_abort ();
+   __builtin_exit (0);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/arm/pr89190.c gcc-8.4.0/gcc/testsuite/gcc.target/arm/pr89190.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/arm/pr89190.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/arm/pr89190.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target arm_arch_v8m_base_ok } */
+ /* { dg-options "-O2" } */
+ /* { dg-add-options arm_arch_v8m_base } */
+ 
+ long long a;
+ int b, c;
+ int d(int e, int f) { return e << f; }
+ void g() {
+   long long h;
+   char i = d(b >= 7, 2);
+   c = i == 0 ?: 1 / i;
+   h = c && a ?: c + a;
+   b = h;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/arm/pr89222.c gcc-8.4.0/gcc/testsuite/gcc.target/arm/pr89222.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/arm/pr89222.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/arm/pr89222.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ void g (void);
+ 
+ void f1 (int x)
+ {
+   if (x != (int) g + 3)
+     return;
+   g();
+ }
+ 
+ void (*a2)(void);
+ 
+ void f2 (void)
+ {
+   a2 = &g + 3;
+ }
+ 
+ typedef void (*__sighandler_t)(int);
+ void handler (int);
+ 
+ void f3 (int x)
+ {
+   __sighandler_t h = &handler;
+   if (h != (__sighandler_t) 2 && h != (__sighandler_t) 1)
+     h (x);
+ }
+ 
+ /* { dg-final { scan-assembler-times {add(?:s)?\tr[0-9]+, r[0-9]+, #3} 2 } } */
+ /* { dg-final { scan-assembler-not {.word\tg\+3} } } */
+ /* { dg-final { scan-assembler-not {.word\thandler-1} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx-pr93637.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx-pr93637.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx-pr93637.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx-pr93637.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,17 ----
+ /* PR target/93637 */
+ /* { dg-do compile } */
+ /* { dg-options "-mavx -mno-avx2 -O3 --param sccvn-max-alias-queries-per-access=3" } */
+ 
+ double
+ foo (void)
+ {
+   int i;
+   double r = 7.0;
+   double a[] = { 0.0, 0.0, -0.0, 0.0, 0.0, -0.0, 1.0, 0.0, 0.0, -0.0, 1.0, 0.0, 1.0, 1.0 };
+ 
+   for (i = 0; i < sizeof (a) / sizeof (a[0]); ++i)
+     if (a[i] == 0.0)
+       r = a[i];
+ 
+   return r;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb-1.c	Mon Feb 12 06:14:15 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb-1.c	Wed Mar  4 08:30:02 2020
*************** TEST (void)
*** 41,47 ****
    }
  
    res1.x = INTRINSIC (_popcnt_epi8)       (src.x);
!   res2.x = INTRINSIC (_mask_popcnt_epi8)  (src.x, mask, src0.x);
    res3.x = INTRINSIC (_maskz_popcnt_epi8) (mask, src.x);
  
    if (UNION_CHECK (AVX512F_LEN, i_b) (res1, res_ref))
--- 41,47 ----
    }
  
    res1.x = INTRINSIC (_popcnt_epi8)       (src.x);
!   res2.x = INTRINSIC (_mask_popcnt_epi8)  (src0.x, mask, src.x);
    res3.x = INTRINSIC (_maskz_popcnt_epi8) (mask, src.x);
  
    if (UNION_CHECK (AVX512F_LEN, i_b) (res1, res_ref))
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb.c	Fri Dec 22 12:37:16 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb.c	Wed Mar  4 08:30:02 2020
*************** int foo ()
*** 13,19 ****
    __mmask16 msk;
    __m512i c = _mm512_popcnt_epi8 (z);
    asm volatile ("" : "+v" (c));
!   c = _mm512_mask_popcnt_epi8 (z, msk, z1);
    asm volatile ("" : "+v" (c));
    c = _mm512_maskz_popcnt_epi8 (msk, z);
    asm volatile ("" : "+v" (c));
--- 13,19 ----
    __mmask16 msk;
    __m512i c = _mm512_popcnt_epi8 (z);
    asm volatile ("" : "+v" (c));
!   c = _mm512_mask_popcnt_epi8 (z1, msk, z);
    asm volatile ("" : "+v" (c));
    c = _mm512_maskz_popcnt_epi8 (msk, z);
    asm volatile ("" : "+v" (c));
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntbvl.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntbvl.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntbvl.c	Fri Dec 22 12:37:16 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntbvl.c	Wed Mar  4 08:30:02 2020
*************** int foo ()
*** 18,30 ****
    __mmask16 msk16;
    __m256i c256 = _mm256_popcnt_epi8 (y);
    asm volatile ("" : "+v" (c256));
!   c256 = _mm256_mask_popcnt_epi8 (y, msk32, y_1);
    asm volatile ("" : "+v" (c256));
    c256 = _mm256_maskz_popcnt_epi8 (msk32, y);
    asm volatile ("" : "+v" (c256));
    __m128i c128 = _mm_popcnt_epi8 (x);
    asm volatile ("" : "+v" (c128));
!   c128 = _mm_mask_popcnt_epi8 (x, msk16, x_1);
    asm volatile ("" : "+v" (c128));
    c128 = _mm_maskz_popcnt_epi8 (msk16, x);
    asm volatile ("" : "+v" (c128));
--- 18,30 ----
    __mmask16 msk16;
    __m256i c256 = _mm256_popcnt_epi8 (y);
    asm volatile ("" : "+v" (c256));
!   c256 = _mm256_mask_popcnt_epi8 (y_1, msk32, y);
    asm volatile ("" : "+v" (c256));
    c256 = _mm256_maskz_popcnt_epi8 (msk32, y);
    asm volatile ("" : "+v" (c256));
    __m128i c128 = _mm_popcnt_epi8 (x);
    asm volatile ("" : "+v" (c128));
!   c128 = _mm_mask_popcnt_epi8 (x_1, msk16, x);
    asm volatile ("" : "+v" (c128));
    c128 = _mm_maskz_popcnt_epi8 (msk16, x);
    asm volatile ("" : "+v" (c128));
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw-1.c	Mon Feb 12 06:14:15 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw-1.c	Wed Mar  4 08:30:02 2020
*************** TEST (void)
*** 41,47 ****
    }
  
    res1.x = INTRINSIC (_popcnt_epi16)       (src.x);
!   res2.x = INTRINSIC (_mask_popcnt_epi16)  (src.x, mask, src0.x);
    res3.x = INTRINSIC (_maskz_popcnt_epi16) (mask, src.x);
  
    if (UNION_CHECK (AVX512F_LEN, i_w) (res1, res_ref))
--- 41,47 ----
    }
  
    res1.x = INTRINSIC (_popcnt_epi16)       (src.x);
!   res2.x = INTRINSIC (_mask_popcnt_epi16)  (src0.x, mask, src.x);
    res3.x = INTRINSIC (_maskz_popcnt_epi16) (mask, src.x);
  
    if (UNION_CHECK (AVX512F_LEN, i_w) (res1, res_ref))
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw.c	Fri Dec 22 12:37:16 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw.c	Wed Mar  4 08:30:02 2020
*************** int foo ()
*** 13,19 ****
    __mmask16 msk;
    __m512i c = _mm512_popcnt_epi16 (z);
    asm volatile ("" : "+v" (c));
!   c = _mm512_mask_popcnt_epi16 (z, msk, z1);
    asm volatile ("" : "+v" (c));
    c = _mm512_maskz_popcnt_epi16 (msk, z);
    asm volatile ("" : "+v" (c));
--- 13,19 ----
    __mmask16 msk;
    __m512i c = _mm512_popcnt_epi16 (z);
    asm volatile ("" : "+v" (c));
!   c = _mm512_mask_popcnt_epi16 (z1, msk, z);
    asm volatile ("" : "+v" (c));
    c = _mm512_maskz_popcnt_epi16 (msk, z);
    asm volatile ("" : "+v" (c));
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntwvl.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntwvl.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntwvl.c	Fri Dec 22 12:37:16 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntwvl.c	Wed Mar  4 08:30:02 2020
*************** int foo ()
*** 18,30 ****
    __mmask8 msk8;
    __m256i c256 = _mm256_popcnt_epi16 (y);
    asm volatile ("" : "+v" (c256));
!   c256 = _mm256_mask_popcnt_epi16 (y, msk16, y_1);
    asm volatile ("" : "+v" (c256));
    c256 = _mm256_maskz_popcnt_epi16 (msk16, y);
    asm volatile ("" : "+v" (c256));
    __m128i c128 = _mm_popcnt_epi16 (x);
    asm volatile ("" : "+v" (c128));
!   c128 = _mm_mask_popcnt_epi16 (x, msk8, x_1);
    asm volatile ("" : "+v" (c128));
    c128 = _mm_maskz_popcnt_epi16 (msk8, x);
    asm volatile ("" : "+v" (c128));
--- 18,30 ----
    __mmask8 msk8;
    __m256i c256 = _mm256_popcnt_epi16 (y);
    asm volatile ("" : "+v" (c256));
!   c256 = _mm256_mask_popcnt_epi16 (y_1, msk16, y);
    asm volatile ("" : "+v" (c256));
    c256 = _mm256_maskz_popcnt_epi16 (msk16, y);
    asm volatile ("" : "+v" (c256));
    __m128i c128 = _mm_popcnt_epi16 (x);
    asm volatile ("" : "+v" (c128));
!   c128 = _mm_mask_popcnt_epi16 (x_1, msk8, x);
    asm volatile ("" : "+v" (c128));
    c128 = _mm_maskz_popcnt_epi16 (msk8, x);
    asm volatile ("" : "+v" (c128));
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bw-pr91150.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bw-pr91150.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bw-pr91150.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bw-pr91150.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,37 ----
+ /* PR target/91150 */
+ /* { dg-do run } */
+ /* { dg-options "-O2 -mavx512bw" } */
+ /* { dg-require-effective-target avx512bw } */
+ 
+ #include "avx512bw-check.h"
+ 
+ typedef unsigned char V __attribute__((vector_size (64)));
+ 
+ __attribute__((noipa)) void
+ foo (V *x, V *y, V *z)
+ {
+   *x = __builtin_shuffle (*y, *z, (V) { 0, 1, 2, 3, 4, 5, 6, 7, 8,
+ 					9, 10, 11, 12, 13, 14, 15,
+ 					80, 81, 82, 83, 84, 85, 86, 87,
+ 					88, 89, 90, 91, 92, 93, 94, 95,
+ 					96, 97, 98, 99, 100, 101, 102, 103,
+ 					104, 105, 106, 107, 108, 109, 110, 111,
+ 				        112, 113, 114, 115, 116, 117, 118, 119,
+ 					120, 121, 122, 123, 124, 125, 126, 127 });
+ }
+ 
+ static void
+ avx512bw_test (void)
+ {
+   union U { unsigned char a[64]; V v; } a, b, c;
+   int i;
+   for (i = 0; i < 64; i++)
+     {
+       b.a[i] = i + 1;
+       c.a[i] = i + 65;
+     }
+   foo (&a.v, &b.v, &c.v);
+   for (i = 0; i < 64; i++)
+     if (a.a[i] != (i < 16 ? i + 1 : i + 65))
+       __builtin_abort ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bw-pr93673.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bw-pr93673.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bw-pr93673.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bw-pr93673.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,30 ----
+ /* PR target/93673 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx512bw" } */
+ 
+ #include <x86intrin.h>
+ 
+ void
+ foo (__mmask32 *c, __mmask64 *d)
+ {
+   c[0] = _kshiftli_mask32 (c[0], 0);
+   c[1] = _kshiftri_mask32 (c[1], 0);
+   c[2] = _kshiftli_mask32 (c[2], 1);
+   c[3] = _kshiftri_mask32 (c[3], 1);
+   c[4] = _kshiftli_mask32 (c[4], 31);
+   c[5] = _kshiftri_mask32 (c[5], 31);
+   c[6] = _kshiftli_mask32 (c[6], 0x7f);
+   c[7] = _kshiftri_mask32 (c[7], 0x7f);
+   c[8] = _kshiftli_mask32 (c[8], 0xff);
+   c[9] = _kshiftri_mask32 (c[9], 0xff);
+   d[0] = _kshiftli_mask64 (d[0], 0);
+   d[1] = _kshiftri_mask64 (d[1], 0);
+   d[2] = _kshiftli_mask64 (d[2], 1);
+   d[3] = _kshiftri_mask64 (d[3], 1);
+   d[4] = _kshiftli_mask64 (d[4], 63);
+   d[5] = _kshiftri_mask64 (d[5], 63);
+   d[6] = _kshiftli_mask64 (d[6], 0x7f);
+   d[7] = _kshiftri_mask64 (d[7], 0x7f);
+   d[8] = _kshiftli_mask64 (d[8], 0xff);
+   d[9] = _kshiftri_mask64 (d[9], 0xff);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-1.c	Thu Jun  8 13:04:43 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-mavx512bw -mavx512vl -O2" } */
+ /* { dg-additional-options "-fno-common" { target *-*-darwin* } } */
  /* { dg-final { scan-assembler-times "vpmovswb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpmovswb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpmovswb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}{z}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-1.c	Thu Jun  8 13:04:43 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-mavx512bw -mavx512vl -O2" } */
+ /* { dg-additional-options "-fno-common" { target *-*-darwin* } } */
  /* { dg-final { scan-assembler-times "vpmovuswb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpmovuswb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpmovuswb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}{z}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-1.c	Thu Jun  8 13:04:43 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-mavx512bw -mavx512vl -O2" } */
+ /* { dg-additional-options "-fno-common" { target *-*-darwin* } } */
  /* { dg-final { scan-assembler-times "vpmovwb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpmovwb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpmovwb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}{z}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512dq-pr93673.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512dq-pr93673.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512dq-pr93673.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512dq-pr93673.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,20 ----
+ /* PR target/93673 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx512dq" } */
+ 
+ #include <x86intrin.h>
+ 
+ void
+ foo (__mmask8 *a)
+ {
+   a[0] = _kshiftli_mask8 (a[0], 0);
+   a[1] = _kshiftri_mask8 (a[1], 0);
+   a[2] = _kshiftli_mask8 (a[2], 1);
+   a[3] = _kshiftri_mask8 (a[3], 1);
+   a[4] = _kshiftli_mask8 (a[4], 7);
+   a[5] = _kshiftri_mask8 (a[5], 7);
+   a[6] = _kshiftli_mask8 (a[6], 0x7f);
+   a[7] = _kshiftri_mask8 (a[7], 0x7f);
+   a[8] = _kshiftli_mask8 (a[8], 0xff);
+   a[9] = _kshiftri_mask8 (a[9], 0xff);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512f-pr93673.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512f-pr93673.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512f-pr93673.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512f-pr93673.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,20 ----
+ /* PR target/93673 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx512f" } */
+ 
+ #include <x86intrin.h>
+ 
+ void
+ foo (__mmask16 *b)
+ {
+   b[0] = _kshiftli_mask16 (b[0], 0);
+   b[1] = _kshiftri_mask16 (b[1], 0);
+   b[2] = _kshiftli_mask16 (b[2], 1);
+   b[3] = _kshiftri_mask16 (b[3], 1);
+   b[4] = _kshiftli_mask16 (b[4], 15);
+   b[5] = _kshiftri_mask16 (b[5], 15);
+   b[6] = _kshiftli_mask16 (b[6], 0x7f);
+   b[7] = _kshiftri_mask16 (b[7], 0x7f);
+   b[8] = _kshiftli_mask16 (b[8], 0xff);
+   b[9] = _kshiftri_mask16 (b[9], 0xff);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512vbmi2-vpshld-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512vbmi2-vpshld-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512vbmi2-vpshld-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512vbmi2-vpshld-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mavx512vbmi2 -mavx512bw -O2" } */
+ /* { dg-final { scan-assembler-times "vpshldw\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshldw\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshldw\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshldd\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshldd\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshldd\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshldq\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshldq\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshldq\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
+ 
+ #include <immintrin.h>
+ 
+ volatile __m512i x,y;
+ volatile __mmask32 m32;
+ volatile __mmask16 m16;
+ volatile __mmask8 m8;
+ 
+ void extern
+ avx512f_test (void)
+ {
+   x = _mm512_shldi_epi16 (x, y, 3);
+   x = _mm512_maskz_shldi_epi16 (m32, x, y, 3);
+   x = _mm512_mask_shldi_epi16 (x, m32, y, x, 3);
+ 
+   x = _mm512_shldi_epi32 (x, y, 3);
+   x = _mm512_maskz_shldi_epi32 (m16, x, y, 3);
+   x = _mm512_mask_shldi_epi32 (x, m16, y, x, 3);
+ 
+   x = _mm512_shldi_epi64 (x, y, 3);
+   x = _mm512_maskz_shldi_epi64 (m8, x, y, 3);
+   x = _mm512_mask_shldi_epi64 (x, m8, y, x, 3);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512vbmi2-vpshrd-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512vbmi2-vpshrd-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512vbmi2-vpshrd-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512vbmi2-vpshrd-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mavx512vbmi2 -mavx512bw -O2" } */
+ /* { dg-final { scan-assembler-times "vpshrdw\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshrdw\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshrdw\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshrdd\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshrdd\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshrdd\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshrdq\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshrdq\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpshrdq\[ \\t\]+\[^\{\n\]*\\\$3\[^\n\r]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
+ 
+ #include <immintrin.h>
+ 
+ volatile __m512i x,y;
+ volatile __mmask32 m32;
+ volatile __mmask16 m16;
+ volatile __mmask8 m8;
+ 
+ void extern
+ avx512f_test (void)
+ {
+   x = _mm512_shrdi_epi16 (x, y, 3);
+   x = _mm512_maskz_shrdi_epi16 (m32, x, y, 3);
+   x = _mm512_mask_shrdi_epi16 (x, m32, y, x, 3);
+ 
+   x = _mm512_shrdi_epi32 (x, y, 3);
+   x = _mm512_maskz_shrdi_epi32 (m16, x, y, 3);
+   x = _mm512_mask_shrdi_epi32 (x, m16, y, x, 3);
+ 
+   x = _mm512_shrdi_epi64 (x, y, 3);
+   x = _mm512_maskz_shrdi_epi64 (m8, x, y, 3);
+   x = _mm512_mask_shrdi_epi64 (x, m8, y, x, 3);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512vl-pr93670.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512vl-pr93670.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512vl-pr93670.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512vl-pr93670.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,77 ----
+ /* PR target/93670 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx512vl -mno-avx512dq" } */
+ 
+ #include <x86intrin.h>
+ 
+ __m128i
+ f1 (__m256i x)
+ {
+   return _mm256_extracti32x4_epi32 (x, 0);
+ }
+ 
+ __m128i
+ f2 (__m256i x, __m128i w, __mmask8 m)
+ {
+   return _mm256_mask_extracti32x4_epi32 (w, m, x, 0);
+ }
+ 
+ __m128i
+ f3 (__m256i x, __mmask8 m)
+ {
+   return _mm256_maskz_extracti32x4_epi32 (m, x, 0);
+ }
+ 
+ __m128
+ f4 (__m256 x)
+ {
+   return _mm256_extractf32x4_ps (x, 0);
+ }
+ 
+ __m128
+ f5 (__m256 x, __m128 w, __mmask8 m)
+ {
+   return _mm256_mask_extractf32x4_ps (w, m, x, 0);
+ }
+ 
+ __m128
+ f6 (__m256 x, __mmask8 m)
+ {
+   return _mm256_maskz_extractf32x4_ps (m, x, 0);
+ }
+ 
+ __m128i
+ f7 (__m256i x)
+ {
+   return _mm256_extracti32x4_epi32 (x, 1);
+ }
+ 
+ __m128i
+ f8 (__m256i x, __m128i w, __mmask8 m)
+ {
+   return _mm256_mask_extracti32x4_epi32 (w, m, x, 1);
+ }
+ 
+ __m128i
+ f9 (__m256i x, __mmask8 m)
+ {
+   return _mm256_maskz_extracti32x4_epi32 (m, x, 1);
+ }
+ 
+ __m128
+ f10 (__m256 x)
+ {
+   return _mm256_extractf32x4_ps (x, 1);
+ }
+ 
+ __m128
+ f11 (__m256 x, __m128 w, __mmask8 m)
+ {
+   return _mm256_mask_extractf32x4_ps (w, m, x, 1);
+ }
+ 
+ __m128
+ f12 (__m256 x, __mmask8 m)
+ {
+   return _mm256_maskz_extractf32x4_ps (m, x, 1);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd-1.c	Mon Feb 12 06:14:15 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd-1.c	Wed Mar  4 08:30:02 2020
*************** TEST (void)
*** 40,46 ****
    }
  
    res1.x = INTRINSIC (_popcnt_epi32)       (src.x);
!   res2.x = INTRINSIC (_mask_popcnt_epi32)  (src.x, mask, src0.x);
    res3.x = INTRINSIC (_maskz_popcnt_epi32) (mask, src.x);
  
    if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref))
--- 40,46 ----
    }
  
    res1.x = INTRINSIC (_popcnt_epi32)       (src.x);
!   res2.x = INTRINSIC (_mask_popcnt_epi32)  (src0.x, mask, src.x);
    res3.x = INTRINSIC (_maskz_popcnt_epi32) (mask, src.x);
  
    if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref))
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd.c	Fri Dec 22 12:37:16 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd.c	Wed Mar  4 08:30:02 2020
*************** int foo ()
*** 22,40 ****
    __mmask8 msk8;
    __m128i a = _mm_popcnt_epi32 (x);
    asm volatile ("" : "+v" (a));
!   a = _mm_mask_popcnt_epi32 (x, msk8, x_1);
    asm volatile ("" : "+v" (a));
    a = _mm_maskz_popcnt_epi32 (msk8, x);
    asm volatile ("" : "+v" (a));
    __m256i b = _mm256_popcnt_epi32 (y);
    asm volatile ("" : "+v" (b));
!   b = _mm256_mask_popcnt_epi32 (y, msk8, y_1);
    asm volatile ("" : "+v" (b));
    b = _mm256_maskz_popcnt_epi32 (msk8, y);
    asm volatile ("" : "+v" (b));
    __m512i c = _mm512_popcnt_epi32 (z);
    asm volatile ("" : "+v" (c));
!   c = _mm512_mask_popcnt_epi32 (z, msk, z_1);
    asm volatile ("" : "+v" (c));
    c = _mm512_maskz_popcnt_epi32 (msk, z);
    asm volatile ("" : "+v" (c));
--- 22,40 ----
    __mmask8 msk8;
    __m128i a = _mm_popcnt_epi32 (x);
    asm volatile ("" : "+v" (a));
!   a = _mm_mask_popcnt_epi32 (x_1, msk8, x);
    asm volatile ("" : "+v" (a));
    a = _mm_maskz_popcnt_epi32 (msk8, x);
    asm volatile ("" : "+v" (a));
    __m256i b = _mm256_popcnt_epi32 (y);
    asm volatile ("" : "+v" (b));
!   b = _mm256_mask_popcnt_epi32 (y_1, msk8, y);
    asm volatile ("" : "+v" (b));
    b = _mm256_maskz_popcnt_epi32 (msk8, y);
    asm volatile ("" : "+v" (b));
    __m512i c = _mm512_popcnt_epi32 (z);
    asm volatile ("" : "+v" (c));
!   c = _mm512_mask_popcnt_epi32 (z_1, msk, z);
    asm volatile ("" : "+v" (c));
    c = _mm512_maskz_popcnt_epi32 (msk, z);
    asm volatile ("" : "+v" (c));
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq-1.c	Mon Feb 12 06:14:15 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq-1.c	Wed Mar  4 08:30:02 2020
*************** TEST (void)
*** 40,46 ****
    }
  
    res1.x = INTRINSIC (_popcnt_epi64)       (src.x);
!   res2.x = INTRINSIC (_mask_popcnt_epi64)  (src.x, mask, src0.x);
    res3.x = INTRINSIC (_maskz_popcnt_epi64) (mask, src.x);
  
    if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref))
--- 40,46 ----
    }
  
    res1.x = INTRINSIC (_popcnt_epi64)       (src.x);
!   res2.x = INTRINSIC (_mask_popcnt_epi64)  (src0.x, mask, src.x);
    res3.x = INTRINSIC (_maskz_popcnt_epi64) (mask, src.x);
  
    if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref))
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq.c	Fri Dec 22 12:37:16 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq.c	Wed Mar  4 08:30:02 2020
*************** int foo ()
*** 21,39 ****
    __mmask8 msk; 
    __m128i a = _mm_popcnt_epi64 (x);
    asm volatile ("" : "+v" (a));
!   a = _mm_mask_popcnt_epi64 (x, msk, x_1);
    asm volatile ("" : "+v" (a));
    a = _mm_maskz_popcnt_epi64 (msk, x);
    asm volatile ("" : "+v" (a));
    __m256i b = _mm256_popcnt_epi64 (y);
    asm volatile ("" : "+v" (b));
!   b = _mm256_mask_popcnt_epi64 (y, msk, y_1);
    asm volatile ("" : "+v" (b));
    b = _mm256_maskz_popcnt_epi64 (msk, y);
    asm volatile ("" : "+v" (b));
    __m512i c = _mm512_popcnt_epi64 (z);
    asm volatile ("" : "+v" (c));
!   c = _mm512_mask_popcnt_epi64 (z, msk, z_1);
    asm volatile ("" : "+v" (c));
    c = _mm512_maskz_popcnt_epi64 (msk, z); 
    asm volatile ("" : "+v" (c));
--- 21,39 ----
    __mmask8 msk; 
    __m128i a = _mm_popcnt_epi64 (x);
    asm volatile ("" : "+v" (a));
!   a = _mm_mask_popcnt_epi64 (x_1, msk, x);
    asm volatile ("" : "+v" (a));
    a = _mm_maskz_popcnt_epi64 (msk, x);
    asm volatile ("" : "+v" (a));
    __m256i b = _mm256_popcnt_epi64 (y);
    asm volatile ("" : "+v" (b));
!   b = _mm256_mask_popcnt_epi64 (y_1, msk, y);
    asm volatile ("" : "+v" (b));
    b = _mm256_maskz_popcnt_epi64 (msk, y);
    asm volatile ("" : "+v" (b));
    __m512i c = _mm512_popcnt_epi64 (z);
    asm volatile ("" : "+v" (c));
!   c = _mm512_mask_popcnt_epi64 (z_1, msk, z);
    asm volatile ("" : "+v" (c));
    c = _mm512_maskz_popcnt_epi64 (msk, z); 
    asm volatile ("" : "+v" (c));
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-notrack-5a.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-notrack-5a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-notrack-5a.c	Tue Apr 24 16:54:35 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-notrack-5a.c	Wed Mar  4 08:30:02 2020
***************
*** 2,8 ****
  /* { dg-options "-O -fcf-protection" } */
  /* { dg-final { scan-assembler-times "endbr32" 1 { target ia32 } } } */
  /* { dg-final { scan-assembler-times "endbr64" 1 { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler-not "\tcall\[ \t]+" } } */
  /* { dg-final { scan-assembler-times "notrack call\[ \t]+" 1 } } */
  
  int (*fptr) (int) __attribute__ ((nocf_check));
--- 2,9 ----
  /* { dg-options "-O -fcf-protection" } */
  /* { dg-final { scan-assembler-times "endbr32" 1 { target ia32 } } } */
  /* { dg-final { scan-assembler-times "endbr64" 1 { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler-not "\tcall\[ \t]+" { target { { ! ia32 } || { ! *-*-darwin* } } } } } */
! /* { dg-final { scan-assembler-times "\tcall\[ \t]+" 1 { target { ia32 && *-*-darwin* } } } } */
  /* { dg-final { scan-assembler-times "notrack call\[ \t]+" 1 } } */
  
  int (*fptr) (int) __attribute__ ((nocf_check));
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-notrack-5b.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-notrack-5b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-notrack-5b.c	Tue Apr 24 16:54:35 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-notrack-5b.c	Wed Mar  4 08:30:02 2020
***************
*** 3,9 ****
  /* { dg-options "-O -fcf-protection" } */
  /* { dg-final { scan-assembler-times "endbr32" 1 { target ia32 } } } */
  /* { dg-final { scan-assembler-times "endbr64" 1 { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler-times "\tcall\[ \t]+" 1 } } */
  /* { dg-final { scan-assembler-times "notrack call\[ \t]+" 1 } } */
  
  int (*fptr) (int) __attribute__ ((nocf_check));
--- 3,10 ----
  /* { dg-options "-O -fcf-protection" } */
  /* { dg-final { scan-assembler-times "endbr32" 1 { target ia32 } } } */
  /* { dg-final { scan-assembler-times "endbr64" 1 { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler-times "\tcall\[ \t]+" 1 { target { { ! ia32 } || { ! *-*-darwin* } } } } } */
! /* { dg-final { scan-assembler-times "\tcall\[ \t]+" 2 { target { ia32 && *-*-darwin* } } } } */
  /* { dg-final { scan-assembler-times "notrack call\[ \t]+" 1 } } */
  
  int (*fptr) (int) __attribute__ ((nocf_check));
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-notrack-6b.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-notrack-6b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-notrack-6b.c	Tue Apr 24 16:54:35 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-notrack-6b.c	Wed Mar  4 08:30:02 2020
***************
*** 2,8 ****
  /* { dg-options "-O0 -fcf-protection" } */
  /* { dg-final { scan-assembler-times "endbr32" 1 { target ia32 } } } */
  /* { dg-final { scan-assembler-times "endbr64" 1 { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler-not "\tcall\[ \t]+" } } */
  /* { dg-final { scan-assembler-times "notrack call\[ \t]+" 1 } } */
  
  int foo (int arg);
--- 2,9 ----
  /* { dg-options "-O0 -fcf-protection" } */
  /* { dg-final { scan-assembler-times "endbr32" 1 { target ia32 } } } */
  /* { dg-final { scan-assembler-times "endbr64" 1 { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler-not "\tcall\[ \t]+" { target { { ! ia32 } || { ! *-*-darwin* } } } } } */
! /* { dg-final { scan-assembler-times "\tcall\[ \t]+" 1 { target { ia32 && *-*-darwin* } } } } */
  /* { dg-final { scan-assembler-times "notrack call\[ \t]+" 1 } } */
  
  int foo (int arg);
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-1.c	Thu Apr 19 15:15:04 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-1.c	Wed Mar  4 08:30:02 2020
***************
*** 3,10 ****
  /* { dg-options "-O2 -fcf-protection=none" } */
  /* { dg-final { scan-assembler-not "endbr" } } */
  /* { dg-final { scan-assembler-not "fn3:" } } */
! /* { dg-final { scan-assembler "set\[ \t]+fn2,fn1" } } */
! /* { dg-final { scan-assembler "set\[ \t]+fn3,fn1" } } */
  
  static __attribute__((noinline)) int
  fn1 (int x)
--- 3,10 ----
  /* { dg-options "-O2 -fcf-protection=none" } */
  /* { dg-final { scan-assembler-not "endbr" } } */
  /* { dg-final { scan-assembler-not "fn3:" } } */
! /* { dg-final { scan-assembler "set\[ \t]+fn2,fn1" { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "set\[ \t]+fn3,fn1" { target { ! *-*-darwin* } } } } */
  
  static __attribute__((noinline)) int
  fn1 (int x)
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-2.c	Tue Apr 24 16:54:35 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-2.c	Wed Mar  4 08:30:02 2020
***************
*** 3,9 ****
  /* { dg-options "-O2 -fcf-protection" } */
  /* { dg-final { scan-assembler "endbr" } } */
  /* { dg-final { scan-assembler "fn3:" } } */
! /* { dg-final { scan-assembler "set\[ \t]+fn2,fn1" } } */
  
  static __attribute__((noinline)) int
  fn1 (int x)
--- 3,9 ----
  /* { dg-options "-O2 -fcf-protection" } */
  /* { dg-final { scan-assembler "endbr" } } */
  /* { dg-final { scan-assembler "fn3:" } } */
! /* { dg-final { scan-assembler "set\[ \t]+fn2,fn1" { target { ! *-*-darwin* } } } } */
  
  static __attribute__((noinline)) int
  fn1 (int x)
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-3.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-3.c	Thu Apr 19 15:15:04 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-3.c	Wed Mar  4 08:30:02 2020
***************
*** 3,10 ****
  /* { dg-options "-O2 -fcf-protection=none" } */
  /* { dg-final { scan-assembler-not "endbr" } } */
  /* { dg-final { scan-assembler-not "fn2:" } } */
! /* { dg-final { scan-assembler "set\[ \t]+fn2,fn1" } } */
! /* { dg-final { scan-assembler "set\[ \t]+fn3,fn1" } } */
  
  int (*foo)(int);
  
--- 3,10 ----
  /* { dg-options "-O2 -fcf-protection=none" } */
  /* { dg-final { scan-assembler-not "endbr" } } */
  /* { dg-final { scan-assembler-not "fn2:" } } */
! /* { dg-final { scan-assembler "set\[ \t]+fn2,fn1" { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "set\[ \t]+fn3,fn1" { target { ! *-*-darwin* } } } } */
  
  int (*foo)(int);
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-4.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-4.c	Tue Apr 24 16:54:35 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-notrack-icf-4.c	Wed Mar  4 08:30:02 2020
***************
*** 3,9 ****
  /* { dg-options "-O2 -fcf-protection" } */
  /* { dg-final { scan-assembler "endbr" } } */
  /* { dg-final { scan-assembler "fn2:" } } */
! /* { dg-final { scan-assembler "set\[ \t]+fn3,fn1" } } */
  
  int (*foo)(int);
  
--- 3,9 ----
  /* { dg-options "-O2 -fcf-protection" } */
  /* { dg-final { scan-assembler "endbr" } } */
  /* { dg-final { scan-assembler "fn2:" } } */
! /* { dg-final { scan-assembler "set\[ \t]+fn3,fn1" { target { ! *-*-darwin* } } } } */
  
  int (*foo)(int);
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-sjlj-3.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-sjlj-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-sjlj-3.c	Tue Apr 24 16:54:35 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-sjlj-3.c	Wed Mar  4 08:30:02 2020
***************
*** 3,9 ****
  /* { dg-final { scan-assembler-times "endbr32" 4 { target ia32 } } } */
  /* { dg-final { scan-assembler-times "endbr64" 4 { target { ! ia32 } } } } */
  /* { dg-final { scan-assembler-times "call	_?setjmp" 1 } } */
! /* { dg-final { scan-assembler-times "call	longjmp" 1 } } */
  
  #include <stdio.h>
  #include <setjmp.h>
--- 3,9 ----
  /* { dg-final { scan-assembler-times "endbr32" 4 { target ia32 } } } */
  /* { dg-final { scan-assembler-times "endbr64" 4 { target { ! ia32 } } } } */
  /* { dg-final { scan-assembler-times "call	_?setjmp" 1 } } */
! /* { dg-final { scan-assembler-times "call	_?longjmp" 1 } } */
  
  #include <stdio.h>
  #include <setjmp.h>
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-sjlj-5.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-sjlj-5.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-sjlj-5.c	Tue Apr 24 16:54:35 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-sjlj-5.c	Wed Mar  4 08:30:02 2020
***************
*** 3,9 ****
  /* { dg-final { scan-assembler-times "endbr32" 2 { target ia32 } } } */
  /* { dg-final { scan-assembler-times "endbr64" 2 { target { ! ia32 } } } } */
  /* { dg-final { scan-assembler-times "call	_?setjmp" 1 } } */
! /* { dg-final { scan-assembler-times "call	longjmp" 1 } } */
  
  #include <stdio.h>
  #include <setjmp.h>
--- 3,9 ----
  /* { dg-final { scan-assembler-times "endbr32" 2 { target ia32 } } } */
  /* { dg-final { scan-assembler-times "endbr64" 2 { target { ! ia32 } } } } */
  /* { dg-final { scan-assembler-times "call	_?setjmp" 1 } } */
! /* { dg-final { scan-assembler-times "call	_?longjmp" 1 } } */
  
  #include <stdio.h>
  #include <setjmp.h>
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-sjlj-6b.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-sjlj-6b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/cet-sjlj-6b.c	Tue Apr 24 16:54:35 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/cet-sjlj-6b.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-options "-O -maddress-mode=long -fcf-protection -mx32" } */
  /* { dg-final { scan-assembler-times "endbr64" 2 } } */
  /* { dg-final { scan-assembler-times "movq\t.*buf\\+16" 1 } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/fpprec-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/fpprec-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/fpprec-1.c	Wed May 19 16:10:05 2010
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/fpprec-1.c	Wed Mar  4 08:30:02 2020
*************** double x[] = { __builtin_nan(""), __buil
*** 11,16 ****
--- 11,19 ----
  	0x1.0000000000001p-1, 0x1.fffffffffffffp-2,
  	0x1.0000000000001p+0, 0x1.fffffffffffffp-1,
  	0x1.8000000000001p+0, 0x1.7ffffffffffffp+0,
+ 	-0x1.0000000000001p-1, -0x1.fffffffffffffp-2,
+ 	-0x1.0000000000001p+0, -0x1.fffffffffffffp-1,
+ 	-0x1.8000000000001p+0, -0x1.7ffffffffffffp+0,
  	-0.0, 0.0, -0.5, 0.5, -1.0, 1.0, -1.5, 1.5, -2.0, 2.0,
  	-2.5, 2.5 };
  #define NUM (sizeof(x)/sizeof(double))
*************** double expect_round[] = { __builtin_nan(
*** 19,24 ****
--- 22,28 ----
  	-0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023,
  	-0.0, 0.0,
  	1.0, 0.0, 1.0, 1.0, 2.0, 1.0,
+ 	-1.0, -0.0, -1.0, -1.0, -2.0, -1.0,
  	-0.0, 0.0, -1.0, 1.0, -1.0, 1.0, -2.0, 2.0, -2.0, 2.0,
  	-3.0, 3.0 };
  
*************** double expect_rint[] = { __builtin_nan("
*** 26,31 ****
--- 30,36 ----
          -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023,
          -0.0, 0.0,
          1.0, 0.0, 1.0, 1.0, 2.0, 1.0,
+         -1.0, -0.0, -1.0, -1.0, -2.0, -1.0,
          -0.0, 0.0, -0.0, 0.0, -1.0, 1.0, -2.0, 2.0, -2.0, 2.0,
          -2.0, 2.0 };
  
*************** double expect_floor[] = { __builtin_nan(
*** 33,38 ****
--- 38,44 ----
          -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023,
          -1.0, 0.0,
          0.0, 0.0, 1.0, 0.0, 1.0, 1.0,
+         -1.0, -1.0, -2.0, -1.0, -2.0, -2.0,
          -0.0, 0.0, -1.0, 0.0, -1.0, 1.0, -2.0, 1.0, -2.0, 2.0,
          -3.0, 2.0 };
  
*************** double expect_ceil[] = { __builtin_nan("
*** 40,45 ****
--- 46,52 ----
          -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023,
          -0.0, 1.0,
          1.0, 1.0, 2.0, 1.0, 2.0, 2.0,
+         -0.0, -0.0, -1.0, -0.0, -1.0, -1.0,
          -0.0, 0.0, -0.0, 1.0, -1.0, 1.0, -1.0, 2.0, -2.0, 2.0,
          -2.0, 3.0 };
  
*************** double expect_trunc[] = { __builtin_nan(
*** 47,52 ****
--- 54,60 ----
          -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023,
          -0.0, 0.0,
          0.0, 0.0, 1.0, 0.0, 1.0, 1.0,
+         -0.0, -0.0, -1.0, -0.0, -1.0, -1.0,
          -0.0, 0.0, -0.0, 0.0, -1.0, 1.0, -1.0, 1.0, -2.0, 2.0,
          -2.0, 2.0 };
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c	Mon Mar 16 10:11:11 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c	Wed Mar  4 08:30:02 2020
*************** foo (int y)
*** 18,31 ****
    return y + bar (y);
  }
  
- /* For !nonpic && ia32 xfails, see PR64895.  */
- 
  /* Check that no registers are saved/restored. */
! /* { dg-final { scan-assembler-not "push" { xfail { { ! nonpic } && ia32 } } } } */
! /* { dg-final { scan-assembler-not "pop" { xfail { { ! nonpic } && ia32 } } } } */
  
  /* Check that addition uses dx. */
! /* { dg-final { scan-assembler-times "addl\t%\[re\]?dx, %\[re\]?ax" 1 { xfail { { ! nonpic } && ia32 } } } } */
  
  /* Verify that bar is self-recursive.  */
  /* { dg-final { scan-assembler-times "call\t_?bar" 2 } } */
--- 18,29 ----
    return y + bar (y);
  }
  
  /* Check that no registers are saved/restored. */
! /* { dg-final { scan-assembler-not "push" } } */
! /* { dg-final { scan-assembler-not "pop" } } */
  
  /* Check that addition uses dx. */
! /* { dg-final { scan-assembler-times "addl\t%\[re\]?dx, %\[re\]?ax" 1 } } */
  
  /* Verify that bar is self-recursive.  */
  /* { dg-final { scan-assembler-times "call\t_?bar" 2 } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c	Mon Mar 16 10:11:11 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c	Wed Mar  4 08:30:02 2020
*************** foo (v2df y)
*** 15,27 ****
    return y + bar (y);
  }
  
- /* For !nonpic && ia32 xfails, see PR64895.  */
- 
  /* Check presence of all insns on xmm registers.  These checks are expected to
     pass with both -fipa-ra and -fno-ipa-ra.  */
! /* { dg-final { scan-assembler-times "addpd\t\\.?LC0.*, %xmm0" 1 } } */
! /* { dg-final { scan-assembler-times "addpd\t%xmm1, %xmm0" 1 { xfail { { ! nonpic } && ia32 } } } } */
! /* { dg-final { scan-assembler-times "movapd\t%xmm0, %xmm1" 1 { xfail { { ! nonpic } && ia32 } } } } */
  
  /* Check absence of save/restore of xmm1 register.  */
  /* { dg-final { scan-assembler-not "movaps\t%xmm1, \\(%\[re\]?sp\\)" } } */
--- 15,33 ----
    return y + bar (y);
  }
  
  /* Check presence of all insns on xmm registers.  These checks are expected to
     pass with both -fipa-ra and -fno-ipa-ra.  */
! 
! /* Darwin local constant symbol is "lC0", ELF targets ".LC0" */
! /* { dg-final { scan-assembler-times {addpd\t\.?[Ll]C0.*, %xmm0} 1 { target { { ! ia32 } || nonpic } } } } */
! /* { dg-final { scan-assembler-times {movapd\t\.?[Ll]C0.*, %xmm1} 1 { target { ia32 && { ! nonpic } } } } } */
! 
! /* We happen to get this for both cases, but in different positions.  */
! /* { dg-final { scan-assembler-times "addpd\t%xmm1, %xmm0" 1 } } */
! 
! /* { dg-final { scan-assembler-times "movapd\t%xmm0, %xmm1" 1 { target { { ! ia32 } || nonpic } } } } */
! /* { dg-final { scan-assembler-times "movapd\t%xmm0, %xmm2" 1 { target { ia32 && { ! nonpic } } } } } */
! /* { dg-final { scan-assembler-times "addpd\t%xmm2, %xmm0" 1 { target { ia32 && { ! nonpic } } } } } */
  
  /* Check absence of save/restore of xmm1 register.  */
  /* { dg-final { scan-assembler-not "movaps\t%xmm1, \\(%\[re\]?sp\\)" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/fuse-caller-save.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/fuse-caller-save.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/fuse-caller-save.c	Mon Mar 16 10:11:11 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/fuse-caller-save.c	Wed Mar  4 08:30:02 2020
*************** foo (int y)
*** 16,26 ****
    return y + bar (y);
  }
  
- /* For !nonpic && ia32 xfails, see PR64895.  */
- 
  /* Check that no registers are saved/restored. */
! /* { dg-final { scan-assembler-not "push" { xfail { { ! nonpic } && ia32 } } } } */
! /* { dg-final { scan-assembler-not "pop" { xfail { { ! nonpic } && ia32 } } } } */
  
  /* PR61605.  If the first argument register and the return register differ, then
     bar leaves the first argument register intact.  That means in foo that the
--- 16,24 ----
    return y + bar (y);
  }
  
  /* Check that no registers are saved/restored. */
! /* { dg-final { scan-assembler-not "push" } } */
! /* { dg-final { scan-assembler-not "pop" } } */
  
  /* PR61605.  If the first argument register and the return register differ, then
     bar leaves the first argument register intact.  That means in foo that the
*************** foo (int y)
*** 31,34 ****
  /* { dg-final { scan-assembler-not "movl" { target { ! ia32 } } } } */
  
  /* Check that addition uses di (in case of no copy) or dx (in case of copy). */
! /* { dg-final { scan-assembler-times "addl\t%\[re\]?d\[ix\], %\[re\]?ax" 1 { xfail { { ! nonpic } && ia32 } } } } */
--- 29,32 ----
  /* { dg-final { scan-assembler-not "movl" { target { ! ia32 } } } } */
  
  /* Check that addition uses di (in case of no copy) or dx (in case of copy). */
! /* { dg-final { scan-assembler-times "addl\t%\[re\]?d\[ix\], %\[re\]?ax" 1 } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk" } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 11,19 ****
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
--- 12,22 ----
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 11,19 ****
    dispatch[offset](offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
--- 12,22 ----
    dispatch[offset](offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 12,20 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
--- 13,23 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 12,20 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
--- 13,23 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */
  
  void func0 (void);
  void func1 (void);
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fjump-tables" } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  void func0 (void);
  void func1 (void);
*************** bar (int i)
*** 36,43 ****
  }
  
  /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
--- 37,46 ----
  }
  
  /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {leaq[ \t]*L[0-9]+\(%rip\)} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {addl[ \t]*L[0-9]+-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 14,22 ****
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
--- 15,25 ----
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 12,20 ****
    dispatch[offset](offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
--- 13,23 ----
    dispatch[offset](offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 14,22 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */
--- 15,25 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */
! /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 13,21 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */
--- 14,24 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */
! /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 14,21 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 15,24 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 13,20 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 14,23 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c	Thu Apr 19 15:15:04 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */
  
  void func0 (void);
  void func1 (void);
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  void func0 (void);
  void func1 (void);
*************** bar (int i)
*** 37,43 ****
  }
  
  /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk(_nt|)_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 38,46 ----
  }
  
  /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {leaq[ \t]*L[0-9]+\(%rip\)} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {addl[ \t]*L[0-9]+-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk(_nt|)_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c	Sun Jan 14 14:37:39 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */
  
  void func0 (void);
  void func1 (void);
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  void func0 (void);
  void func1 (void);
*************** bar (int i)
*** 36,42 ****
      }
  }
  
! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 37,43 ----
      }
  }
  
! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile { target { ! x32 } } } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */
  
  void (*dispatch) (char *);
  char buf[10];
--- 1,6 ----
  /* { dg-do compile { target { ! x32 } } } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx" } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  void (*dispatch) (char *);
  char buf[10];
*************** foo (void)
*** 11,18 ****
  }
  
  /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd_rax" { target lp64 } } } */
! /* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_eax" { target ia32 } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "bnd ret" } } */
--- 12,19 ----
  }
  
  /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "bnd jmp\[ \t\]*_?__x86_indirect_thunk_bnd_rax" { target lp64 } } } */
! /* { dg-final { scan-assembler "bnd call\[ \t\]*_?__x86_indirect_thunk_bnd_eax" { target ia32 } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "bnd ret" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile { target { ! x32 } } } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */
  
  void (*dispatch) (char *);
  char buf[10];
--- 1,6 ----
  /* { dg-do compile { target { ! x32 } } } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx" } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  void (*dispatch) (char *);
  char buf[10];
*************** foo (void)
*** 12,19 ****
  }
  
  /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_(r|e)ax" } } */
! /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "bnd ret" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
--- 13,20 ----
  }
  
  /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "bnd call\[ \t\]*_?__x86_indirect_thunk_bnd_(r|e)ax" } } */
! /* { dg-final { scan-assembler "bnd call\[ \t\]*\.?LIND" } } */
  /* { dg-final { scan-assembler "bnd ret" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 11,18 ****
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 12,21 ----
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not {call[ \t]*\.�LIND} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 11,18 ****
    dispatch[offset](offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 12,21 ----
    dispatch[offset](offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 12,19 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 13,22 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 12,18 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
--- 13,20 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c	Thu Apr 19 15:15:04 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */
  
  void func0 (void);
  void func1 (void);
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fjump-tables" } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  void func0 (void);
  void func1 (void);
*************** bar (int i)
*** 36,42 ****
  }
  
  /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk(_nt|)_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 37,43 ----
  }
  
  /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk(_nt|)_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.?LIND" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 11,20 ****
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
--- 12,23 ----
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 11,20 ****
    dispatch[offset](offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
--- 12,23 ----
    dispatch[offset](offset);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 12,21 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
  /* { dg-final { scan-assembler-times {\tpause} 1 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 1 } } */
! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
--- 13,24 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */
! /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */
  /* { dg-final { scan-assembler-times {\tpause} 1 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 1 } } */
! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 12,21 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
  /* { dg-final { scan-assembler-times {\tpause} 1 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 1 } } */
! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
--- 13,24 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */
! /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */
  /* { dg-final { scan-assembler-times {\tpause} 1 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 1 } } */
! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */
  
  void func0 (void);
  void func1 (void);
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fjump-tables" } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  void func0 (void);
  void func1 (void);
*************** bar (int i)
*** 37,44 ****
  
  /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%(r|e)ax" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */
--- 38,45 ----
  
  /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%(r|e)ax" } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c	Sun Jan 14 14:40:01 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mindirect-branch=thunk -mindirect-branch-register -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mindirect-branch=thunk -mindirect-branch-register " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 11,22 ****
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "mov\[ \t\](%eax|%rax), \\((%esp|%rsp)\\)" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch"  } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
! /* { dg-final { scan-assembler-not "__x86_indirect_thunk\n" } } */
! /* { dg-final { scan-assembler-not "__x86_indirect_thunk_bnd\n" } } */
--- 12,23 ----
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler "mov\[ \t\](%eax|%rax), \\((%esp|%rsp)\\)" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch"  } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk\n" } } */
! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk_bnd\n" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c	Sun Jan 14 14:40:01 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mindirect-branch=thunk-inline -mindirect-branch-register -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mindirect-branch=thunk-inline -mindirect-branch-register " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 11,20 ****
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "mov\[ \t\](%eax|%rax), \\((%esp|%rsp)\\)" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch"  } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */
--- 12,21 ----
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler "mov\[ \t\](%eax|%rax), \\((%esp|%rsp)\\)" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch"  } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c	Sun Jan 14 14:40:01 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mindirect-branch=thunk-extern -mindirect-branch-register -fno-pic" } */
  
  typedef void (*dispatch_t)(long offset);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mindirect-branch=thunk-extern -mindirect-branch-register " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  typedef void (*dispatch_t)(long offset);
  
*************** male_indirect_jump (long offset)
*** 11,19 ****
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch"  } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
  /* { dg-final { scan-assembler-not {\t(pause|pause|nop)} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 12,20 ----
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch"  } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
  /* { dg-final { scan-assembler-not {\t(pause|pause|nop)} } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c	Sun Jan 14 14:41:25 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mindirect-branch=keep -fno-pic" } */
  
  extern void (*func_p) (void);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mindirect-branch=keep " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  extern void (*func_p) (void);
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c	Sat Aug 10 03:48:01 2013
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c	Wed Mar  4 08:30:02 2020
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=atom -mmemcpy-strategy=vector_loop:2000:align,libcall:-1:align" } */
! /* { dg-final { scan-assembler-times "memcpy" 2  } } */
  
  char a[2048];
  char b[2048];
--- 1,9 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=atom -mmemcpy-strategy=vector_loop:2000:align,libcall:-1:align" } */
! /* On ELF platforms, one hit comes from the .file directive.  */
! /* { dg-final { scan-assembler-times "memcpy" 2 { target { ! *-*-darwin* } } } } */
! /* But not on Darwin, which doesn't have a .file directive by default.  */
! /* { dg-final { scan-assembler-times "_memcpy" 1  { target *-*-darwin* } } } */
  
  char a[2048];
  char b[2048];
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/memset-strategy-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/memset-strategy-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/memset-strategy-1.c	Sat Aug 10 03:48:01 2013
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/memset-strategy-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,10 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=atom -mmemset-strategy=libcall:-1:align" } */
! /* { dg-final { scan-assembler-times "memset" 2  } } */
  
  char a[2048];
  void t (void)
  {
    __builtin_memset (a, 1, 2048);
  }
- 
--- 1,12 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=atom -mmemset-strategy=libcall:-1:align" } */
! /* On ELF platforms, one hit comes from the .file directive.  */
! /* { dg-final { scan-assembler-times "memset" 2 { target { ! *-*-darwin* } } } } */
! /* But not on Darwin, which doesn't have a .file directive by default.  */
! /* { dg-final { scan-assembler-times "_memset" 1 { target *-*-darwin* } } } */
  
  char a[2048];
  void t (void)
  {
    __builtin_memset (a, 1, 2048);
  }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pconfig-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pconfig-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pconfig-1.c	Mon Mar  5 14:37:54 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pconfig-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mpconfig" } */
! /* { dg-final { scan-assembler-times "pconfig" 5 } } */
  
  #include <x86intrin.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -mpconfig" } */
! /* { dg-final { scan-assembler-times {\tpconfig} 2 } } */
  
  #include <x86intrin.h>
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr22076.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr22076.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr22076.c	Tue Aug 29 17:21:21 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr22076.c	Wed Mar  4 08:30:02 2020
***************
*** 1,6 ****
--- 1,8 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer -flax-vector-conversions -mmmx" } */
  /* { dg-additional-options "-mno-vect8-ret-in-mem" { target *-*-vxworks* } } */
+ /* { dg-additional-options "-fno-common" { target *-*-darwin* } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { ia32 && *-*-darwin* } } } */
  
  #include <mmintrin.h>
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr24414.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr24414.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr24414.c	Mon Jun  6 12:31:59 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr24414.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do run } */
  /* { dg-options "-O2" } */
+ /* { dg-skip-if "asm insert mismatches ABI for Darwin" { *-*-darwin* } } */
  int test;
  
  int
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-1.c	Thu May 21 18:13:06 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-1.c	Wed Mar  4 08:30:02 2020
*************** foo ()
*** 12,18 ****
    return xxx;
  }
  
! /* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target ia32 } } } */
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target ia32 } } } */
--- 12,22 ----
    return xxx;
  }
  
! /* { dg-final { scan-assembler {movl[ \t]_?xxx\(%rip\),[ \t]%eax} { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler-not "_?xxx@GOTPCREL" { target { ! ia32 } } } } */
! 
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */
! /* { dg-final { scan-assembler-not "movl\[ \t\]_?xxx@GOT\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */
! 
! /* For Darwin, we default to PIC - but that's needed for Darwin's PIE.  */
! /* { dg-final { scan-assembler {movl[ \t]_xxx-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-2.c	Tue Apr 26 12:25:52 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-2.c	Wed Mar  4 08:30:02 2020
*************** foo ()
*** 12,17 ****
  }
  
  /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */
  /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target ia32 } } } */
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target ia32 } } } */
--- 12,24 ----
  }
  
  /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */
+ /* For Darwin m64 we are always PIC, but common symbols are indirected, which happens to
+    match the general "ELF" case.  */
  /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */
! 
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */
! 
! /* Darwin m32 defaults to PIC but common symbols need to be indirected.  */
! /* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
! 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-3.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-3.c	Thu May 21 18:13:06 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-3.c	Wed Mar  4 08:30:02 2020
*************** foo ()
*** 12,18 ****
    return xxx;
  }
  
! /* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target ia32 } } } */
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target ia32 } } } */
--- 12,27 ----
    return xxx;
  }
  
! /* { dg-final { scan-assembler {movl[ \t]xxx\(%rip\),[ \t]%eax} { target { { ! ia32 } && { ! *-*-darwin* } } } } } */
! /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */
! 
! /* For Darwin m64, code is always PIC and we need to indirect through the GOT to allow
!    weak symbols to be interposed.  The dynamic loader knows how to apply PIE to this.  */
! /* { dg-final { scan-assembler {movq[ \t]_xxx@GOTPCREL\(%rip\),[ \t]%rax} { target { { ! ia32 } && *-*-darwin* } } } } */
! 
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */
! 
! /* For Darwin, we need PIC to allow PIE, but also we must indirect weak symbols so that
!    they can be indirected.  Again, dyld knows how to deal with this. */
! /* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-4.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-4.c	Tue Apr 26 12:25:52 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-4.c	Wed Mar  4 08:30:02 2020
*************** foo ()
*** 13,18 ****
  }
  
  /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */
  /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target ia32 } } } */
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target ia32 } } } */
--- 13,24 ----
  }
  
  /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */
+ /* Darwin is always PIC for PIE so no change, weak symbols need to be indirect and this
+    happens to match the ELF case.  */
  /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */
! 
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */
! 
! /* Darwin m32 equivalent (indirect and PIC).  */
! /* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-5.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-5.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-5.c	Thu May 21 18:13:06 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-5.c	Wed Mar  4 08:30:02 2020
*************** foo ()
*** 11,17 ****
    return xxx;
  }
  
! /* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */
  /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target ia32 } } } */
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target ia32 } } } */
--- 11,21 ----
    return xxx;
  }
  
! /* { dg-final { scan-assembler "movl\[ \t\]_?xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */
  /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { ! ia32 } } } } */
! 
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */
! 
! /* For Darwin m32, we need PIC (the default) to allow PIE.  */
! /* { dg-final { scan-assembler {movl[ \t]_xxx-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-6.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-6.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-6.c	Tue Apr 26 12:25:52 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-6.c	Wed Mar  4 08:30:02 2020
*************** foo ()
*** 11,17 ****
    return xxx;
  }
  
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target ia32 } } } */
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target ia32 } } } */
--- 11,24 ----
    return xxx;
  }
  
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */
! /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */
! 
! /* Darwin m64 is always PIC, and the dynamic linker doesn't need an indirection.  */
! /* { dg-final { scan-assembler {movl[ \t]_xxx\(%rip\),[ \t]%eax} { target { { ! ia32 } && *-*-darwin* } } } } */
! 
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */
! 
! /* Darwin m32 defaults to PIC, so no change.  */
! /* { dg-final { scan-assembler {movl[ \t]_xxx-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-7.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-7.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-7.c	Thu May 21 18:13:06 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-7.c	Wed Mar  4 08:30:02 2020
*************** foo ()
*** 12,18 ****
    return xxx;
  }
  
! /* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target ia32 } } } */
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target ia32 } } } */
--- 12,26 ----
    return xxx;
  }
  
! /* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */
! /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */
! 
! /* For Darwin m64, code is always PIC but we need to indirect through the GOT to allow
!    weak symbols to be interposed.  The dynamic loader knows how to apply PIE to this.  */
! /* { dg-final { scan-assembler {movq[ \t]_xxx@GOTPCREL\(%rip\),[ \t]%rax} { target { { ! ia32 } && *-*-darwin* } } } } */
! 
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */
! 
! /* Darwin m32 equivalent (indirect and PIC).  */
! /* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-8.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-8.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr32219-8.c	Tue Apr 26 12:25:52 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr32219-8.c	Wed Mar  4 08:30:02 2020
*************** foo ()
*** 13,18 ****
  }
  
  /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target ia32 } } } */
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target ia32 } } } */
--- 13,24 ----
  }
  
  /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */
! /* Darwin is always PIC so no change, weak symbols needs to be indirect and this
!    happens to match the ELF case.  */
! /* { dg-final { scan-assembler "_?xxx@GOTPCREL" { target { ! ia32 } } } } */
! 
! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */
! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */
! 
! /* Darwin m32 default to PIC but needs indirection for the weak symbol.  */
! /* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr39013-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr39013-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr39013-1.c	Thu May 21 18:13:06 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr39013-1.c	Wed Mar  4 08:30:02 2020
*************** main (void)
*** 12,16 ****
    return foo () + bar ();
  }
  
! /* { dg-final { scan-assembler "foo@PLT" } } */
! /* { dg-final { scan-assembler "bar@PLT" } } */
--- 12,20 ----
    return foo () + bar ();
  }
  
! /* { dg-final { scan-assembler "foo@PLT" { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "bar@PLT" { target { ! *-*-darwin* } } } } */
! 
! /* Darwin's dynamic linker does PIE without indirection.  */
! /* { dg-final { scan-assembler {call[ \t]_foo} { target *-*-darwin* } } } */
! /* { dg-final { scan-assembler {call[ \t]_bar} { target *-*-darwin* } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr39013-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr39013-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr39013-2.c	Thu May 21 18:13:06 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr39013-2.c	Wed Mar  4 08:30:02 2020
*************** main (void)
*** 12,16 ****
    return foo () + bar ();
  }
  
! /* { dg-final { scan-assembler "foo@PLT" } } */
! /* { dg-final { scan-assembler "bar@PLT" } } */
--- 12,20 ----
    return foo () + bar ();
  }
  
! /* { dg-final { scan-assembler "foo@PLT" { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "bar@PLT" { target { ! *-*-darwin* } } } } */
! 
! /* Darwin's dynamic linker does PIE without indirection.  */
! /* { dg-final { scan-assembler {call[ \t]_foo} { target *-*-darwin* } } } */
! /* { dg-final { scan-assembler {call[ \t]_bar} { target *-*-darwin* } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr49866.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr49866.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr49866.c	Tue Aug 29 17:21:21 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr49866.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,6 ----
  /* PR target/49866 */
  /* { dg-do assemble { target lp64 } } */
+ /* { dg-xfail-if "PR90698" { *-*-darwin* } } */
  /* { dg-options "-O2 -mcmodel=large"  } */
  
  void fn (void *, int, int);
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr52146.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr52146.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr52146.c	Tue Dec 29 10:32:21 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr52146.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-options "-O2 -mx32" } */
  
  void
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr52698.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr52698.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr52698.c	Tue Dec 29 10:32:21 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr52698.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-options "-O2 -mx32 -maddress-mode=long" } */
  
  extern void abort (void);
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr52857-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr52857-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr52857-1.c	Tue Dec 29 10:32:21 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr52857-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-options "-g -O -mx32 -maddress-mode=long" } */
  
  extern void get_BID128 (int *);
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr52857-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr52857-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr52857-2.c	Tue Dec 29 10:32:21 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr52857-2.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-options "-g -O -mx32 -maddress-mode=long" } */
  
  void uw_init_context_1 (void *);
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr52876.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr52876.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr52876.c	Tue Aug 29 18:28:32 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr52876.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do run { target x32 } } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-options "-O2 -mx32 -maddress-mode=long" } */
  
  extern void abort (void);
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr53698.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr53698.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr53698.c	Tue Dec 29 10:32:21 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr53698.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-options "-O -mx32 -maddress-mode=long -fno-tree-dominator-opts" } */
  
  extern char foo[];
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr54157.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr54157.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr54157.c	Tue Dec 29 10:32:21 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr54157.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-options "-O2 -mx32 -maddress-mode=long -ftree-vectorize" } */
  
  struct s2{
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr55049-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr55049-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr55049-1.c	Tue Dec 29 10:32:21 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr55049-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target fpic } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-options "-O2 -fPIC -mx32" } */
  
  extern void __morestack_fail (const char *msg);
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr55093.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr55093.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr55093.c	Tue Dec 29 10:32:21 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr55093.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-options "-O2 -mx32 -maddress-mode=long" } */
  /* { dg-skip-if "different ABI" { x86_64-*-mingw* } } */
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr55116-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr55116-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr55116-1.c	Tue Dec 29 10:32:21 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr55116-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-options "-O2 -mx32 -maddress-mode=long" } */
  
  int glob_int_arr[100];
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr55116-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr55116-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr55116-2.c	Tue Dec 29 10:32:21 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr55116-2.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-options "-O2 -mx32 -maddress-mode=long" } */
  
  typedef struct rtx_def *rtx;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr55597.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr55597.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr55597.c	Tue Dec 29 10:32:21 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr55597.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target fpic } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-options "-O2 -fPIC -mx32 -maddress-mode=long" } */
  
  struct initial_sp
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr59874-3.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr59874-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr59874-3.c	Mon Dec 19 20:23:08 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr59874-3.c	Wed Mar  4 08:30:02 2020
***************
*** 1,7 ****
  /* PR target/59874 */
  /* { dg-do compile } */
  /* { dg-options "-O2 -mpopcnt -masm=att" } */
! /* { dg-final { scan-assembler "popcntw" } } */
  
  unsigned int
  foo (unsigned short x)
--- 1,8 ----
  /* PR target/59874 */
  /* { dg-do compile } */
  /* { dg-options "-O2 -mpopcnt -masm=att" } */
! /* { dg-final { scan-assembler "\tpopcntw" { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "\tpopcnt" { target *-*-darwin* } } } */
  
  unsigned int
  foo (unsigned short x)
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr59929.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr59929.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr59929.c	Tue Aug 29 17:21:21 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr59929.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do run } */
  /* { dg-options "-O0 -mno-accumulate-outgoing-args" } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-additional-options "-mx32 -maddress-mode=short" { target x32 } } */
  
  void
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr61599-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr61599-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr61599-1.c	Fri May 13 17:27:13 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr61599-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,6 ----
  /* PR target/61599 */
  /* { dg-do run { target lp64 } } */
+ /* { dg-skip-if "PR90698" { *-*-darwin* } } */
  /* { dg-additional-sources pr61599-2.c } */
  /* { dg-options "-mcmodel=medium -fdata-sections" } */
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr63538.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr63538.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr63538.c	Wed Nov  5 21:00:07 2014
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr63538.c	Wed Mar  4 08:30:02 2020
*************** char *foo ()
*** 9,13 ****
  {
    return str;
  }
! 
! /* { dg-final { scan-assembler "movabs" } } */
--- 9,13 ----
  {
    return str;
  }
! /* See PR90698 re. Darwin xfail.  */
! /* { dg-final { scan-assembler "movabs" { xfail { *-*-darwin* } } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr64317.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr64317.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr64317.c	Mon May 25 08:50:43 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr64317.c	Wed Mar  4 08:30:02 2020
***************
*** 2,10 ****
  /* { dg-require-effective-target ia32 } */
  /* { dg-require-effective-target pie } */
  /* { dg-options "-O2 -fpie" } */
! /* { dg-final { scan-assembler "addl\[ \\t\]+\[$\]_GLOBAL_OFFSET_TABLE_, %ebx" } } */
! /* { dg-final { scan-assembler "movl\[ \\t\]+c@GOTOFF\[(\]%ebx\[)\]" } } */
! /* { dg-final { scan-assembler-not "movl\[ \\t\]+\[0-9]+\[(\]%esp\[)\], %ebx" } } */
  long c = 1;
  
  int bar();
--- 2,15 ----
  /* { dg-require-effective-target ia32 } */
  /* { dg-require-effective-target pie } */
  /* { dg-options "-O2 -fpie" } */
! /* { dg-final { scan-assembler "addl\[ \\t\]+\[$\]_GLOBAL_OFFSET_TABLE_, %ebx" { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "movl\[ \\t\]+c@GOTOFF\[(\]%ebx\[)\]" { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler-not "movl\[ \\t\]+\[0-9]+\[(\]%esp\[)\], %ebx" { target { ! *-*-darwin* } } } } */
! 
! /* Check PIC access to c and t1 on Darwin (PIC is default, needed for PIE).  */
! /* { dg-final { scan-assembler {_c-L1\$pb\(%} { target *-*-darwin* } } } */
! /* { dg-final { scan-assembler {_t1.[0-9]+-L1\$pb\(%} { target *-*-darwin* } } } */
! 
  long c = 1;
  
  int bar();
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr65782.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr65782.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr65782.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr65782.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,16 ----
+ /* PR target/65782 */
+ /* { dg-do assemble { target { avx512vl && { ! ia32 } } } } */
+ /* { dg-options "-O2 -mavx512vl" } */
+ 
+ void
+ foo (void)
+ {
+   register double x __asm ("xmm14");
+   register double y __asm ("xmm18");
+   asm ("" : "=x" (x));
+   asm ("" : "=v" (y));
+   x += y;
+   y += x;
+   asm ("" : : "x" (x));
+   asm ("" : : "v" (y));
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr66470.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr66470.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr66470.c	Tue Dec 29 10:32:21 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr66470.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,6 ----
  /* PR target/66470 */
  /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
  /* { dg-options "-O2 -mx32 -maddress-mode=long" } */
  /* { dg-require-effective-target tls } */
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr66819-3.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr66819-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr66819-3.c	Fri Jul 10 20:30:10 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr66819-3.c	Wed Mar  4 08:30:02 2020
***************
*** 1,6 ****
  /* { dg-do compile { target ia32 } } */
  /* { dg-options "-O2 -mregparm=3" } */
! /* { dg-final { scan-assembler-not "call" } } */
  
  void (*bar)(int, int);
  
--- 1,6 ----
  /* { dg-do compile { target ia32 } } */
  /* { dg-options "-O2 -mregparm=3" } */
! /* { dg-final { scan-assembler-not {call[ \t]+_?bar} } } */
  
  void (*bar)(int, int);
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr66819-4.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr66819-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr66819-4.c	Fri Jul 10 20:30:10 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr66819-4.c	Wed Mar  4 08:30:02 2020
***************
*** 1,6 ****
  /* { dg-do compile { target ia32 } } */
  /* { dg-options "-O2 -mregparm=3" } */
! /* { dg-final { scan-assembler-not "call" } } */
  
  #include <stdarg.h>
  
--- 1,6 ----
  /* { dg-do compile { target ia32 } } */
  /* { dg-options "-O2 -mregparm=3" } */
! /* { dg-final { scan-assembler-not {call[ \t]+_?bar} } } */
  
  #include <stdarg.h>
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr67985-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr67985-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr67985-2.c	Tue Oct 20 15:12:37 2015
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr67985-2.c	Wed Mar  4 08:30:02 2020
*************** foo (float x, float y)
*** 10,13 ****
  
  /* { dg-final { scan-assembler-not "mulss" } } */
  /* { dg-final { scan-assembler-not "movl\[ \t\].*, %eax" } } */
! /* { dg-final { scan-assembler "call\[ \t\]__mulsf3" } } */
--- 10,13 ----
  
  /* { dg-final { scan-assembler-not "mulss" } } */
  /* { dg-final { scan-assembler-not "movl\[ \t\].*, %eax" } } */
! /* { dg-final { scan-assembler "call\[ \t\]_?__mulsf3" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr70738-7.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr70738-7.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr70738-7.c	Wed May 25 18:58:49 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr70738-7.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
! /* { dg-do compile { target ia32 } } */
  /* { dg-options "-msse2 -mgeneral-regs-only" } */
  
  extern float a, b, c;
--- 1,4 ----
! /* { dg-do compile { target { ia32 && { ! *-*-darwin* } } } } */
  /* { dg-options "-msse2 -mgeneral-regs-only" } */
  
  extern float a, b, c;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr70799-4.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr70799-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr70799-4.c	Tue Aug 29 18:28:32 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr70799-4.c	Thu Jan  1 00:00:00 1970
***************
*** 1,17 ****
- /* PR target/pr70799 */
- /* { dg-do compile { target ia32 } } */
- /* { dg-options "-O2 -march=slm -mno-stackrealign" } */
- /* { dg-final { scan-assembler "psllq" } } */
- /* { dg-final { scan-assembler "psrlq" } } */
- 
- unsigned long long a, b;
- 
- void test1 (int c)
- {
-   a = b << c;
- }
- 
- void test2 (int c)
- {
-   a = b >> c;
- }
--- 0 ----
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr70799-5.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr70799-5.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr70799-5.c	Tue Aug 29 18:28:32 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr70799-5.c	Thu Jan  1 00:00:00 1970
***************
*** 1,17 ****
- /* PR target/pr70799 */
- /* { dg-do compile { target ia32 } } */
- /* { dg-options "-O2 -march=slm -mavx512vl -mno-stackrealign" } */
- /* { dg-final { scan-assembler "psllq" } } */
- /* { dg-final { scan-assembler "psraq" } } */
- 
- long long a, b;
- 
- void test1 (int c)
- {
-   a = b << c;
- }
- 
- void test2 (int c)
- {
-   a = b >> c;
- }
--- 0 ----
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr77881.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr77881.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr77881.c	Tue Nov 15 14:02:28 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr77881.c	Wed Mar  4 08:30:02 2020
*************** foo (long long int a, long long int a2,
*** 8,12 ****
      if (a < 0 || b)
            baz ();
  }
! /* { dg-final { scan-assembler "js\[ \t\]\.L" } } */
! /* { dg-final { scan-assembler "jne\[ \t\]\.L" } } */
--- 8,12 ----
      if (a < 0 || b)
            baz ();
  }
! /* { dg-final { scan-assembler "js\[ \t\]\.?L" } } */
! /* { dg-final { scan-assembler "jne\[ \t\]\.?L" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr82659-3.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr82659-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr82659-3.c	Tue Apr 24 16:54:35 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr82659-3.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile } */
+ /* { dg-require-alias "" } */
  /* { dg-options "-O2 -fcf-protection" } */
  /* { dg-final { scan-assembler-times {\mendbr} 2 } } */
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr82662.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr82662.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr82662.c	Mon Oct 23 19:01:38 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr82662.c	Wed Mar  4 08:30:02 2020
*************** int f9 (S x, S y) { return x >= y; }
*** 23,26 ****
  int f10 (S x, S y) { return x < y; }
  int f11 (S x, S y) { return x <= y; }
  
! /* { dg-final { scan-assembler-times {\mset} 12 } } */
--- 23,26 ----
  int f10 (S x, S y) { return x < y; }
  int f11 (S x, S y) { return x <= y; }
  
! /* { dg-final { scan-assembler-times {\tset} 12 } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr85860.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr85860.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr85860.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr85860.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile { target lp64 } } */
+ /* { dg-options "-O2 -fno-guess-branch-probability -flive-range-shrinkage -mbmi2" } */
+ 
+ int a, b, c, d, e;
+ 
+ extern int bar(void);
+ 
+ __int128
+ foo (unsigned g, int h, long i, __int128 j, short k, __int128 l)
+ {
+   unsigned __int128 m = j;
+   do
+     {
+       j %= 5;
+       c = c >> (m & 31);
+       e = __builtin_sub_overflow (b, 0, &m);
+       d = bar ();
+       l *= __builtin_mul_overflow_p ((unsigned) d, ~(unsigned __int128) 1,
+ 				     (unsigned __int128) 0);
+     }
+   while (a);
+   return m + j + k + l;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr87853.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr87853.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr87853.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr87853.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,20 ----
+ /* PR target/87853 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -funsigned-char -msse2 -mno-sse3 -masm=att" } */
+ /* { dg-final { scan-assembler-times "\tpcmpgtb\t%xmm" 2 } } */
+ /* { dg-final { scan-assembler-not "\tpsubusb\t" } } */
+ /* { dg-final { scan-assembler-not "\tpcmpeqb\t" } } */
+ 
+ #include <x86intrin.h>
+ 
+ __m128i
+ foo (__m128i x, __m128i y)
+ {
+   return _mm_cmpgt_epi8 (x, y);
+ }
+ 
+ __m128i
+ bar (__m128i x, __m128i y)
+ {
+   return _mm_cmplt_epi8 (x, y);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-1a.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-1a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-1a.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-1a.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
+ /* { dg-options "-maddress-mode=short -mx32 -Ofast -funroll-loops -march=haswell" } */
+ /* { dg-final { scan-assembler-not "\tvgather" } } */
+ /* { dg-final { scan-assembler "addr32 vgather" } } */
+ 
+ void foo (void);
+ 
+ extern float *ncost;
+ 
+ float
+ bar (int type, int num)
+ {
+   int i;
+   float cost;
+ 
+   cost = 0;
+   for (i = 0; i < num; i++)
+     if (type)
+       cost += ncost[i];
+     else
+       foo ();
+   return (cost);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-1b.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-1b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-1b.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-1b.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
+ /* { dg-options "-maddress-mode=long -mx32 -Ofast -funroll-loops -march=haswell" } */
+ /* { dg-final { scan-assembler-not "\tvgather" } } */
+ /* { dg-final { scan-assembler "addr32 vgather" } } */
+ 
+ #include "pr89523-1a.c"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
+ /* { dg-options "-mx32 -O2 -march=haswell" } */
+ /* { dg-final { scan-assembler "\tvgather" } } */
+ /* { dg-final { scan-assembler-not "addr32 vgather" } } */
+ 
+ typedef double __v2df __attribute__ ((__vector_size__ (16)));
+ typedef int __v4si __attribute__ ((__vector_size__ (16)));
+ typedef long long __v2di __attribute__ ((__vector_size__ (16)));
+ 
+ typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
+ typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__));
+ 
+ extern __inline __m128d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_i32gather_pd (double const *__base, __m128i __index, const int __scale)
+ {
+   __v2df __zero = { 0.0, 0.0 };
+   __v2df __mask = __builtin_ia32_cmpeqpd (__zero, __zero);
+   __v2df x = x;
+ 
+   return (__m128d) __builtin_ia32_gathersiv2df (x,
+ 						__base,
+ 						(__v4si)__index,
+ 						__mask,
+ 						__scale);
+ }
+ 
+ __m128d x;
+ double *base;
+ __m128i idx;
+ 
+ void extern
+ avx2_test (void)
+ {
+   x = _mm_i32gather_pd (base, idx, 1);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-3.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-3.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-3.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
+ /* { dg-options "-mx32 -O2 -march=haswell" } */
+ /* { dg-final { scan-assembler "\tvgather" } } */
+ /* { dg-final { scan-assembler-not "addr32 vgather" } } */
+ 
+ typedef double __v2df __attribute__ ((__vector_size__ (16)));
+ typedef int __v4si __attribute__ ((__vector_size__ (16)));
+ typedef long long __v2di __attribute__ ((__vector_size__ (16)));
+ 
+ typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
+ typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__));
+ 
+ extern __inline __m128d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_i64gather_pd (double const *__base, __m128i __index, const int __scale)
+ {
+   __v2df __zero = { 0.0, 0.0 };
+   __v2df __mask = __builtin_ia32_cmpeqpd (__zero, __zero);
+ 
+   return (__m128d) __builtin_ia32_gatherdiv2df (__zero,
+ 						__base,
+ 						(__v2di)__index,
+ 						__mask,
+ 						__scale);
+ }
+ 
+ __m128d x;
+ double *base;
+ __m128i idx;
+ 
+ void extern
+ avx2_test (void)
+ {
+   x = _mm_i64gather_pd (base, idx, 1);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-4.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-4.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-4.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
+ /* { dg-options "-mx32 -O2 -march=haswell" } */
+ /* { dg-final { scan-assembler-not "\tvgather" } } */
+ /* { dg-final { scan-assembler "addr32 vgather" } } */
+ 
+ typedef double __v2df __attribute__ ((__vector_size__ (16)));
+ typedef int __v4si __attribute__ ((__vector_size__ (16)));
+ typedef long long __v2di __attribute__ ((__vector_size__ (16)));
+ 
+ typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
+ typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__));
+ 
+ extern __inline __m128d
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_i32gather_pd (double const *__base, __m128i __index, const int __scale)
+ {
+   __v2df __zero = { 0.0, 0.0 };
+   __v2df __mask = __builtin_ia32_cmpeqpd (__zero, __zero);
+   __v2df x = x;
+ 
+   return (__m128d) __builtin_ia32_gathersiv2df (x,
+ 						__base,
+ 						(__v4si)__index,
+ 						__mask,
+ 						__scale);
+ }
+ 
+ __m128d x;
+ __m128i idx;
+ 
+ void extern
+ avx2_test (void)
+ {
+   x = _mm_i32gather_pd ((void *) 0, idx, 1);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-5.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-5.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-5.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-5.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,39 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
+ /* { dg-options "-mx32 -O2 -mavx512pf" } */
+ /* { dg-final { scan-assembler "\tvgather" } } */
+ /* { dg-final { scan-assembler-not "addr32 vgather" } } */
+ 
+ typedef int __v8si __attribute__ ((__vector_size__ (32)));
+ typedef long long __m256i __attribute__ ((__vector_size__ (32),
+ 					  __may_alias__));
+ typedef unsigned char  __mmask8;
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_prefetch_i32gather_pd (__m256i __index, void const *__addr,
+ 			      int __scale, int __hint)
+ {
+   __builtin_ia32_gatherpfdpd ((__mmask8) 0xFF, (__v8si) __index, __addr,
+ 			      __scale, __hint);
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_mask_prefetch_i32gather_pd (__m256i __index, __mmask8 __mask,
+ 				   void const *__addr, int __scale, int __hint)
+ {
+   __builtin_ia32_gatherpfdpd (__mask, (__v8si) __index, __addr, __scale,
+ 			      __hint);
+ }
+ 
+ volatile __m256i idx;
+ volatile __mmask8 m8;
+ void *base;
+ 
+ void extern
+ avx512pf_test (void)
+ {
+   _mm512_prefetch_i32gather_pd (idx, base, 8, 3);
+   _mm512_mask_prefetch_i32gather_pd (idx, m8, base, 8, 3);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-6.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-6.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-6.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-6.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,38 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
+ /* { dg-options "-mx32 -O2 -mavx512pf" } */
+ /* { dg-final { scan-assembler-not "\tvgather" } } */
+ /* { dg-final { scan-assembler "addr32 vgather" } } */
+ 
+ typedef int __v8si __attribute__ ((__vector_size__ (32)));
+ typedef long long __m256i __attribute__ ((__vector_size__ (32),
+ 					  __may_alias__));
+ typedef unsigned char  __mmask8;
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_prefetch_i32gather_pd (__m256i __index, void const *__addr,
+ 			      int __scale, int __hint)
+ {
+   __builtin_ia32_gatherpfdpd ((__mmask8) 0xFF, (__v8si) __index, __addr,
+ 			      __scale, __hint);
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_mask_prefetch_i32gather_pd (__m256i __index, __mmask8 __mask,
+ 				   void const *__addr, int __scale, int __hint)
+ {
+   __builtin_ia32_gatherpfdpd (__mask, (__v8si) __index, __addr, __scale,
+ 			      __hint);
+ }
+ 
+ volatile __m256i idx;
+ volatile __mmask8 m8;
+ 
+ void extern
+ avx512pf_test (void)
+ {
+   _mm512_prefetch_i32gather_pd (idx, (void *) 0, 8, 3);
+   _mm512_mask_prefetch_i32gather_pd (idx, m8, (void *) 0, 8, 3);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-7.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-7.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-7.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-7.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,42 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
+ /* { dg-options "-mx32 -O2 -mavx512f" } */
+ /* { dg-final { scan-assembler "\tvscatter" } } */
+ /* { dg-final { scan-assembler-not "addr32 vscatter" } } */
+ 
+ typedef int __v8si __attribute__ ((__vector_size__ (32)));
+ typedef double __v8df __attribute__ ((__vector_size__ (64)));
+ typedef long long __m256i __attribute__ ((__vector_size__ (32),
+ 					  __may_alias__));
+ typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__));
+ typedef unsigned char  __mmask8;
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_i32scatter_pd (void *__addr, __m256i __index, __m512d __v1,
+ 		      int __scale)
+ {
+   __builtin_ia32_scattersiv8df (__addr, (__mmask8) 0xFF,
+ 				(__v8si) __index, (__v8df) __v1, __scale);
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_mask_i32scatter_pd (void *__addr, __mmask8 __mask,
+ 			   __m256i __index, __m512d __v1, int __scale)
+ {
+   __builtin_ia32_scattersiv8df (__addr, __mask, (__v8si) __index,
+ 				(__v8df) __v1, __scale);
+ }
+ 
+ volatile __m512d src;
+ volatile __m256i idx;
+ volatile __mmask8 m8;
+ double *addr;
+ 
+ void extern
+ avx512f_test (void)
+ {
+   _mm512_i32scatter_pd (addr, idx, src, 8);
+   _mm512_mask_i32scatter_pd (addr, m8, idx, src, 8);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-8.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-8.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-8.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-8.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,41 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
+ /* { dg-options "-mx32 -O2 -mavx512f" } */
+ /* { dg-final { scan-assembler "\tvscatter" } } */
+ /* { dg-final { scan-assembler-not "addr32 vscatter" } } */
+ 
+ typedef long long __v8di __attribute__ ((__vector_size__ (64)));
+ typedef double __v8df __attribute__ ((__vector_size__ (64)));
+ typedef long long __m512i __attribute__ ((__vector_size__ (64), __may_alias__));
+ typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__));
+ typedef unsigned char  __mmask8;
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_i64scatter_pd (void *__addr, __m512i __index, __m512d __v1,
+ 		      int __scale)
+ {
+   __builtin_ia32_scatterdiv8df (__addr, (__mmask8) 0xFF,
+ 				(__v8di) __index, (__v8df) __v1, __scale);
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_mask_i64scatter_pd (void *__addr, __mmask8 __mask,
+ 			   __m512i __index, __m512d __v1, int __scale)
+ {
+   __builtin_ia32_scatterdiv8df (__addr, __mask, (__v8di) __index,
+ 				(__v8df) __v1, __scale);
+ }
+ 
+ volatile __m512d src;
+ volatile __m512i idx;
+ volatile __mmask8 m8;
+ double *addr;
+ 
+ void extern
+ avx512f_test (void)
+ {
+   _mm512_i64scatter_pd (addr, idx, src, 8);
+   _mm512_mask_i64scatter_pd (addr, m8, idx, src, 8);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-9.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-9.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89523-9.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89523-9.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
+ /* { dg-options "-mx32 -O2 -mavx512f" } */
+ /* { dg-final { scan-assembler-not "\tvscatter" } } */
+ /* { dg-final { scan-assembler "addr32 vscatter" } } */
+ 
+ typedef int __v8si __attribute__ ((__vector_size__ (32)));
+ typedef double __v8df __attribute__ ((__vector_size__ (64)));
+ typedef long long __m256i __attribute__ ((__vector_size__ (32),
+ 					  __may_alias__));
+ typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__));
+ typedef unsigned char  __mmask8;
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_i32scatter_pd (void *__addr, __m256i __index, __m512d __v1,
+ 		      int __scale)
+ {
+   __builtin_ia32_scattersiv8df (__addr, (__mmask8) 0xFF,
+ 				(__v8si) __index, (__v8df) __v1, __scale);
+ }
+ 
+ volatile __m512d src;
+ volatile __m256i idx;
+ 
+ void extern
+ avx512f_test (void)
+ {
+   _mm512_i32scatter_pd ((void *) 0, idx, src, 8);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89684.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89684.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89684.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89684.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,23 ----
+ /* PR ipa/89684 */
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ 
+ void bar (int, void (*) (void));
+ 
+ __attribute__((target_clones ("default", "avx")))
+ void foo (void)
+ {
+   bar (0, foo);
+   bar (0, foo);
+ }
+ 
+ __attribute__((target_clones ("default", "avx", "avx2")))
+ void baz (void)
+ {
+   bar (0, foo);
+   bar (0, foo);
+   bar (0, foo);
+   bar (0, foo);
+   bar (0, foo);
+   bar (0, foo);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89827.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89827.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89827.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89827.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ /* PR target/89827 */
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -msse2 -mstv -mno-stackrealign" } */
+ 
+ unsigned long long a;
+ 
+ void
+ foo (void)
+ {
+   a >>= (unsigned short) a;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89848.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89848.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89848.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89848.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ /* PR target/89848 */
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -msse2 -mtune=pentium3m" } */
+ 
+ long long
+ foo (long long x)
+ {
+   x >>= 3;
+   x <<= x;
+   return x;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89902.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89902.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89902.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89902.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,13 ----
+ /* PR target/89902 */
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -fno-tree-coalesce-vars -mavx512bitalg" } */
+ 
+ void bar (void);
+ 
+ int
+ foo (long long x)
+ {
+   x <<= (char) x;
+   bar ();
+   return x;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89903.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89903.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89903.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89903.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,14 ----
+ /* PR target/89903 */
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -march=skylake" } */
+ 
+ int a, b;
+ 
+ void
+ foo (void)
+ {
+   unsigned long long d = 983040;
+   d += a;
+   d >>= (short) d;
+   b = d;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89945.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89945.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89945.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89945.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,21 ----
+ /* PR target/89945 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ void
+ foo ()
+ {
+   void *g[] = {&&a, &&b};
+ 
+   for (unsigned c = 0x1F;; c >>= 1)
+     {
+       unsigned d = (long)"a";
+       long e = 8;
+ 
+       while (e)
+         {
+           a: goto *g[c&d];
+           b: e--;
+         }
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89965.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89965.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr89965.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr89965.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,39 ----
+ /* PR rtl-optimization/89965 */
+ /* { dg-do run } */
+ /* { dg-options "-O -mtune=nano-x2 -fcaller-saves -fexpensive-optimizations -fno-tree-dce -fno-tree-ter" } */
+ /* { dg-additional-options "-march=i386" { target ia32 } } */
+ 
+ int a;
+ 
+ __attribute__ ((noipa)) unsigned long long
+ foo (unsigned char c, unsigned d, unsigned e, unsigned long long f,
+      unsigned char g, unsigned h, unsigned long long i)
+ {
+   (void) d;
+   unsigned short j = __builtin_mul_overflow_p (~0, h, c);
+   e <<= e;
+   i >>= 7;
+   c *= i;
+   i /= 12;
+   a = __builtin_popcount (c);
+   __builtin_add_overflow (e, a, &f);
+   return c + f + g + j + h;
+ }
+ 
+ __attribute__ ((noipa)) void
+ bar (void)
+ {
+   char buf[64];
+   __builtin_memset (buf, 0x55, sizeof buf);
+   asm volatile ("" : : "r" (&buf[0]) : "memory");
+ }
+ 
+ int
+ main (void)
+ {
+   bar ();
+   unsigned long long x = foo (2, 0, 0, 0, 0, 0, 0);
+   if (x != 0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr90193.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr90193.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr90193.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr90193.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,21 ----
+ /* PR target/90193 *
+ /* { dg-do link } */
+ /* { dg-options "-O1" } */
+ /* { dg-require-effective-target tls } */
+ 
+ __thread int var;
+ 
+ static int
+ foo (void)
+ {
+   asm goto ("jmp %l[l]\n\t" : : "m" (var) : : l);
+   return 0;
+ l:
+   return 1;
+ }
+ 
+ int
+ main ()
+ {
+   return foo ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr90547.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr90547.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr90547.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr90547.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,21 ----
+ /* PR target/90547 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ void
+ foo ()
+ {
+   void *g[] = {&&a, &&b};
+ 
+   for (unsigned c = 0x1F;; c >>= 1)
+     {
+       unsigned d = (long)("a"+1);
+       long e = 8;
+ 
+       while (e)
+         {
+           a: goto *g[c&d];
+           b: e--;
+         }
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr90867.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr90867.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr90867.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr90867.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,30 ----
+ /* PR target/90867 */
+ /* { dg-do run { target lp64 } } */
+ /* { dg-options "-O2 -msse2" } */
+ 
+ unsigned long long freq = 3600000000UL;   /* 3.6 GHz = 3600.0 MHz */
+ 
+ __attribute__((noipa)) void
+ bar (double x)
+ {
+   static double d = 3600000000.0;
+   if (x != d)
+     __builtin_abort ();
+   d /= 1000.0;
+ }
+ 
+ __attribute__ ((target ("arch=x86-64"))) int
+ foo ()
+ {
+   bar ((double) freq);
+   bar (1e-3 * freq);
+   bar (1e-6 * freq);
+   bar (1e-9 * freq);
+   return 0;
+ }
+ 
+ int
+ main ()
+ {
+   return foo ();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr90899.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr90899.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr90899.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr90899.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,6 ----
+ /* PR middle-end/90899 */
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ 
+ __attribute__ ((target_clones ("default", "arch=slm"))) static int f () { return 0; }
+ __attribute__ ((alias ("f"))) __typeof (f) g;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr91131.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr91131.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr91131.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr91131.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O" } */
+ 
+ struct Reg_T {
+     unsigned int a : 3;
+     unsigned int b : 1;
+     unsigned int c : 4;
+ };
+ 
+ volatile struct Reg_T Reg_A;
+ 
+ int
+ main ()
+ {
+   Reg_A = (struct Reg_T){ .a = 0, .b = 0, .c = 0 };
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler-times "mov\[^\r\n\]*Reg_A" 1 } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr91298-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr91298-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr91298-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr91298-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,14 ----
+ /* PR target/91298 */
+ /* { dg-do assemble } */
+ /* { dg-options "-O2 -g -fdollars-in-identifiers" } */
+ 
+ int $a[18];
+ int *foo (void) { return &$a[0]; }
+ int *bar (int x) { return &$a[x]; }
+ int baz (void) { return $a[0]; }
+ int qux (void) { return $a[4]; }
+ int $quux (void) { return 1; }
+ int corge (void) { return $quux (); }
+ int grault (void) { return $quux () + 1; }
+ typedef int (*fn) (void);
+ fn foobar (void) { return $quux; }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr91298-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr91298-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr91298-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr91298-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,5 ----
+ /* PR target/91298 */
+ /* { dg-do assemble { target fpic } } */
+ /* { dg-options "-O2 -g -fdollars-in-identifiers -fpic" } */
+ 
+ #include "pr91298-1.c"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr91623.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr91623.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr91623.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr91623.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,32 ----
+ /* PR middle-end/91623 */
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -msse4.1 -mno-sse4.2" } */
+ 
+ typedef long long V __attribute__((__vector_size__(16)));
+ V e, h;
+ int d;
+ const int i;
+ 
+ void foo (void);
+ 
+ void
+ bar (int k, int l)
+ {
+   if (d && 0 <= k - 1 && l)
+     foo ();
+ }
+ 
+ void
+ baz (void)
+ {
+   V n = (V) { 1 };
+   V g = (V) {};
+   V o = g;
+   for (int f = 0; f < i; ++f)
+     {
+       V a = o == n;
+       h = a;
+       bar (f, i);
+       o = e;
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr91704.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr91704.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr91704.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr91704.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,14 ----
+ /* PR target/91704 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -funsigned-char -mavx2 -mavx512f -masm=att" } */
+ /* { dg-final { scan-assembler-times "\tvpcmpgtb\t%ymm" 1 } } */
+ /* { dg-final { scan-assembler-not "\tvpsubusb\t" } } */
+ /* { dg-final { scan-assembler-not "\tvpcmpeqb\t" } } */
+ 
+ #include <x86intrin.h>
+ 
+ __m256i
+ foo (__m256i x, __m256i y)
+ {
+   return _mm256_cmpgt_epi8 (x, y);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr92615.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr92615.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr92615.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr92615.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,45 ----
+ /* PR target/92615 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ void *a;
+ long long b;
+ char c;
+ 
+ void
+ foo (void)
+ {
+   void *p;
+   long long q;
+   char r;
+   __asm__ ("" : : "r" (&p), "r" (&q), "r" (&r));
+   __asm__ ("" : "=@cca" (p));
+   a = p;
+   __asm__ ("" : "=@cca" (q));
+   b = q;
+   __asm__ ("" : "=@cca" (r));
+   c = r;
+   __asm__ ("" : : "r" (&p), "r" (&q), "r" (&r));
+ }
+ 
+ void
+ bar (void)
+ {
+   void *p;
+   long long q;
+   char r;
+   __asm__ ("" : "=@cca" (p));
+   a = p;
+   __asm__ ("" : "=@cca" (q));
+   b = q;
+   __asm__ ("" : "=@cca" (r));
+   c = r;
+   __asm__ ("" : : "r" (p), "A" (q), "q" (r));
+ }
+ 
+ void
+ baz (void)
+ {
+   void *p = (void *) &p;
+   __asm__ __volatile__ ("" : "=@ccng" (p) : "r" (1));
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr93088.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr93088.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr93088.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr93088.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,5 ----
+ /* PR rtl-optimization/93088 */
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -funroll-loops -fno-tree-dominator-opts -fno-tree-vrp -w" } */
+ 
+ #include "pr56348.c"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr93656.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr93656.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr93656.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr93656.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,4 ----
+ /* { dg-do run { target { ia32 && cet } } } */
+ /* { dg-options "-O2 -fcf-protection" } */
+ 
+ #include "pr67770.c"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr93696-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr93696-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr93696-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr93696-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,79 ----
+ /* PR target/93696 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx512bitalg -mavx512vpopcntdq -mavx512vl -mavx512bw -masm=att" } */
+ /* { dg-final { scan-assembler-times "vpopcnt\[bwdq]\t%\[xyz]mm1, %\[xyz]mm0\{%k\[0-7]\}\[^\{]" 12 } } */
+ /* { dg-final { scan-assembler-not "vmovdq\[au]\[0-9]" } } */
+ 
+ #include <x86intrin.h>
+ 
+ __m128i
+ f1 (__m128i x, __mmask8 m, __m128i y)
+ {
+   return _mm_mask_popcnt_epi64 (x, m, y);
+ }
+ 
+ __m128i
+ f2 (__m128i x, __mmask8 m, __m128i y)
+ {
+   return _mm_mask_popcnt_epi32 (x, m, y);
+ }
+ 
+ __m128i
+ f3 (__m128i x, __mmask8 m, __m128i y)
+ {
+   return _mm_mask_popcnt_epi16 (x, m, y);
+ }
+ 
+ __m128i
+ f4 (__m128i x, __mmask16 m, __m128i y)
+ {
+   return _mm_mask_popcnt_epi8 (x, m, y);
+ }
+ 
+ __m256i
+ f5 (__m256i x, __mmask8 m, __m256i y)
+ {
+   return _mm256_mask_popcnt_epi64 (x, m, y);
+ }
+ 
+ __m256i
+ f6 (__m256i x, __mmask8 m, __m256i y)
+ {
+   return _mm256_mask_popcnt_epi32 (x, m, y);
+ }
+ 
+ __m256i
+ f7 (__m256i x, __mmask16 m, __m256i y)
+ {
+   return _mm256_mask_popcnt_epi16 (x, m, y);
+ }
+ 
+ __m256i
+ f8 (__m256i x, __mmask32 m, __m256i y)
+ {
+   return _mm256_mask_popcnt_epi8 (x, m, y);
+ }
+ 
+ __m512i
+ f9 (__m512i x, __mmask8 m, __m512i y)
+ {
+   return _mm512_mask_popcnt_epi64 (x, m, y);
+ }
+ 
+ __m512i
+ f10 (__m512i x, __mmask16 m, __m512i y)
+ {
+   return _mm512_mask_popcnt_epi32 (x, m, y);
+ }
+ 
+ __m512i
+ f11 (__m512i x, __mmask32 m, __m512i y)
+ {
+   return _mm512_mask_popcnt_epi16 (x, m, y);
+ }
+ 
+ __m512i
+ f12 (__m512i x, __mmask64 m, __m512i y)
+ {
+   return _mm512_mask_popcnt_epi8 (x, m, y);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr93696-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr93696-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/pr93696-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/pr93696-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,79 ----
+ /* PR target/93696 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx512bitalg -mavx512vpopcntdq -mavx512vl -mavx512bw -masm=att" } */
+ /* { dg-final { scan-assembler-times "vpopcnt\[bwdq]\t%\[xyz]mm1, %\[xyz]mm0\{%k\[0-7]\}\{z\}" 12 } } */
+ /* { dg-final { scan-assembler-not "vmovdq\[au]\[0-9]" } } */
+ 
+ #include <x86intrin.h>
+ 
+ __m128i
+ f1 (__m128i x, __mmask8 m, __m128i y)
+ {
+   return _mm_maskz_popcnt_epi64 (m, y);
+ }
+ 
+ __m128i
+ f2 (__m128i x, __mmask8 m, __m128i y)
+ {
+   return _mm_maskz_popcnt_epi32 (m, y);
+ }
+ 
+ __m128i
+ f3 (__m128i x, __mmask8 m, __m128i y)
+ {
+   return _mm_maskz_popcnt_epi16 (m, y);
+ }
+ 
+ __m128i
+ f4 (__m128i x, __mmask16 m, __m128i y)
+ {
+   return _mm_maskz_popcnt_epi8 (m, y);
+ }
+ 
+ __m256i
+ f5 (__m256i x, __mmask8 m, __m256i y)
+ {
+   return _mm256_maskz_popcnt_epi64 (m, y);
+ }
+ 
+ __m256i
+ f6 (__m256i x, __mmask8 m, __m256i y)
+ {
+   return _mm256_maskz_popcnt_epi32 (m, y);
+ }
+ 
+ __m256i
+ f7 (__m256i x, __mmask16 m, __m256i y)
+ {
+   return _mm256_maskz_popcnt_epi16 (m, y);
+ }
+ 
+ __m256i
+ f8 (__m256i x, __mmask32 m, __m256i y)
+ {
+   return _mm256_maskz_popcnt_epi8 (m, y);
+ }
+ 
+ __m512i
+ f9 (__m512i x, __mmask8 m, __m512i y)
+ {
+   return _mm512_maskz_popcnt_epi64 (m, y);
+ }
+ 
+ __m512i
+ f10 (__m512i x, __mmask16 m, __m512i y)
+ {
+   return _mm512_maskz_popcnt_epi32 (m, y);
+ }
+ 
+ __m512i
+ f11 (__m512i x, __mmask32 m, __m512i y)
+ {
+   return _mm512_maskz_popcnt_epi16 (m, y);
+ }
+ 
+ __m512i
+ f12 (__m512i x, __mmask64 m, __m512i y)
+ {
+   return _mm512_maskz_popcnt_epi8 (m, y);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-1.c	Sun Jan 14 14:37:39 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-1.c	Wed Mar  4 08:30:02 2020
*************** foo (void)
*** 6,13 ****
  {
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
--- 6,13 ----
  {
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-10.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-10.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-10.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-10.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk-inline -mindirect-branch=thunk -fno-pic" } */
  
  extern void (*bar) (void);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk-inline -mindirect-branch=thunk " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  extern void (*bar) (void);
  
*************** foo (void)
*** 10,20 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-times {\tpause} 2 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 2 } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
--- 11,21 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-times {\tpause} 2 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 2 } } */
! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler "_?__x86_indirect_thunk_(r|e)ax:" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-11.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-11.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-11.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-11.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk-extern -mindirect-branch=thunk -fno-pic" } */
  
  extern void (*bar) (void);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk-extern -mindirect-branch=thunk " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  extern void (*bar) (void);
  
*************** foo (void)
*** 10,20 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-times {\tpause} 1 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 1 } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
--- 11,21 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-times {\tpause} 1 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 1 } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler "_?__x86_indirect_thunk_(r|e)ax:" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-12.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-12.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-12.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-12.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */
  
  extern void (*bar) (void);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  extern void (*bar) (void);
  
*************** foo (void)
*** 10,20 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-times {\tpause} 1 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 1 } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
--- 11,21 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-times {\tpause} 1 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 1 } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler "_?__x86_indirect_thunk_(r|e)ax:" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-13.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-13.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-13.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-13.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */
  
  extern void (*bar) (void);
  extern int foo (void) __attribute__ ((function_return("thunk")));
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  extern void (*bar) (void);
  extern int foo (void) __attribute__ ((function_return("thunk")));
*************** foo (void)
*** 11,21 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-times {\tpause} 2 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 2 } } */
! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 3 } } */
! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 3 } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_indirect_thunk" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
--- 12,22 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-times {\tpause} 2 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 2 } } */
! /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 3 } } */
! /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 3 } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_indirect_thunk" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-14.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-14.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-14.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-14.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */
  
  extern void (*bar) (void);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  extern void (*bar) (void);
  
*************** foo (void)
*** 13,21 ****
  
  /* { dg-final { scan-assembler-times {\tpause} 1 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 1 } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
--- 14,24 ----
  
  /* { dg-final { scan-assembler-times {\tpause} 1 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 1 } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_bar} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-15.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-15.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-15.c	Mon Feb 26 17:00:46 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-15.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=keep -fno-pic" } */
  
  extern void (*bar) (void);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=keep " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  extern void (*bar) (void);
  
*************** foo (void)
*** 11,21 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler-times {\tpause} 1 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 1 } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
--- 12,24 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler-times {\tpause} 1 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 1 } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_bar} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-16.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-16.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-16.c	Sun Jan 14 14:37:39 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-16.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mfunction-return=thunk-inline -mindirect-branch=thunk-extern -fno-pic" } */
  
  extern void (*bar) (void);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mfunction-return=thunk-inline -mindirect-branch=thunk-extern " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  extern void (*bar) (void);
  
*************** foo (void)
*** 11,18 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */
! /* { dg-final { scan-assembler-not "__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 12,19 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */
! /* { dg-final { scan-assembler-not "_?__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-2.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-2.c	Sun Jan 14 14:37:39 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-2.c	Wed Mar  4 08:30:02 2020
*************** foo (void)
*** 6,13 ****
  {
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */
--- 6,13 ----
  {
  }
  
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-22.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-22.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-22.c	Mon Feb 26 15:29:30 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-22.c	Wed Mar  4 08:30:02 2020
*************** struct s { _Complex unsigned short x; };
*** 6,15 ****
  struct s gs = { 100 + 200i };
  struct s __attribute__((noinline)) foo (void) { return gs; }
  
! /* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */
! /* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk_ecx" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
--- 6,17 ----
  struct s gs = { 100 + 200i };
  struct s __attribute__((noinline)) foo (void) { return gs; }
  
! /* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk_ecx" { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {call[ \t]*___x86.get_pc_thunk.cx} { target { *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {jmp[ \t]*___x86_return_thunk} { target { *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-23.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-23.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-23.c	Mon Feb 26 15:29:30 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-23.c	Wed Mar  4 08:30:02 2020
*************** struct s { _Complex unsigned short x; };
*** 6,15 ****
  struct s gs = { 100 + 200i };
  struct s __attribute__((noinline)) foo (void) { return gs; }
  
! /* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */
! /* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk_ecx" } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler-not {\tpause} } } */
  /* { dg-final { scan-assembler-not {\tlfence} } } */
--- 6,17 ----
  struct s gs = { 100 + 200i };
  struct s __attribute__((noinline)) foo (void) { return gs; }
  
! /* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk_ecx" { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {call[ \t]*___x86.get_pc_thunk.cx} { target { *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {jmp[ \t]*___x86_return_thunk} { target { *-*-darwin* } } } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler-not {\tpause} } } */
  /* { dg-final { scan-assembler-not {\tlfence} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-24.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-24.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-24.c	Mon Feb 26 15:29:30 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-24.c	Wed Mar  4 08:30:02 2020
*************** struct s { _Complex unsigned short x; };
*** 6,15 ****
  struct s gs = { 100 + 200i };
  struct s __attribute__((noinline)) foo (void) { return gs; }
  
! /* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */
! /* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk_ecx" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
--- 6,17 ----
  struct s gs = { 100 + 200i };
  struct s __attribute__((noinline)) foo (void) { return gs; }
  
! /* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk_ecx" { target { ! *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {call[ \t]*___x86.get_pc_thunk.cx} { target { *-*-darwin* } } } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*___x86_return_thunk} { target { *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-25.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-25.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-25.c	Mon Feb 26 15:29:30 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-25.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,6 ----
  /* PR target/r84530 */
  /* { dg-do compile { target ia32 } } */
+ /* { dg-skip-if "ABI differs for return complex value" { *-*-darwin* } } */
  /* { dg-options "-O2 -mfunction-return=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */
  
  struct s { _Complex unsigned short x; };
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-3.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-3.c	Sun Jan 14 14:37:39 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-3.c	Wed Mar  4 08:30:02 2020
*************** foo (void)
*** 6,12 ****
  {
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 6,12 ----
  {
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-4.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-4.c	Sun Jan 14 14:37:39 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-4.c	Wed Mar  4 08:30:02 2020
*************** foo (void)
*** 6,12 ****
  {
  }
  
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 6,12 ----
  {
  }
  
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-5.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-5.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-5.c	Sun Jan 14 14:37:39 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-5.c	Wed Mar  4 08:30:02 2020
*************** foo (void)
*** 8,15 ****
  {
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
--- 8,15 ----
  {
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-6.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-6.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-6.c	Sun Jan 14 14:37:39 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-6.c	Wed Mar  4 08:30:02 2020
*************** foo (void)
*** 7,14 ****
  {
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */
--- 7,14 ----
  {
  }
  
! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-7.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-7.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-7.c	Sun Jan 14 14:37:39 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-7.c	Wed Mar  4 08:30:02 2020
*************** foo (void)
*** 7,13 ****
  {
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 7,13 ----
  {
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-8.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-8.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-8.c	Sun Jan 14 14:37:39 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-8.c	Wed Mar  4 08:30:02 2020
*************** foo (void)
*** 8,14 ****
  {
  }
  
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 8,14 ----
  {
  }
  
! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-9.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-9.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-9.c	Thu Mar 15 17:54:40 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-9.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk -mindirect-branch=thunk -fno-pic" } */
  
  extern void (*bar) (void);
  
--- 1,6 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk -mindirect-branch=thunk " } */
! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */
  
  extern void (*bar) (void);
  
*************** foo (void)
*** 10,21 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler "__x86_return_thunk:" } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */
  /* { dg-final { scan-assembler-times {\tpause} 2 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 2 } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
--- 11,24 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */
! /* { dg-final { scan-assembler {jmp[ \t]+\.?LIND} } } */
! /* { dg-final { scan-assembler {call[ \t]+\.?LIND} } } */
! /* { dg-final { scan-assembler "_?__x86_return_thunk:" } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar" { target *-*-linux* } } } */
! /* { dg-final { scan-assembler {movq[ \t]*_bar} { target { lp64 && *-*-darwin* } } } } */
! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
  /* { dg-final { scan-assembler-times {\tpause} 2 } } */
  /* { dg-final { scan-assembler-times {\tlfence} 2 } } */
! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/sse-12.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/sse-12.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/sse-12.c	Mon Mar  5 14:37:54 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/sse-12.c	Wed Mar  4 08:30:02 2020
***************
*** 3,9 ****
     popcntintrin.h gfniintrin.h and mm_malloc.h are usable
     with -O -std=c89 -pedantic-errors.  */
  /* { dg-do compile } */
! /* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt -mavx512bw -mavx512dq -mavx512vl -mavx512vbmi -mavx512ifma -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd" } */
  
  #include <x86intrin.h>
  
--- 3,9 ----
     popcntintrin.h gfniintrin.h and mm_malloc.h are usable
     with -O -std=c89 -pedantic-errors.  */
  /* { dg-do compile } */
! /* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt -mavx512bw -mavx512dq -mavx512vl -mavx512vbmi -mavx512vbmi2 -mavx512ifma -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd" } */
  
  #include <x86intrin.h>
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/sse-13.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/sse-13.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/sse-13.c	Mon Mar  5 14:37:54 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/sse-13.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt -mavx512vl -mavx512dq -mavx512bw -mavx512vbmi -mavx512ifma -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd" } */
  /* { dg-add-options bind_pic_locally } */
  
  #include <mm_malloc.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt -mavx512vl -mavx512dq -mavx512bw -mavx512vbmi -mavx512vbmi2 -mavx512ifma -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd" } */
  /* { dg-add-options bind_pic_locally } */
  
  #include <mm_malloc.h>
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/sse-14.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/sse-14.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/sse-14.c	Mon Mar  5 14:37:54 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/sse-14.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt -mavx512dq -mavx512bw -mavx512vl -mavx512ifma -mavx512vbmi -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd" } */
  /* { dg-add-options bind_pic_locally } */
  
  #include <mm_malloc.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt -mavx512dq -mavx512bw -mavx512vl -mavx512ifma -mavx512vbmi -mavx512vbmi2 -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd" } */
  /* { dg-add-options bind_pic_locally } */
  
  #include <mm_malloc.h>
*************** test_2 (_mm_sqrt_round_sd, __m128d, __m1
*** 315,320 ****
--- 315,338 ----
  test_2 (_mm_sqrt_round_ss, __m128, __m128, __m128, 9)
  test_2 (_mm_sub_round_sd, __m128d, __m128d, __m128d, 9)
  test_2 (_mm_sub_round_ss, __m128, __m128, __m128, 9)
+ test_2 (_mm512_shrdi_epi16, __m512i, __m512i, __m512i, 1)
+ test_2 (_mm512_shrdi_epi32, __m512i, __m512i, __m512i, 1)
+ test_2 (_mm512_shrdi_epi64, __m512i, __m512i, __m512i, 1)
+ test_2 (_mm256_shrdi_epi16, __m256i, __m256i, __m256i, 1)
+ test_2 (_mm256_shrdi_epi32, __m256i, __m256i, __m256i, 1)
+ test_2 (_mm256_shrdi_epi64, __m256i, __m256i, __m256i, 1)
+ test_2 (_mm_shrdi_epi16, __m128i, __m128i, __m128i, 1)
+ test_2 (_mm_shrdi_epi32, __m128i, __m128i, __m128i, 1)
+ test_2 (_mm_shrdi_epi64, __m128i, __m128i, __m128i, 1)
+ test_2 (_mm512_shldi_epi16, __m512i, __m512i, __m512i, 1)
+ test_2 (_mm512_shldi_epi32, __m512i, __m512i, __m512i, 1)
+ test_2 (_mm512_shldi_epi64, __m512i, __m512i, __m512i, 1)
+ test_2 (_mm256_shldi_epi16, __m256i, __m256i, __m256i, 1)
+ test_2 (_mm256_shldi_epi32, __m256i, __m256i, __m256i, 1)
+ test_2 (_mm256_shldi_epi64, __m256i, __m256i, __m256i, 1)
+ test_2 (_mm_shldi_epi16, __m128i, __m128i, __m128i, 1)
+ test_2 (_mm_shldi_epi32, __m128i, __m128i, __m128i, 1)
+ test_2 (_mm_shldi_epi64, __m128i, __m128i, __m128i, 1)
  test_2x (_mm512_cmp_round_pd_mask, __mmask8, __m512d, __m512d, 1, 8)
  test_2x (_mm512_cmp_round_ps_mask, __mmask16, __m512, __m512, 1, 8)
  test_2x (_mm512_maskz_roundscale_round_pd, __m512d, __mmask8, __m512d, 1, 8)
*************** test_3 (_mm_fnmsub_round_sd, __m128d, __
*** 434,439 ****
--- 452,475 ----
  test_3 (_mm_fnmsub_round_ss, __m128, __m128, __m128, __m128, 9)
  test_3 (_mm_mask_cmp_sd_mask, __mmask8, __mmask8, __m128d, __m128d, 1)
  test_3 (_mm_mask_cmp_ss_mask, __mmask8, __mmask8, __m128, __m128, 1)
+ test_3 (_mm512_maskz_shrdi_epi16, __m512i, __mmask32, __m512i, __m512i, 1)
+ test_3 (_mm512_maskz_shrdi_epi32, __m512i, __mmask16, __m512i, __m512i, 1)
+ test_3 (_mm512_maskz_shrdi_epi64, __m512i, __mmask8,  __m512i,__m512i, 1)
+ test_3 (_mm256_maskz_shrdi_epi16, __m256i, __mmask16, __m256i, __m256i, 1)
+ test_3 (_mm256_maskz_shrdi_epi32, __m256i, __mmask8,  __m256i,__m256i, 1)
+ test_3 (_mm256_maskz_shrdi_epi64, __m256i, __mmask8,  __m256i,__m256i, 1)
+ test_3 (_mm_maskz_shrdi_epi16, __m128i, __mmask8,  __m128i, __m128i, 1)
+ test_3 (_mm_maskz_shrdi_epi32, __m128i, __mmask8,  __m128i, __m128i, 1)
+ test_3 (_mm_maskz_shrdi_epi64, __m128i, __mmask8,  __m128i, __m128i, 1)
+ test_3 (_mm512_maskz_shldi_epi16, __m512i, __mmask32, __m512i, __m512i, 1)
+ test_3 (_mm512_maskz_shldi_epi32, __m512i, __mmask16, __m512i, __m512i, 1)
+ test_3 (_mm512_maskz_shldi_epi64, __m512i, __mmask8, __m512i, __m512i, 1)
+ test_3 (_mm256_maskz_shldi_epi16, __m256i, __mmask16, __m256i, __m256i, 1)
+ test_3 (_mm256_maskz_shldi_epi32, __m256i, __mmask8, __m256i, __m256i, 1)
+ test_3 (_mm256_maskz_shldi_epi64, __m256i, __mmask8, __m256i, __m256i, 1)
+ test_3 (_mm_maskz_shldi_epi16, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_3 (_mm_maskz_shldi_epi32, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_3 (_mm_maskz_shldi_epi64, __m128i, __mmask8, __m128i, __m128i, 1)
  test_3v (_mm512_i32scatter_epi32, void *, __m512i, __m512i, 1)
  test_3v (_mm512_i32scatter_epi64, void *, __m256i, __m512i, 1)
  test_3v (_mm512_i32scatter_pd, void *, __m256i, __m512d, 1)
*************** test_4 (_mm512_maskz_fnmsub_round_pd, __
*** 534,539 ****
--- 570,593 ----
  test_4 (_mm512_maskz_fnmsub_round_ps, __m512, __mmask16, __m512, __m512, __m512, 9)
  test_4 (_mm512_maskz_ternarylogic_epi32, __m512i, __mmask16, __m512i, __m512i, __m512i, 1)
  test_4 (_mm512_maskz_ternarylogic_epi64, __m512i, __mmask8, __m512i, __m512i, __m512i, 1)
+ test_4 (_mm512_mask_shrdi_epi16, __m512i, __m512i, __mmask32, __m512i, __m512i, 1)
+ test_4 (_mm512_mask_shrdi_epi32, __m512i, __m512i, __mmask16, __m512i, __m512i, 1)
+ test_4 (_mm512_mask_shrdi_epi64, __m512i, __m512i, __mmask8, __m512i, __m512i, 1)
+ test_4 (_mm256_mask_shrdi_epi16, __m256i, __m256i, __mmask16, __m256i, __m256i, 1)
+ test_4 (_mm256_mask_shrdi_epi32, __m256i, __m256i, __mmask8, __m256i, __m256i, 1)
+ test_4 (_mm256_mask_shrdi_epi64, __m256i, __m256i, __mmask8, __m256i, __m256i, 1)
+ test_4 (_mm_mask_shrdi_epi16, __m128i, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_4 (_mm_mask_shrdi_epi32, __m128i, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_4 (_mm_mask_shrdi_epi64, __m128i, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_4 (_mm512_mask_shldi_epi16, __m512i, __m512i, __mmask32, __m512i, __m512i, 1)
+ test_4 (_mm512_mask_shldi_epi32, __m512i, __m512i, __mmask16, __m512i, __m512i, 1)
+ test_4 (_mm512_mask_shldi_epi64, __m512i, __m512i, __mmask8, __m512i, __m512i, 1)
+ test_4 (_mm256_mask_shldi_epi16, __m256i, __m256i, __mmask16, __m256i, __m256i, 1)
+ test_4 (_mm256_mask_shldi_epi32, __m256i, __m256i, __mmask8, __m256i, __m256i, 1)
+ test_4 (_mm256_mask_shldi_epi64, __m256i, __m256i, __mmask8, __m256i, __m256i, 1)
+ test_4 (_mm_mask_shldi_epi16, __m128i, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_4 (_mm_mask_shldi_epi32, __m128i, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_4 (_mm_mask_shldi_epi64, __m128i, __m128i, __mmask8, __m128i, __m128i, 1)
  test_4v (_mm512_mask_i32scatter_epi32, void *, __mmask16, __m512i, __m512i, 1)
  test_4v (_mm512_mask_i32scatter_epi64, void *, __mmask8, __m256i, __m512i, 1)
  test_4v (_mm512_mask_i32scatter_pd, void *, __mmask8, __m256i, __m512d, 1)
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/sse-22.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/sse-22.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/sse-22.c	Fri Dec 22 12:37:16 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/sse-22.c	Wed Mar  4 08:30:02 2020
***************
*** 101,107 ****
  
  
  #ifndef DIFFERENT_PRAGMAS
! #pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,avx512f,avx512er,avx512cd,avx512pf,sha,prefetchwt1,avx512vl,avx512bw,avx512dq,avx512vbmi,avx512ifma,avx5124fmaps,avx5124vnniw,avx512vpopcntdq,gfni,avx512bitalg")
  #endif
  
  /* Following intrinsics require immediate arguments.  They
--- 101,107 ----
  
  
  #ifndef DIFFERENT_PRAGMAS
! #pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,avx512f,avx512er,avx512cd,avx512pf,sha,prefetchwt1,avx512vl,avx512bw,avx512dq,avx512vbmi,avx512vbmi2,avx512ifma,avx5124fmaps,avx5124vnniw,avx512vpopcntdq,gfni,avx512bitalg")
  #endif
  
  /* Following intrinsics require immediate arguments.  They
*************** test_4 (_mm_cmpestrz, int, __m128i, int,
*** 218,224 ****
  
  /* immintrin.h (AVX/AVX2/RDRND/FSGSBASE/F16C/RTM/AVX512F/SHA) */
  #ifdef DIFFERENT_PRAGMAS
! #pragma GCC target ("avx,avx2,rdrnd,fsgsbase,f16c,rtm,avx512f,avx512er,avx512cd,avx512pf,sha,avx512vl,avx512bw,avx512dq,avx512ifma,avx512vbmi,avx5124fmaps,avx5124vnniw,avx512vpopcntdq,gfni,avx512bitalg")
  #endif
  #include <immintrin.h>
  test_1 (_cvtss_sh, unsigned short, float, 1)
--- 218,224 ----
  
  /* immintrin.h (AVX/AVX2/RDRND/FSGSBASE/F16C/RTM/AVX512F/SHA) */
  #ifdef DIFFERENT_PRAGMAS
! #pragma GCC target ("avx,avx2,rdrnd,fsgsbase,f16c,rtm,avx512f,avx512er,avx512cd,avx512pf,sha,avx512vl,avx512bw,avx512dq,avx512ifma,avx512vbmi,avx512vbmi2,avx5124fmaps,avx5124vnniw,avx512vpopcntdq,gfni,avx512bitalg")
  #endif
  #include <immintrin.h>
  test_1 (_cvtss_sh, unsigned short, float, 1)
*************** test_2 (_mm512_sub_round_pd, __m512d, __
*** 437,442 ****
--- 437,460 ----
  test_2 (_mm512_sub_round_ps, __m512, __m512, __m512, 9)
  test_2 (_mm_cmp_sd_mask, __mmask8, __m128d, __m128d, 1)
  test_2 (_mm_cmp_ss_mask, __mmask8, __m128, __m128, 1)
+ test_2 (_mm512_shrdi_epi16, __m512i, __m512i, __m512i, 1)
+ test_2 (_mm512_shrdi_epi32, __m512i, __m512i, __m512i, 1)
+ test_2 (_mm512_shrdi_epi64, __m512i, __m512i, __m512i, 1)
+ test_2 (_mm256_shrdi_epi16, __m256i, __m256i, __m256i, 1)
+ test_2 (_mm256_shrdi_epi32, __m256i, __m256i, __m256i, 1)
+ test_2 (_mm256_shrdi_epi64, __m256i, __m256i, __m256i, 1)
+ test_2 (_mm_shrdi_epi16, __m128i, __m128i, __m128i, 1)
+ test_2 (_mm_shrdi_epi32, __m128i, __m128i, __m128i, 1)
+ test_2 (_mm_shrdi_epi64, __m128i, __m128i, __m128i, 1)
+ test_2 (_mm512_shldi_epi16, __m512i, __m512i, __m512i, 1)
+ test_2 (_mm512_shldi_epi32, __m512i, __m512i, __m512i, 1)
+ test_2 (_mm512_shldi_epi64, __m512i, __m512i, __m512i, 1)
+ test_2 (_mm256_shldi_epi16, __m256i, __m256i, __m256i, 1)
+ test_2 (_mm256_shldi_epi32, __m256i, __m256i, __m256i, 1)
+ test_2 (_mm256_shldi_epi64, __m256i, __m256i, __m256i, 1)
+ test_2 (_mm_shldi_epi16, __m128i, __m128i, __m128i, 1)
+ test_2 (_mm_shldi_epi32, __m128i, __m128i, __m128i, 1)
+ test_2 (_mm_shldi_epi64, __m128i, __m128i, __m128i, 1)
  #ifdef __x86_64__
  test_2 (_mm_cvt_roundi64_sd, __m128d, __m128d, long long, 9)
  test_2 (_mm_cvt_roundi64_ss, __m128, __m128, long long, 9)
*************** test_3 (_mm512_ternarylogic_epi32, __m51
*** 543,548 ****
--- 561,584 ----
  test_3 (_mm512_ternarylogic_epi64, __m512i, __m512i, __m512i, __m512i, 1)
  test_3 (_mm_mask_cmp_sd_mask, __mmask8, __mmask8, __m128d, __m128d, 1)
  test_3 (_mm_mask_cmp_ss_mask, __mmask8, __mmask8, __m128, __m128, 1)
+ test_3 (_mm512_maskz_shrdi_epi16, __m512i, __mmask32, __m512i, __m512i, 1)
+ test_3 (_mm512_maskz_shrdi_epi32, __m512i, __mmask16, __m512i, __m512i, 1)
+ test_3 (_mm512_maskz_shrdi_epi64, __m512i, __mmask8, __m512i, __m512i, 1)
+ test_3 (_mm256_maskz_shrdi_epi16, __m256i, __mmask16, __m256i, __m256i, 1)
+ test_3 (_mm256_maskz_shrdi_epi32, __m256i, __mmask8, __m256i, __m256i, 1)
+ test_3 (_mm256_maskz_shrdi_epi64, __m256i, __mmask8, __m256i, __m256i, 1)
+ test_3 (_mm_maskz_shrdi_epi16, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_3 (_mm_maskz_shrdi_epi32, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_3 (_mm_maskz_shrdi_epi64, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_3 (_mm512_maskz_shldi_epi16, __m512i, __mmask32, __m512i, __m512i, 1)
+ test_3 (_mm512_maskz_shldi_epi32, __m512i, __mmask16, __m512i, __m512i, 1)
+ test_3 (_mm512_maskz_shldi_epi64, __m512i, __mmask8, __m512i, __m512i, 1)
+ test_3 (_mm256_maskz_shldi_epi16, __m256i, __mmask16, __m256i, __m256i, 1)
+ test_3 (_mm256_maskz_shldi_epi32, __m256i, __mmask8, __m256i, __m256i, 1)
+ test_3 (_mm256_maskz_shldi_epi64, __m256i, __mmask8, __m256i, __m256i, 1)
+ test_3 (_mm_maskz_shldi_epi16, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_3 (_mm_maskz_shldi_epi32, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_3 (_mm_maskz_shldi_epi64, __m128i, __mmask8, __m128i, __m128i, 1)
  test_3v (_mm512_i32scatter_epi32, void *, __m512i, __m512i, 1)
  test_3v (_mm512_i32scatter_epi64, void *, __m256i, __m512i, 1)
  test_3v (_mm512_i32scatter_pd, void *, __m256i, __m512d, 1)
*************** test_4 (_mm512_maskz_fnmsub_round_pd, __
*** 633,638 ****
--- 669,692 ----
  test_4 (_mm512_maskz_fnmsub_round_ps, __m512, __mmask16, __m512, __m512, __m512, 9)
  test_4 (_mm512_maskz_ternarylogic_epi32, __m512i, __mmask16, __m512i, __m512i, __m512i, 1)
  test_4 (_mm512_maskz_ternarylogic_epi64, __m512i, __mmask8, __m512i, __m512i, __m512i, 1)
+ test_4 (_mm512_mask_shrdi_epi16, __m512i, __m512i, __mmask32, __m512i, __m512i, 1)
+ test_4 (_mm512_mask_shrdi_epi32, __m512i, __m512i, __mmask16, __m512i, __m512i, 1)
+ test_4 (_mm512_mask_shrdi_epi64, __m512i, __m512i, __mmask8, __m512i, __m512i, 1)
+ test_4 (_mm256_mask_shrdi_epi16, __m256i, __m256i, __mmask16, __m256i, __m256i, 1)
+ test_4 (_mm256_mask_shrdi_epi32, __m256i, __m256i, __mmask8, __m256i, __m256i, 1)
+ test_4 (_mm256_mask_shrdi_epi64, __m256i, __m256i, __mmask8, __m256i, __m256i, 1)
+ test_4 (_mm_mask_shrdi_epi16, __m128i, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_4 (_mm_mask_shrdi_epi32, __m128i, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_4 (_mm_mask_shrdi_epi64, __m128i, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_4 (_mm512_mask_shldi_epi16, __m512i, __m512i, __mmask32, __m512i, __m512i, 1)
+ test_4 (_mm512_mask_shldi_epi32, __m512i, __m512i, __mmask16, __m512i, __m512i, 1)
+ test_4 (_mm512_mask_shldi_epi64, __m512i, __m512i, __mmask8, __m512i, __m512i, 1)
+ test_4 (_mm256_mask_shldi_epi16, __m256i, __m256i, __mmask16, __m256i, __m256i, 1)
+ test_4 (_mm256_mask_shldi_epi32, __m256i, __m256i, __mmask8, __m256i, __m256i, 1)
+ test_4 (_mm256_mask_shldi_epi64, __m256i, __m256i, __mmask8, __m256i, __m256i, 1)
+ test_4 (_mm_mask_shldi_epi16, __m128i, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_4 (_mm_mask_shldi_epi32, __m128i, __m128i, __mmask8, __m128i, __m128i, 1)
+ test_4 (_mm_mask_shldi_epi64, __m128i, __m128i, __mmask8, __m128i, __m128i, 1)
  test_4v (_mm512_mask_i32scatter_epi32, void *, __mmask16, __m512i, __m512i, 1)
  test_4v (_mm512_mask_i32scatter_epi64, void *, __mmask8, __m256i, __m512i, 1)
  test_4v (_mm512_mask_i32scatter_pd, void *, __mmask8, __m256i, __m512d, 1)
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/stack-prot-sym.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/stack-prot-sym.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/stack-prot-sym.c	Thu Aug 10 20:59:10 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/stack-prot-sym.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile } */
+ /* { dg-require-effective-target tls_native } */
  /* { dg-options "-O2 -fstack-protector-all -mstack-protector-guard=tls -mstack-protector-guard-reg=gs -mstack-protector-guard-symbol=my_guard" } */
  
  void f(void) { }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/wbinvd-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/wbinvd-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/wbinvd-1.c	Mon Mar  5 14:37:54 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/wbinvd-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2" } */
! /* { dg-final { scan-assembler-times "wbinvd" 2 } } */
  
  #include "immintrin.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O2" } */
! /* { dg-final { scan-assembler-times {\twbinvd} 1 } } */
  
  #include "immintrin.h"
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/i386/wbnoinvd-1.c gcc-8.4.0/gcc/testsuite/gcc.target/i386/wbnoinvd-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/i386/wbnoinvd-1.c	Mon Mar  5 14:37:54 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/i386/wbnoinvd-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mwbnoinvd" } */
! /* { dg-final { scan-assembler-times "wbnoinvd" 2 } } */
  
  #include "x86intrin.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -mwbnoinvd" } */
! /* { dg-final { scan-assembler-times {\twbnoinvd} 1 } } */
  
  #include "x86intrin.h"
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr1.c gcc-8.4.0/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mabicalls -fpic -mno-mips16 -mno-micromips" } */
+ /* { dg-skip-if "needs codesize optimization" { *-*-* } { "-O0" "-O1" "-O2" "-O3" } { "" } } */
+ 
+ extern void foo (void*);
+ 
+ extern void bar (void*);
+ 
+ void
+ test (void* p)
+ {
+    if (!p)
+ 	foo(p);
+    else
+ 	bar(p);
+ }
+ 
+ /* { dg-final { scan-assembler-not "\\\.reloc\t1f,R_MIPS_JALR,foo" } } */
+ /* { dg-final { scan-assembler-not "\\\.reloc\t1f,R_MIPS_JALR,bar" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c gcc-8.4.0/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mabicalls -fpic -mno-mips16 -mno-micromips" } */
+ /* { dg-additional-options "-fno-inline -fipa-ra -mcompact-branches=never" } */
+ /* { dg-skip-if "needs codesize optimization" { *-*-* } { "-O0" "-O1" "-O2" "-O3" } { "" } } */
+ 
+ static int foo (void* p) { __asm__ (""::"r"(p):"$t0"); return 0; }
+ 
+ static int bar (void* p) { return 1; }
+ 
+ int
+ test (void* p)
+ {
+   int res = !p ? foo(p) : bar(p);
+ 
+   register int tmp __asm__("$t0") = -1;
+   __asm__ (""::"r"(tmp));
+ 
+   return res;
+ }
+ 
+ /* { dg-final { scan-assembler "\\\.reloc\t1f,R_MIPS_JALR,foo" } } */
+ /* { dg-final { scan-assembler "\\\.reloc\t1f,R_MIPS_JALR,bar" } } */
+ /* { dg-final { scan-assembler-not "\\.set\tnomacro\n\tjalr\t\\\$25" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c gcc-8.4.0/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mabicalls -fpic -mno-mips16 -mno-micromips" } */
+ /* { dg-additional-options "-fno-inline -fipa-ra -mcompact-branches=never" } */
+ /* { dg-skip-if "needs codesize optimization" { *-*-* } { "-O0" "-O1" "-O2" "-O3" } { "" } } */
+ 
+ static int foo (void* p) { return 0; }
+ 
+ static int bar (void* p) { return 1; }
+ 
+ int
+ test (void* p)
+ {
+   int res = !p ? foo(p) : bar(p);
+ 
+   register int tmp __asm__("$t0") = -1;
+   __asm__ (""::"r"(tmp));
+ 
+   return res;
+ }
+ 
+ /* { dg-final { scan-assembler-not "\\\.reloc\t1f,R_MIPS_JALR,foo" } } */
+ /* { dg-final { scan-assembler-not "\\\.reloc\t1f,R_MIPS_JALR,bar" } } */
+ /* { dg-final { scan-assembler "\\.set\tnomacro\n\tjalr\t\\\$25" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/mips/dwarfregtable-1.c gcc-8.4.0/gcc/testsuite/gcc.target/mips/dwarfregtable-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/mips/dwarfregtable-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/mips/dwarfregtable-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,5 ----
+ /* Check if content of dwarf reg size table matches the expected.  */
+ /* { dg-do run } */
+ /* { dg-options "-mabi=32 -mfp32" } */
+ 
+ #include "dwarfregtable.h"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/mips/dwarfregtable-2.c gcc-8.4.0/gcc/testsuite/gcc.target/mips/dwarfregtable-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/mips/dwarfregtable-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/mips/dwarfregtable-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,5 ----
+ /* Check if content of dwarf reg size table matches the expected.  */
+ /* { dg-do run } */
+ /* { dg-options "-mabi=32 -mfpxx" } */
+ 
+ #include "dwarfregtable.h"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/mips/dwarfregtable-3.c gcc-8.4.0/gcc/testsuite/gcc.target/mips/dwarfregtable-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/mips/dwarfregtable-3.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/mips/dwarfregtable-3.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,5 ----
+ /* Check if content of dwarf reg size table matches the expected.  */
+ /* { dg-do run } */
+ /* { dg-options "-mabi=32 -mfp64" } */
+ 
+ #include "dwarfregtable.h"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/mips/dwarfregtable-4.c gcc-8.4.0/gcc/testsuite/gcc.target/mips/dwarfregtable-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/mips/dwarfregtable-4.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/mips/dwarfregtable-4.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,5 ----
+ /* Check if content of dwarf reg size table matches the expected.  */
+ /* { dg-do run } */
+ /* { dg-options "-mabi=32 -mfp64 -modd-spreg" } */
+ 
+ #include "dwarfregtable.h"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/mips/dwarfregtable.h gcc-8.4.0/gcc/testsuite/gcc.target/mips/dwarfregtable.h
*** gcc-8.3.0/gcc/testsuite/gcc.target/mips/dwarfregtable.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/mips/dwarfregtable.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,22 ----
+ 
+ typedef unsigned Unwind_Word __attribute__((__mode__(__unwind_word__)));
+ 
+ #define DWARF_FRAME_REGISTERS 188
+ 
+ static unsigned char ref_dwarf_reg_size_table[DWARF_FRAME_REGISTERS + 1] =
+   {
+     [0 ... 66] =  sizeof (Unwind_Word),
+     [80 ... 181] = sizeof (Unwind_Word)
+   };
+ 
+ static unsigned char dwarf_reg_size_table[DWARF_FRAME_REGISTERS + 1] = {};
+ 
+ int
+ main (void)
+ {
+   __builtin_init_dwarf_reg_size_table (dwarf_reg_size_table);
+   if (__builtin_memcmp (ref_dwarf_reg_size_table,
+                        dwarf_reg_size_table, DWARF_FRAME_REGISTERS + 1) != 0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/mips/get-fcsr-3.c gcc-8.4.0/gcc/testsuite/gcc.target/mips/get-fcsr-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/mips/get-fcsr-3.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/mips/get-fcsr-3.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-options "-mabi=64 -mhard-float" } */
+ 
+ NOMIPS16 unsigned int
+ foo (void)
+ {
+   return __builtin_mips_get_fcsr () & 0x1;
+ }
+ 
+ /* { dg-final { scan-assembler "cfc1" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/mips/msa-fmadd-n64.c gcc-8.4.0/gcc/testsuite/gcc.target/mips/msa-fmadd-n64.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/mips/msa-fmadd-n64.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/mips/msa-fmadd-n64.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,101 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mabi=64 -mfp64 -mhard-float -mmsa -EL -flax-vector-conversions" } */
+ /* { dg-skip-if "uses global registers" { *-*-* } { "-O0" } { "" } } */
+ 
+ typedef int v4i32 __attribute__ ((vector_size(16)));
+ typedef float v4f32 __attribute__ ((vector_size(16)));
+ typedef double v2f64 __attribute__ ((vector_size(16)));
+ 
+ /* Test that MSA FMADD-like intrinsics do not use first operand for multiplication.  */
+ 
+ register v4i32 a __asm__("$f24");
+ register v4i32 b __asm__("$f25");
+ register v4f32 c __asm__("$f26");
+ register v4f32 d __asm__("$f27");
+ register v2f64 e __asm__("$f28");
+ register v2f64 f __asm__("$f29");
+ 
+ void
+ maddv_b_msa (void)
+ {
+   a = __builtin_msa_maddv_b (a, b, b);
+ }
+ /* { dg-final { scan-assembler "maddv\\\.b\t\\\$w24,\\\$w25,\\\$w25" } }  */
+ 
+ void
+ maddv_h_msa (void)
+ {
+   a = __builtin_msa_maddv_h (a, b, b);
+ }
+ /* { dg-final { scan-assembler "maddv\\\.h\t\\\$w24,\\\$w25,\\\$w25" } }  */
+ 
+ void
+ maddv_w_msa (void)
+ {
+   a = __builtin_msa_maddv_w (a, b, b);
+ }
+ /* { dg-final { scan-assembler "maddv\\\.w\t\\\$w24,\\\$w25,\\\$w25" } }  */
+ 
+ void
+ maddv_d_msa (void)
+ {
+   a = __builtin_msa_maddv_d (a, b, b);
+ }
+ /* { dg-final { scan-assembler "maddv\\\.d\t\\\$w24,\\\$w25,\\\$w25" } }  */
+ 
+ void
+ msubv_b_msa (void)
+ {
+   a = __builtin_msa_msubv_b (a, b, b);
+ }
+ /* { dg-final { scan-assembler "msubv\\\.b\t\\\$w24,\\\$w25,\\\$w25" } }  */
+ 
+ void
+ msubv_h_msa (void)
+ {
+   a = __builtin_msa_msubv_h (a, b, b);
+ }
+ /* { dg-final { scan-assembler "msubv\\\.h\t\\\$w24,\\\$w25,\\\$w25" } }  */
+ 
+ void
+ msubv_w_msa (void)
+ {
+   a = __builtin_msa_msubv_w (a, b, b);
+ }
+ /* { dg-final { scan-assembler "msubv\\\.w\t\\\$w24,\\\$w25,\\\$w25" } }  */
+ 
+ void
+ msubv_d_msa (void)
+ {
+   a = __builtin_msa_msubv_d (a, b, b);
+ }
+ /* { dg-final { scan-assembler "msubv\\\.d\t\\\$w24,\\\$w25,\\\$w25" } }  */
+ 
+ void
+ fmadd_w_msa (void)
+ {
+   c = __builtin_msa_fmadd_w (c, d, d);
+ }
+ /* { dg-final { scan-assembler "fmadd\\\.w\t\\\$w26,\\\$w27,\\\$w27" } }  */
+ 
+ void
+ fmadd_d_msa (void)
+ {
+   e = __builtin_msa_fmadd_d (e, f, f);
+ }
+ /* { dg-final { scan-assembler "fmadd\\\.d\t\\\$w28,\\\$w29,\\\$w29" } }  */
+ 
+ void
+ fmsub_w_msa (void)
+ {
+   c = __builtin_msa_fmsub_w (c, d, d);
+ }
+ /* { dg-final { scan-assembler "fmsub\\\.w\t\\\$w26,\\\$w27,\\\$w27" } }  */
+ 
+ void
+ fmsub_d_msa (void)
+ {
+   e = __builtin_msa_fmsub_d (e, f, f);
+ }
+ /* { dg-final { scan-assembler "fmsub\\\.d\t\\\$w28,\\\$w29,\\\$w29" } }  */
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/mips/msa-fmadd-o32.c gcc-8.4.0/gcc/testsuite/gcc.target/mips/msa-fmadd-o32.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/mips/msa-fmadd-o32.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/mips/msa-fmadd-o32.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,101 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mabi=32 -mfp64 -mhard-float -mmsa -EL -flax-vector-conversions" } */
+ /* { dg-skip-if "uses global registers" { *-*-* } { "-O0" } { "" } } */
+ 
+ typedef int v4i32 __attribute__ ((vector_size(16)));
+ typedef float v4f32 __attribute__ ((vector_size(16)));
+ typedef double v2f64 __attribute__ ((vector_size(16)));
+ 
+ /* Test that MSA FMADD-like intrinsics do not use first operand for multiplication.  */
+ 
+ register v4i32 a __asm__("$f20");
+ register v4i32 b __asm__("$f22");
+ register v4f32 c __asm__("$f24");
+ register v4f32 d __asm__("$f26");
+ register v2f64 e __asm__("$f28");
+ register v2f64 f __asm__("$f30");
+ 
+ void
+ maddv_b_msa (void)
+ {
+   a = __builtin_msa_maddv_b (a, b, b);
+ }
+ /* { dg-final { scan-assembler "maddv\\\.b\t\\\$w20,\\\$w22,\\\$w22" } }  */
+ 
+ void
+ maddv_h_msa (void)
+ {
+   a = __builtin_msa_maddv_h (a, b, b);
+ }
+ /* { dg-final { scan-assembler "maddv\\\.h\t\\\$w20,\\\$w22,\\\$w22" } }  */
+ 
+ void
+ maddv_w_msa (void)
+ {
+   a = __builtin_msa_maddv_w (a, b, b);
+ }
+ /* { dg-final { scan-assembler "maddv\\\.w\t\\\$w20,\\\$w22,\\\$w22" } }  */
+ 
+ void
+ maddv_d_msa (void)
+ {
+   a = __builtin_msa_maddv_d (a, b, b);
+ }
+ /* { dg-final { scan-assembler "maddv\\\.d\t\\\$w20,\\\$w22,\\\$w22" } }  */
+ 
+ void
+ msubv_b_msa (void)
+ {
+   a = __builtin_msa_msubv_b (a, b, b);
+ }
+ /* { dg-final { scan-assembler "msubv\\\.b\t\\\$w20,\\\$w22,\\\$w22" } }  */
+ 
+ void
+ msubv_h_msa (void)
+ {
+   a = __builtin_msa_msubv_h (a, b, b);
+ }
+ /* { dg-final { scan-assembler "msubv\\\.h\t\\\$w20,\\\$w22,\\\$w22" } }  */
+ 
+ void
+ msubv_w_msa (void)
+ {
+   a = __builtin_msa_msubv_w (a, b, b);
+ }
+ /* { dg-final { scan-assembler "msubv\\\.w\t\\\$w20,\\\$w22,\\\$w22" } }  */
+ 
+ void
+ msubv_d_msa (void)
+ {
+   a = __builtin_msa_msubv_d (a, b, b);
+ }
+ /* { dg-final { scan-assembler "msubv\\\.d\t\\\$w20,\\\$w22,\\\$w22" } }  */
+ 
+ void
+ fmadd_w_msa (void)
+ {
+   c = __builtin_msa_fmadd_w (c, d, d);
+ }
+ /* { dg-final { scan-assembler "fmadd\\\.w\t\\\$w24,\\\$w26,\\\$w26" } }  */
+ 
+ void
+ fmadd_d_msa (void)
+ {
+   e = __builtin_msa_fmadd_d (e, f, f);
+ }
+ /* { dg-final { scan-assembler "fmadd\\\.d\t\\\$w28,\\\$w30,\\\$w30" } }  */
+ 
+ void
+ fmsub_w_msa (void)
+ {
+   c = __builtin_msa_fmsub_w (c, d, d);
+ }
+ /* { dg-final { scan-assembler "fmsub\\\.w\t\\\$w24,\\\$w26,\\\$w26" } }  */
+ 
+ void
+ fmsub_d_msa (void)
+ {
+   e = __builtin_msa_fmsub_d (e, f, f);
+ }
+ /* { dg-final { scan-assembler "fmsub\\\.d\t\\\$w28,\\\$w30,\\\$w30" } }  */
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp	Wed Mar  4 08:30:02 2020
***************
*** 16,24 ****
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
  
! # Exit immediately if this isn't a PowerPC target or if the target is aix.
  if { (![istarget powerpc*-*-*] && ![istarget rs6000-*-*])
!      || [istarget "powerpc*-*-aix*"] } then {
    return
  }
  
--- 16,26 ----
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
  
! # Exit immediately if this isn't a PowerPC target or if the target is
! # aix or Darwin.
  if { (![istarget powerpc*-*-*] && ![istarget rs6000-*-*])
!      || [istarget "powerpc*-*-aix*"]
!      || [istarget "powerpc*-*-darwin*"]  } then {
    return
  }
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/bmi2-bzhi64-1a.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/bmi2-bzhi64-1a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/bmi2-bzhi64-1a.c	Thu May 18 14:01:11 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/bmi2-bzhi64-1a.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O3" } */
  /* { dg-require-effective-target lp64 } */
  
  #define NO_WARN_X86_INTRINSICS 1
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O3 -maltivec -mvsx" } */
  /* { dg-require-effective-target lp64 } */
  
  #define NO_WARN_X86_INTRINSICS 1
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/builtins-2.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/builtins-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/builtins-2.c	Mon Dec 11 22:57:08 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/builtins-2.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do run { target { powerpc*-*-* } } } */
  /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
+ /* { dg-require-effective-target vsx_hw } */
  /* { dg-options "-mcpu=power8 " } */
  
  #include <altivec.h>
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c	Sat Jun 17 15:32:28 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c	Wed Mar  4 08:30:02 2020
***************
*** 4,40 ****
  /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
  /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic -fno-unroll-loops -fno-unroll-all-loops" } */
  
  typedef vector unsigned long long	crypto_t;
  typedef vector unsigned long long	v2di_t;
  typedef vector unsigned int		v4si_t;
  typedef vector unsigned short		v8hi_t;
  typedef vector unsigned char		v16qi_t;
  
! crypto_t crpyto1 (crypto_t a)
  {
    return __builtin_crypto_vsbox (a);
  }
  
  crypto_t crypto2 (crypto_t a, crypto_t b)
  {
    return __builtin_crypto_vcipher (a, b);
  }
  
  crypto_t crypto3 (crypto_t a, crypto_t b)
  {
    return __builtin_crypto_vcipherlast (a, b);
  }
  
  crypto_t crypto4 (crypto_t a, crypto_t b)
  {
    return __builtin_crypto_vncipher (a, b);
  }
  
  crypto_t crypto5 (crypto_t a, crypto_t b)
  {
    return __builtin_crypto_vncipherlast (a, b);
  }
  
  v16qi_t crypto6a (v16qi_t a, v16qi_t b, v16qi_t c)
  {
    return __builtin_crypto_vpermxor (a, b, c);
--- 4,66 ----
  /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
  /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic -fno-unroll-loops -fno-unroll-all-loops" } */
  
+ #include <altivec.h>
  typedef vector unsigned long long	crypto_t;
  typedef vector unsigned long long	v2di_t;
  typedef vector unsigned int		v4si_t;
  typedef vector unsigned short		v8hi_t;
  typedef vector unsigned char		v16qi_t;
  
! crypto_t crypto1 (crypto_t a)
  {
    return __builtin_crypto_vsbox (a);
  }
  
+ v16qi_t crypto1_be (v16qi_t a)
+ {
+   return vec_sbox_be (a);
+ }
+ 
  crypto_t crypto2 (crypto_t a, crypto_t b)
  {
    return __builtin_crypto_vcipher (a, b);
  }
  
+ v16qi_t crypto2_be (v16qi_t a, v16qi_t b)
+ {
+   return vec_cipher_be (a, b);
+ }
+ 
  crypto_t crypto3 (crypto_t a, crypto_t b)
  {
    return __builtin_crypto_vcipherlast (a, b);
  }
  
+ v16qi_t crypto3_be (v16qi_t a, v16qi_t b)
+ {
+   return vec_cipherlast_be (a, b);
+ }
+ 
  crypto_t crypto4 (crypto_t a, crypto_t b)
  {
    return __builtin_crypto_vncipher (a, b);
  }
  
+ v16qi_t crypto4_be (v16qi_t a, v16qi_t b)
+ {
+   return vec_ncipher_be (a, b);
+ }
+ 
  crypto_t crypto5 (crypto_t a, crypto_t b)
  {
    return __builtin_crypto_vncipherlast (a, b);
  }
  
+ v16qi_t crypto5_be (v16qi_t a, v16qi_t b)
+ {
+   return vec_ncipherlast_be (a, b);
+ }
+ 
  v16qi_t crypto6a (v16qi_t a, v16qi_t b, v16qi_t c)
  {
    return __builtin_crypto_vpermxor (a, b, c);
*************** v4si_t crypto8d (v4si_t a)
*** 117,131 ****
  
  /* Note space is used after the instruction so that vcipherlast does not match
     vcipher.  */
! /* { dg-final { scan-assembler-times "vcipher "      1 } } */
! /* { dg-final { scan-assembler-times "vcipherlast "  1 } } */
! /* { dg-final { scan-assembler-times "vncipher "     1 } } */
! /* { dg-final { scan-assembler-times "vncipherlast " 1 } } */
  /* { dg-final { scan-assembler-times "vpermxor "     4 } } */
  /* { dg-final { scan-assembler-times "vpmsumb "      2 } } */
  /* { dg-final { scan-assembler-times "vpmsumd "      2 } } */
  /* { dg-final { scan-assembler-times "vpmsumh "      2 } } */
  /* { dg-final { scan-assembler-times "vpmsumw "      2 } } */
! /* { dg-final { scan-assembler-times "vsbox "        1 } } */
  /* { dg-final { scan-assembler-times "vshasigmad "   2 } } */
  /* { dg-final { scan-assembler-times "vshasigmaw "   2 } } */
--- 143,157 ----
  
  /* Note space is used after the instruction so that vcipherlast does not match
     vcipher.  */
! /* { dg-final { scan-assembler-times "vcipher "      2 } } */
! /* { dg-final { scan-assembler-times "vcipherlast "  2 } } */
! /* { dg-final { scan-assembler-times "vncipher "     2 } } */
! /* { dg-final { scan-assembler-times "vncipherlast " 2 } } */
  /* { dg-final { scan-assembler-times "vpermxor "     4 } } */
  /* { dg-final { scan-assembler-times "vpmsumb "      2 } } */
  /* { dg-final { scan-assembler-times "vpmsumd "      2 } } */
  /* { dg-final { scan-assembler-times "vpmsumh "      2 } } */
  /* { dg-final { scan-assembler-times "vpmsumw "      2 } } */
! /* { dg-final { scan-assembler-times "vsbox "        2 } } */
  /* { dg-final { scan-assembler-times "vshasigmad "   2 } } */
  /* { dg-final { scan-assembler-times "vshasigmaw "   2 } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/darn-3.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/darn-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/darn-3.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/darn-3.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile { target { powerpc*-*-* } } } */
+ /* { dg-skip-if "" { powerpc*-*-aix* } } */
+ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
+ /* { dg-options "-O2 -mcpu=power9" } */
+ 
+ static int darn32(void) { return __builtin_darn_32(); }
+ 
+ int four(void)
+ {
+ 	int sum = 0;
+ 	int i;
+ 	for (i = 0; i < 4; i++)
+ 		sum += darn32();
+ 	return sum;
+ }
+ 
+ /* { dg-final { scan-assembler-times {(?n)\mdarn .*,0\M} 4 } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c	Tue Nov 24 19:09:26 2009
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,6 ****
--- 1,8 ----
  /* Check that sizeof(bool) is 4 if we don't use special options. */
  /* Matt Austern  <austern@apple.com> */
  /* { dg-do run { target { powerpc*-*-darwin* && ilp32 } } } */
+ /* We do need to suppress the ISO C doesn't support _Bool message tho.  */
+ /* { dg-options "-Wno-pedantic" } */
  
  int dummy1[sizeof(_Bool) - 3];
  int dummy2[5 - sizeof(_Bool)];
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp	Wed Mar  4 08:30:02 2020
***************
*** 16,23 ****
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
  
! # Exit immediately if this isn't a PowerPC target.
! if { ![istarget powerpc*-*-*] && ![istarget rs6000-*-*] } then {
    return
  }
  
--- 16,26 ----
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
  
! # Exit immediately if this isn't a PowerPC target, also exit if we
! # are on Darwin which doesn't support decimal float.
! if { (![istarget powerpc*-*-*] && ![istarget rs6000-*-*])
!     || [istarget "powerpc*-*-darwin*"]
! } then {
    return
  }
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/mmx-psubd-2.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/mmx-psubd-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/mmx-psubd-2.c	Fri Jul 21 17:44:22 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/mmx-psubd-2.c	Wed Mar  4 08:30:02 2020
*************** test (__m64 s1, __m64 s2)
*** 23,42 ****
    return _mm_sub_pi32 (s1, s2);
  }
  
  static void
  TEST (void)
  {
    __m64_union u, s1, s2;
!   __m64_union e;
    int i;
     
    s1.as_m64 = _mm_setr_pi32 (30, 90);
    s2.as_m64 = _mm_setr_pi32 (76, -100);
    u.as_m64 = test (s1.as_m64, s2.as_m64);
!    
    for (i = 0; i < 2; i++)
       e.as_int[i] = s1.as_int[i] - s2.as_int[i];
  
!   if (u.as_m64 != e.as_m64)
      abort ();
  }
--- 23,50 ----
    return _mm_sub_pi32 (s1, s2);
  }
  
+ static __m64
+ __attribute__((noinline, unused))
+ test_alias (__m64 s1, __m64 s2)
+ {
+   return _m_psubd (s1, s2);
+ }
+ 
  static void
  TEST (void)
  {
    __m64_union u, s1, s2;
!   __m64_union e, v;
    int i;
     
    s1.as_m64 = _mm_setr_pi32 (30, 90);
    s2.as_m64 = _mm_setr_pi32 (76, -100);
    u.as_m64 = test (s1.as_m64, s2.as_m64);
!   v.as_m64 = test_alias (s1.as_m64, s2.as_m64);
! 
    for (i = 0; i < 2; i++)
       e.as_int[i] = s1.as_int[i] - s2.as_int[i];
  
!   if (u.as_m64 != e.as_m64 || u.as_m64 != v.as_m64)
      abort ();
  }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp	Wed Mar  4 08:30:02 2020
*************** proc dg-compile-aux-modules { args } {
*** 36,42 ****
      global gfortran_test_path
      global gfortran_aux_module_flags
      if { [llength $args] != 2 } {
! 	error "dg-set-target-env-var: needs one argument"
  	return
      }
  
--- 36,42 ----
      global gfortran_test_path
      global gfortran_aux_module_flags
      if { [llength $args] != 2 } {
! 	error "dg-compile-aux-modules: needs one argument"
  	return
      }
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr64205.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr64205.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr64205.c	Sat Jun 17 15:32:28 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr64205.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */
+ /* { dg-require-effective-target dfp } */
  /* { dg-skip-if "" { powerpc*-*-aix* } } */
  /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=G5" } } */
  /* { dg-options "-O2 -mcpu=G5 -maltivec" } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr70010-1.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr70010-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr70010-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr70010-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -flto -mvsx" } */
+ /* { dg-require-effective-target lto } */
+ 
+ vector int c, a, b;
+ 
+ static inline void __attribute__ ((__always_inline__, target ("no-vsx")))
+ foo () /* { dg-error "inlining failed in call to .* target specific option mismatch" } */
+ {
+   c = a + b;
+ }
+ 
+ int
+ main ()
+ {
+   foo (); /* { dg-message "called from here" } */
+   c = a + b;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr70010-3.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr70010-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr70010-3.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr70010-3.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mno-vsx" } */
+ 
+ vector int c, a, b;
+ 
+ static inline void __attribute__ ((__always_inline__, target ("no-vsx")))
+ foo ()
+ {
+   c = a + b;
+ }
+ 
+ int
+ main ()
+ {
+   foo ();
+   c = a + b;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr70010-4.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr70010-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr70010-4.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr70010-4.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mvsx" } */
+ 
+ vector int c, a, b;
+ 
+ static inline void __attribute__ ((__always_inline__, target ("no-vsx")))
+ foo () /* { dg-error "inlining failed in call to .* target specific option mismatch" } */
+ {
+   c = a + b;
+ }
+ 
+ int
+ main ()
+ {
+   foo (); /* { dg-message "called from here" } */
+   c = a + b;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr70010.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr70010.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr70010.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr70010.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -finline-functions -Wno-psabi -mvsx" } */
+ /* { dg-final { scan-assembler {\mbl \.?vadd_no_vsx\M} } } */
+ 
+ 
+ typedef int vec_t __attribute__((vector_size(16)));
+ 
+ static vec_t
+ __attribute__((__target__("no-vsx")))
+ vadd_no_vsx (vec_t a, vec_t b)
+ {
+   return a + b;
+ }
+ 
+ vec_t
+ __attribute__((__target__("vsx")))
+ call_vadd_no_vsx (vec_t x, vec_t y, vec_t z)
+ {
+   return vadd_no_vsx (x, y) - z;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr71785.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr71785.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr71785.c	Mon Nov 21 15:15:21 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr71785.c	Wed Mar  4 08:30:02 2020
***************
*** 1,6 ****
  /* { dg-do compile { target { powerpc*-*-* } } } */
  /* { dg-options "-O2" } */
! /* { dg-final { scan-assembler-not {\mb\M} } } */
  
  /* Check that all computed gotos in this testcase end up unfactored completely.
     If some is not there will be a unconditional jump left; if all works fine,
--- 1,11 ----
  /* { dg-do compile { target { powerpc*-*-* } } } */
  /* { dg-options "-O2" } */
! /* We have to lose the default pic codegen on Darwin.  */
! /* { dg-additional-options "-mdynamic-no-pic" { target powerpc*-*-darwin* } } */
! /* ... and account for the out-of-line GPR restore.  */
! /* { dg-final { scan-assembler-times {\mb[ \t]*restGPR} 1 { target powerpc*-*-darwin* } } } */
! /* { dg-final { scan-assembler-not {\mb[ \t]L} { target powerpc*-*-darwin* } } } */
! /* { dg-final { scan-assembler-not {\mb\M} { target { ! powerpc*-*-darwin* } } } } */
  
  /* Check that all computed gotos in this testcase end up unfactored completely.
     If some is not there will be a unconditional jump left; if all works fine,
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr79909.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr79909.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr79909.c	Mon Aug 14 18:04:31 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr79909.c	Wed Mar  4 08:30:02 2020
***************
*** 1,6 ****
--- 1,7 ----
  /* PR rtl-optimization/79909 */
  /* { dg-do compile } */
  /* { dg-options "-O2 -mxl-compat" } */
+ /* { dg-require-effective-target dfp } */
  /* { dg-skip-if "DFP" { powerpc*-*-aix* } } */
  
  typedef float T __attribute__ ((mode (TD)));
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr80125.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr80125.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr80125.c	Tue Mar 21 14:49:51 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr80125.c	Wed Mar  4 08:30:02 2020
*************** foo ()
*** 16,22 ****
    vector int k = vec_mergel (i, j);
    vector int l = vec_sl (k, c);
    vector int m = vec_sl (l, d);
!   vector char o;
    vector int p = vec_perm (m, n, o);
    e = vec_sra (p, c);
    vec_st (e, 0, a);
--- 16,22 ----
    vector int k = vec_mergel (i, j);
    vector int l = vec_sl (k, c);
    vector int m = vec_sl (l, d);
!   vector unsigned char o;
    vector int p = vec_perm (m, n, o);
    e = vec_sra (p, c);
    vec_st (e, 0, a);
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr87532-mc.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr87532-mc.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr87532-mc.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr87532-mc.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,258 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx -O2" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <stdlib.h>
+ #include <stddef.h>
+ #include <altivec.h>
+ 
+ #include <stdio.h>
+ 
+ static vector unsigned __int128
+ deoptimize_uint128 (vector unsigned __int128  a)
+ {
+   __asm__ (" # %x0" : "+v" (a));
+   return a;
+ }
+ 
+ static vector unsigned long long int
+ deoptimize_ulong (vector unsigned long long int a)
+ {
+   __asm__ (" # %x0" : "+v" (a));
+   return a;
+ }
+ 
+ static vector unsigned int
+ deoptimize_uint (vector unsigned int a)
+ {
+   __asm__ (" # %x0" : "+v" (a));
+   return a;
+ }
+ 
+ static vector unsigned char
+ deoptimize_uchar (vector unsigned char a)
+ {
+   __asm__ (" # %x0" : "+v" (a));
+   return a;
+ }
+ 
+ static vector unsigned short
+ deoptimize_ushort (vector unsigned short a)
+ {
+   __asm__ (" # %x0" : "+v" (a));
+   return a;
+ }
+ 
+ __attribute ((noinline)) unsigned __int128
+ get_auto_n_uint128 (vector unsigned __int128 a, int n)
+ {
+   return __builtin_vec_extract (a, n);
+ }
+ 
+ __attribute ((noinline)) unsigned long long int
+ get_auto_n_ulong (vector unsigned long long int a, int n)
+ {
+   return __builtin_vec_extract (a, n);
+ }
+ 
+ __attribute ((noinline))
+ unsigned int get_auto_n_uint (vector unsigned int a, int n)
+ {
+   return __builtin_vec_extract (a, n);
+ }
+ 
+ __attribute ((noinline))
+ unsigned char get_auto_n_uchar (vector unsigned char a, int n)
+ {
+   return __builtin_vec_extract (a, n);
+ }
+ 
+ __attribute ((noinline))
+ unsigned short get_auto_n_ushort (vector unsigned short a, int n)
+ {
+   return __builtin_vec_extract (a, n);
+ }
+ 
+ 
+ int check_uint128_element (int i, unsigned __int128 entry)
+ {
+   printf ("checking uint128 entry at index %d\n", i);
+ 
+   return (entry == ((((unsigned __int128) 0xffeeddccbbaa9988ULL) << 64)
+ 		    | 0x0706050403020100ULL));
+ }
+ 
+ int check_ulong_element (int i, unsigned long long int entry)
+ {
+   printf ("checking ulong entry 0x%llx at index %d\n", entry, i);
+ 
+   switch (i % 2)
+     {
+       case 0: return (entry == 0x9999901010ULL);
+       case 1: return (entry == 0x7777733333ULL);
+       default:
+ 	return 0;
+     }
+ }
+ 
+ int check_uint_element (int i, unsigned int entry)
+ {
+   printf ("checking uint entry 0x%x at index %d\n", entry, i);
+ 
+   switch (i % 4)
+     {
+     case 0: return (entry == 0x99999);
+     case 1: return (entry == 0x01010);
+     case 2: return (entry == 0x77777);
+     case 3: return (entry == 0x33333);
+     default:
+       return 0;
+     }
+ }
+ 
+ int check_uchar_element (int i, unsigned char entry)
+ {
+   printf ("checking uchar entry 0x%x at index %d\n", entry, i);
+   switch (i % 16)
+     {
+     case 0: return (entry == 0x90);
+     case 1: return (entry == 0x80);
+     case 2: return (entry == 0x70);
+     case 3: return (entry == 0x60);
+     case 4: return (entry == 0x50);
+     case 5: return (entry == 0x40);
+     case 6: return (entry == 0x30);
+     case 7: return (entry == 0x20);
+     case 8: return (entry == 0x10);
+     case 9: return (entry == 0xf0);
+     case 10: return (entry == 0xe0);
+     case 11: return (entry == 0xd0);
+     case 12: return (entry == 0xc0);
+     case 13: return (entry == 0xb0);
+     case 14: return (entry == 0xa0);
+     case 15: return (entry == 0xff);
+     default:
+       return 0;
+     }
+ }
+ 
+ int check_ushort_element (int i, unsigned short entry)
+ {
+   printf ("checking ushort entry 0x%x at index %d\n", entry, i);
+   switch (i % 8)
+     {
+     case 0: return (entry == 0x9988);
+     case 1: return (entry == 0x8877);
+     case 2: return (entry == 0x7766);
+     case 3: return (entry == 0x6655);
+     case 4: return (entry == 0x5544);
+     case 5: return (entry == 0x4433);
+     case 6: return (entry == 0x3322);
+     case 7: return (entry == 0x2211);
+     default:
+       return 0;
+     }
+ }
+ 
+ void do_auto_uint128 ( vector unsigned __int128 a )
+ {
+   int i;
+   unsigned __int128 c;
+   for (i = 0; i < 32; i += 3)
+     {
+       c = get_auto_n_uint128 (a,i);
+       if (!check_uint128_element (i, c)) abort ();
+     }
+  }
+ 
+ void do_auto_ulong ( vector unsigned long long int a )
+ {
+   int i;
+   unsigned long long int c;
+   for (i = 0; i < 32; i += 3)
+     {
+       c = get_auto_n_ulong (a,i);
+       if (!check_ulong_element (i, c)) abort ();
+     }
+  }
+ 
+ void do_auto_uint ( vector unsigned int a )
+ {
+   int i;
+   unsigned int c;
+   for (i = 0; i < 32; i += 3)
+     {
+       c = get_auto_n_uint (a,i);
+       if (!check_uint_element (i, c)) abort ();
+     }
+  }
+ 
+ void do_auto_ushort ( vector unsigned short a )
+ {
+   int i;
+   unsigned short c;
+   for (i = 0; i < 32; i += 3)
+     {
+       c = get_auto_n_ushort (a,i);
+       if (!check_ushort_element (i, c)) abort ();
+     }
+ }
+ 
+ void do_auto_uchar ( vector unsigned char a )
+ {
+   int i;
+   unsigned char c;
+   for (i = 0; i < 32; i += 3)
+     {
+       c = get_auto_n_uchar (a,i);
+       if (!check_uchar_element (i, c)) abort ();
+     }
+ }
+ 
+ int
+ main (void)
+ {
+   size_t i;
+ 
+   vector unsigned __int128 u = {
+     ((((unsigned __int128) 0xffeeddccbbaa9988ULL) << 64)
+      | 0x0706050403020100ULL) };
+   vector unsigned __int128 du;
+ 
+   vector unsigned long long int v = { 0x9999901010ULL, 0x7777733333ULL };
+   vector unsigned long long int dv;
+ 
+   vector unsigned int x = { 0x99999, 0x01010, 0x77777, 0x33333 };
+   vector unsigned int dx;
+ 
+   vector unsigned char y = { 0x90, 0x80, 0x70, 0x60, 0x50, 0x40, 0x30, 0x20,
+ 			     0x10, 0xf0, 0xe0, 0xd0, 0xc0, 0xb0, 0xa0, 0xff };
+   vector unsigned char dy;
+ 
+   vector unsigned short z = { 0x9988, 0x8877, 0x7766, 0x6655,
+ 			      0x5544, 0x4433, 0x3322, 0x2211 };
+   vector unsigned short dz;
+ 
+   do_auto_uint128 (u);
+   do_auto_ulong (v);
+   do_auto_uint (x);
+   do_auto_uchar (y);
+   do_auto_ushort (z);
+ 
+   du = deoptimize_uint128 (u);
+   dv = deoptimize_ulong (v);
+   dx = deoptimize_uint (x);
+   dy = deoptimize_uchar (y);
+   dz = deoptimize_ushort (z);
+ 
+   do_auto_uint128 (du);
+   do_auto_ulong (dv);
+   do_auto_uint (dx);
+   do_auto_uchar (dy);
+   do_auto_ushort (dz);
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr87532.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr87532.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr87532.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr87532.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,72 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <stdlib.h>
+ #include <stddef.h>
+ #include <altivec.h>
+ #include <stdio.h>
+ 
+ static void
+ check (unsigned char, unsigned char) __attribute__((__noinline__));
+ 
+ static __attribute__((altivec(vector__))) unsigned char
+ deoptimize (__attribute__((altivec(vector__))) unsigned char)
+ __attribute__((__noinline__));
+ 
+ static __attribute__((altivec(vector__))) unsigned char
+ deoptimize (__attribute__((altivec(vector__))) unsigned char a)
+ {
+   __asm__ (" # %x0" : "+v" (a));
+   return a;
+ }
+ 
+ // Toggle this attribute inline/noinline to see pass/fail.
+ // fails with the noinline attribute applied.
+ __attribute__ ((__noinline__))
+ unsigned char
+ get_auto_n (__attribute__((altivec(vector__))) unsigned char a, size_t n)
+ {
+   return (unsigned char) __builtin_vec_extract (a, n);
+ }
+ 
+ void
+ do_auto (__attribute__((altivec(vector__))) unsigned char a)
+ {
+   size_t i;
+   for (i = 1; i < 3 ; i++)
+   {
+     do
+       {
+ 	printf ("get_auto_n (a, %d) produces 0x0%x\n",
+ 		i, (int) get_auto_n (a, i));
+ 
+ 	if ((int) get_auto_n (a,i) > 250) abort();
+       } while (0);
+   }
+ }
+ 
+ int
+ main (void)
+ {
+   size_t i;
+   __attribute__((altivec(vector__))) unsigned char x =
+     { 3, 2, 3, 8, 5, 6, 7, 8, 240, 241, 242, 243, 244, 245, 246, 247 };
+   __attribute__((altivec(vector__))) unsigned char a;
+ 
+   printf (" first elements of x are: %d %d %d %d %d\n",
+ 	  x[0], x[1], x[2], x[3], x[4]);
+ 
+   a = deoptimize (x);
+ 
+   printf (" after deoptimization, first elements of a are: %d %d %d %d %d\n",
+ 	  a[0], a[1], a[2], a[3], a[4]);
+ 
+   do_auto (a);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr88100.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr88100.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr88100.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr88100.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,44 ----
+ /* PR88100.  Verify that rs6000 gimple-folding code handles the
+    vec_splat_{su}{8,16,32} invalid data properly. */
+ 
+ /* { dg-do compile } */
+ /* { dg-require-effective-target powerpc_altivec_ok } */
+ /* { dg-options "-maltivec" } */
+ 
+ #include <altivec.h>
+ 
+ vector unsigned char
+ splatu1 (void)
+ {
+   return vec_splat_u8(0x100);/* { dg-error "argument 1 must be a 5-bit signed literal" } */
+ }
+ 
+ vector unsigned short
+ splatu2 (void)
+ {
+   return vec_splat_u16(0x10000);/* { dg-error "argument 1 must be a 5-bit signed literal" } */
+ }
+ 
+ vector unsigned int
+ splatu3 (void)
+ {
+   return vec_splat_u32(0x10000000);/* { dg-error "argument 1 must be a 5-bit signed literal" } */
+ }
+ 
+ vector signed char
+ splats1 (void)
+ {
+   return vec_splat_s8(0x100);/* { dg-error "argument 1 must be a 5-bit signed literal" } */
+ }
+ 
+ vector signed short
+ splats2 (void)
+ {
+   return vec_splat_s16(0x10000);/* { dg-error "argument 1 must be a 5-bit signed literal" } */
+ }
+ 
+ vector signed int
+ splats3 (void)
+ {
+   return vec_splat_s32(0x10000000);/* { dg-error "argument 1 must be a 5-bit signed literal" } */
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr89424-0.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr89424-0.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr89424-0.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr89424-0.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,76 ----
+ /* { dg-do run { target { powerpc*-*-* && lp64 } } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ /* Define PR89626 after that pr is addressed.  */
+ #ifdef PR89626
+ #define SIGNED
+ #else
+ #define SIGNED signed
+ #endif
+ 
+ #define CONST0		(((__int128) 31415926539) << 60)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ __int128 ei (vector SIGNED __int128 v, int i)
+ {
+   return __builtin_vec_ext_v1ti (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __int128 mei (vector SIGNED __int128 *vp, int i)
+ {
+   return __builtin_vec_ext_v1ti (*vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector SIGNED __int128 dv = { CONST0 };
+   __int128 d;
+ 
+   d = ei (dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 1);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 3);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 1);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 3);
+   if (d != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr89765-mc.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr89765-mc.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr89765-mc.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr89765-mc.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,400 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx -O2" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <stdlib.h>
+ #include <stddef.h>
+ #include <altivec.h>
+ 
+ #include <stdio.h>
+ 
+ static vector unsigned __int128
+ deoptimize_uint128 (vector unsigned __int128  a)
+ {
+   __asm__ (" # %x0" : "+v" (a));
+   return a;
+ }
+ 
+ static vector unsigned long long int
+ deoptimize_ulong (vector unsigned long long int a)
+ {
+   __asm__ (" # %x0" : "+v" (a));
+   return a;
+ }
+ 
+ static vector unsigned int
+ deoptimize_uint (vector unsigned int a)
+ {
+   __asm__ (" # %x0" : "+v" (a));
+   return a;
+ }
+ 
+ static vector unsigned char
+ deoptimize_uchar (vector unsigned char a)
+ {
+   __asm__ (" # %x0" : "+v" (a));
+   return a;
+ }
+ 
+ static vector unsigned short
+ deoptimize_ushort (vector unsigned short a)
+ {
+   __asm__ (" # %x0" : "+v" (a));
+   return a;
+ }
+ 
+ __attribute ((noinline))
+ vector unsigned __int128
+ set_auto_n_uint128 (vector unsigned __int128 a, int n, unsigned __int128 x)
+ {
+   return vec_insert (x, a, n);
+ }
+ 
+ __attribute ((noinline))
+ vector unsigned long long int
+ set_auto_n_ulong (vector unsigned long long int a, int n,
+ 		  unsigned long long int x)
+ {
+   return vec_insert (x, a, n);
+ }
+ 
+ __attribute ((noinline))
+ vector unsigned int
+ set_auto_n_uint (vector unsigned int a, int n, unsigned int x)
+ {
+   return vec_insert (x, a, n);
+ }
+ 
+ __attribute ((noinline))
+ vector unsigned char
+ set_auto_n_uchar (vector unsigned char a, int n, unsigned char x)
+ {
+   return vec_insert (x, a, n);
+ }
+ 
+ __attribute ((noinline))
+ vector unsigned short
+ set_auto_n_ushort (vector unsigned short a, int n, unsigned short x)
+ {
+   return vec_insert (x, a, n);
+ }
+ 
+ __attribute ((noinline))
+ unsigned __int128
+ get_auto_n_uint128 (vector unsigned __int128 a, int n)
+ {
+   return vec_extract (a, n);
+ }
+ 
+ __attribute ((noinline))
+ unsigned long long int
+ get_auto_n_ulong (vector unsigned long long int a, int n)
+ {
+   return vec_extract (a, n);
+ }
+ 
+ __attribute ((noinline))
+ unsigned int
+ get_auto_n_uint (vector unsigned int a, int n)
+ {
+   return vec_extract (a, n);
+ }
+ 
+ __attribute ((noinline))
+ unsigned char
+ get_auto_n_uchar (vector unsigned char a, int n)
+ {
+   return vec_extract (a, n);
+ }
+ 
+ __attribute ((noinline))
+ unsigned short
+ get_auto_n_ushort (vector unsigned short a, int n)
+ {
+   return vec_extract (a, n);
+ }
+ 
+ int check_uint128_element (int i, unsigned __int128 entry)
+ {
+   printf ("checking uint128 entry at index %d\n", i);
+ 
+   return (entry == ((((unsigned __int128) 0xffeeddccbbaa9988ULL) << 64)
+ 		    | 0x0706050403020100ULL));
+ }
+ 
+ unsigned __int128 get_uint128_element (int i)
+ {
+   return ((((unsigned __int128) 0xffeeddccbbaa9988ULL) << 64)
+ 	  | 0x0706050403020100ULL);
+ }
+ 
+ int check_ulong_element (int i, unsigned long long int entry)
+ {
+   printf ("checking ulong entry 0x%llx at index %d\n", entry, i);
+ 
+   switch (i % 2)
+     {
+       case 0: return (entry == 0x9999901010ULL);
+       case 1: return (entry == 0x7777733333ULL);
+       default:
+ 	return 0;
+     }
+ }
+ 
+ unsigned long long int get_ulong_element (int i)
+ {
+   switch (i % 2)
+     {
+     case 0: return 0x9999901010ULL;
+     case 1: return 0x7777733333ULL;
+     }
+ }
+ 
+ int check_uint_element (int i, unsigned int entry)
+ {
+   printf ("checking uint entry 0x%x at index %d\n", entry, i);
+ 
+   switch (i % 4)
+     {
+     case 0: return (entry == 0x99999);
+     case 1: return (entry == 0x01010);
+     case 2: return (entry == 0x77777);
+     case 3: return (entry == 0x33333);
+     default:
+       return 0;
+     }
+ }
+ 
+ unsigned int get_uint_element (int i)
+ {
+   switch (i % 4)
+     {
+     case 0: return 0x99999;
+     case 1: return 0x01010;
+     case 2: return 0x77777;
+     case 3: return 0x33333;
+     }
+ }
+ 
+ int check_uchar_element (int i, unsigned char entry)
+ {
+   printf ("checking uchar entry 0x%x at index %d\n", entry, i);
+   switch (i % 16)
+     {
+     case 0: return (entry == 0x90);
+     case 1: return (entry == 0x80);
+     case 2: return (entry == 0x70);
+     case 3: return (entry == 0x60);
+     case 4: return (entry == 0x50);
+     case 5: return (entry == 0x40);
+     case 6: return (entry == 0x30);
+     case 7: return (entry == 0x20);
+     case 8: return (entry == 0x10);
+     case 9: return (entry == 0xf0);
+     case 10: return (entry == 0xe0);
+     case 11: return (entry == 0xd0);
+     case 12: return (entry == 0xc0);
+     case 13: return (entry == 0xb0);
+     case 14: return (entry == 0xa0);
+     case 15: return (entry == 0xff);
+     default:
+       return 0;
+     }
+ }
+ 
+ unsigned char get_uchar_element (int i)
+ {
+   switch (i % 16)
+     {
+     case 0: return 0x90;
+     case 1: return 0x80;
+     case 2: return 0x70;
+     case 3: return 0x60;
+     case 4: return 0x50;
+     case 5: return 0x40;
+     case 6: return 0x30;
+     case 7: return 0x20;
+     case 8: return 0x10;
+     case 9: return 0xf0;
+     case 10: return 0xe0;
+     case 11: return 0xd0;
+     case 12: return 0xc0;
+     case 13: return 0xb0;
+     case 14: return 0xa0;
+     case 15: return 0xff;
+     }
+ }
+ 
+ int check_ushort_element (int i, unsigned short entry)
+ {
+   printf ("checking ushort entry 0x%x at index %d\n", entry, i);
+   switch (i % 8)
+     {
+     case 0: return (entry == 0x9988);
+     case 1: return (entry == 0x8877);
+     case 2: return (entry == 0x7766);
+     case 3: return (entry == 0x6655);
+     case 4: return (entry == 0x5544);
+     case 5: return (entry == 0x4433);
+     case 6: return (entry == 0x3322);
+     case 7: return (entry == 0x2211);
+     default:
+       return 0;
+     }
+ }
+ 
+ unsigned short get_ushort_element (int i)
+ {
+   switch (i % 8)
+     {
+     case 0: return 0x9988;
+     case 1: return 0x8877;
+     case 2: return 0x7766;
+     case 3: return 0x6655;
+     case 4: return 0x5544;
+     case 5: return 0x4433;
+     case 6: return 0x3322;
+     case 7: return 0x2211;
+     }
+ }
+ 
+ vector unsigned __int128
+ init_auto_uint128 (vector unsigned __int128 a)
+ {
+   int i;
+   for (i = 0; i < 32; i += 3)
+     a = set_auto_n_uint128 (a, i, get_uint128_element (i));
+   return a;
+ }
+ 
+ void do_auto_uint128 (vector unsigned __int128 a)
+ {
+   int i;
+   unsigned __int128 c;
+   for (i = 0; i < 32; i += 3)
+     {
+       c = get_auto_n_uint128 (a, i);
+       if (!check_uint128_element (i, c)) abort ();
+     }
+ }
+ 
+ vector unsigned long long int
+ init_auto_ulong (vector unsigned long long int a)
+ {
+   int i;
+   for (i = 0; i < 32; i += 3)
+     a = set_auto_n_ulong (a, i, get_ulong_element (i));
+   return a;
+ }
+ 
+ void do_auto_ulong (vector unsigned long long int a)
+ {
+   int i;
+   unsigned long long int c;
+   for (i = 0; i < 32; i += 3)
+     {
+       c = get_auto_n_ulong (a, i);
+       if (!check_ulong_element (i, c)) abort ();
+     }
+  }
+ 
+ vector unsigned int init_auto_uint (vector unsigned int a)
+ {
+   int i;
+   for (i = 0; i < 32; i += 3)
+     a = set_auto_n_uint (a, i, get_uint_element (i));
+   return a;
+ }
+ 
+ void do_auto_uint (vector unsigned int a)
+ {
+   int i;
+   unsigned int c;
+   for (i = 0; i < 32; i += 3)
+     {
+       c = get_auto_n_uint (a, i);
+       if (!check_uint_element (i, c)) abort ();
+     }
+  }
+ 
+ vector unsigned short init_auto_ushort ( vector unsigned short a )
+ {
+   int i;
+   for (i = 0; i < 32; i += 3)
+     a = set_auto_n_ushort (a, i, get_ushort_element (i));
+   return a;
+ }
+ 
+ void do_auto_ushort (vector unsigned short a)
+ {
+   int i;
+   unsigned short c;
+   for (i = 0; i < 32; i += 3)
+     {
+       c = get_auto_n_ushort (a, i);
+       if (!check_ushort_element (i, c)) abort ();
+     }
+ }
+ 
+ vector unsigned char init_auto_uchar (vector unsigned char a)
+ {
+   int i;
+   for (i = 0; i < 32; i += 3)
+     a = set_auto_n_uchar (a, i, get_uchar_element (i));
+   return a;
+ }
+ 
+ void do_auto_uchar (vector unsigned char a)
+ {
+   int i;
+   unsigned char c;
+   for (i = 0; i < 32; i += 3)
+     {
+       c = get_auto_n_uchar (a, i);
+       if (!check_uchar_element (i, c)) abort ();
+     }
+ }
+ 
+ int
+ main (void)
+ {
+   size_t i;
+ 
+   vector unsigned __int128 u = { 0 };
+   vector unsigned __int128 du;
+ 
+   vector unsigned long long int v = { 0, 0 };
+   vector unsigned long long int dv;
+ 
+   vector unsigned int x = { 0, 0, 0, 0 };
+   vector unsigned int dx;
+ 
+   vector unsigned char y = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+   vector unsigned char dy;
+ 
+   vector unsigned short z = { 0, 0, 0, 0, 0, 0, 0, 0 };
+   vector unsigned short dz;
+ 
+   du = init_auto_uint128 (u);
+   dv = init_auto_ulong (v);
+   dx = init_auto_uint (x);
+   dy = init_auto_uchar (y);
+   dz = init_auto_ushort (z);
+ 
+   du = deoptimize_uint128 (du);
+   dv = deoptimize_ulong (dv);
+   dx = deoptimize_uint (dx);
+   dy = deoptimize_uchar (dy);
+   dz = deoptimize_ushort (dz);
+ 
+   do_auto_uint128 (du);
+   do_auto_ulong (dv);
+   do_auto_uint (dx);
+   do_auto_uchar (dy);
+   do_auto_ushort (dz);
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr91275.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr91275.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr91275.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr91275.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,26 ----
+ /* Test that we generate vpmsumd correctly without a swap error.  */
+ 
+ /* { dg-do run { target { p8vector_hw } } } */
+ /* { dg-options "-O2 -std=gnu11" } */
+ 
+ #include <altivec.h>
+ 
+ int main() {
+ 
+   const unsigned long long r0l = 0x8e7dfceac070e3a0;
+   vector unsigned long long r0 = (vector unsigned long long) {r0l, 0}, v;
+   const vector unsigned long long pd
+     = (vector unsigned long long) {0xc2LLU << 56, 0};
+ 
+   v = __builtin_crypto_vpmsumd ((vector unsigned long long) {r0[0], 0}, pd);
+ 
+ #if __LITTLE_ENDIAN__
+   if (v[0] != 0x4000000000000000 || v[1] != 0x65bd7ab605a4a8ff)
+     __builtin_abort ();
+ #else
+   if (v[1] != 0x4000000000000000 || v[0] != 0x65bd7ab605a4a8ff)
+     __builtin_abort ();
+ #endif
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr92090-2.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr92090-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr92090-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr92090-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,45 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcpu=power8 -Os -w" } */
+ /* { dg-additional-options "-mbig" { target powerpc64le-*-* } } */
+ 
+ /* Verify that we don't ICE.  */
+ 
+ int a;
+ static _Atomic long double b, c, d, m;
+ double n;
+ extern int foo (void);
+ extern void bar (int, int, int, int);
+ 
+ void
+ bug (void)
+ {
+   b = 1.79769313486231580793728971405301199e308L;
+   for (int i = 0; i < 10000; i++)
+     if (__builtin_isinf (n))
+       b;
+   c = 1;
+   int e, f, g, h;
+   while (a)
+     ;
+   for (int i; i; i++)
+     {
+       double j = c /= foo ();
+       if (__builtin_isinf (j))
+ 	{
+ 	  if (foo == 1 << 31)
+ 	    e++;
+ 	  f++;
+ 	  c = 0;
+ 	}
+       else
+ 	{
+ 	  if (foo == 1 << 30)
+ 	    g++;
+ 	  h++;
+ 	  c = 1;
+ 	}
+     }
+   bar (e, f, g, h);
+   d = 1.79769313486231580793728971405301199e308L;
+   m = 1;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr92090.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr92090.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr92090.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr92090.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,43 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcpu=power8 -Os" } */
+ /* { dg-additional-options "-mbig" { target powerpc64le-*-* } } */
+ 
+ /* Verify that we don't ICE.  */
+ 
+ _Atomic int a;
+ _Atomic long double b, c;
+ int j;
+ void foo (void);
+ void bar (int, int, int, int);
+ 
+ void
+ bug (void)
+ {
+   b = 1;
+   int d, e, f, g;
+   while (a)
+     ;
+   for (int h = 0; h < 10000; h++)
+     {
+       double i = b /= 3;
+       foo ();
+       if (i)
+ 	{
+ 	  if (i == 1)
+ 	    d++;
+ 	  e++;
+ 	  b = 0;
+ 	}
+       else
+ 	{
+ 	  if (i == 2)
+ 	    f++;
+ 	  g++;
+ 	  b = 1;
+ 	}
+     }
+   bar (d, e, f, g);
+   c = 1;
+   for (int h; h; h++)
+     j = 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr93073.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr93073.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pr93073.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pr93073.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,16 ----
+ /* PR target/93073 */
+ /* { dg-do compile { target powerpc_vsx_ok } } */
+ /* { dg-options "-mvsx -O1 -ffinite-math-only -fno-trapping-math" } */
+ 
+ void bar (void);
+ 
+ void
+ foo (long double x, double y, double z)
+ {
+   for (;;)
+     {
+       double a = x > 0.0 ? y : z;
+       if (a == 0.0)
+ 	bar ();
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pure-builtin-redundant-load.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pure-builtin-redundant-load.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/pure-builtin-redundant-load.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/pure-builtin-redundant-load.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,47 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target powerpc_vsx_ok } */
+ /* { dg-options "-O2 -fdump-tree-fre-all -mvsx" } */
+ 
+ /* Verify we remove a redundant load that occurs both before and after
+ we call a vector load builtin.
+ This testcase is introduced as we updated a number of our vector load
+ built-ins with the attribute of PURE instead of MEM, to indicate that
+ those builtins only read from memory, versus reading from and writing
+ to the same.
+ This means we can identify the redundant load instructions in an earlier
+ pass, and optimize them away.  */
+ 
+ #include <altivec.h>
+ 
+ vector signed short load_data;
+ 
+ vector signed short foo()
+ {
+ 	vector signed short r11,r12,r13;
+ 	r11 = load_data;
+ 	r12 = vec_xl (0, &load_data[0]);
+ 	r13 = load_data;
+ 	return (r11 + r12 + r13);
+ }
+ 
+ vector signed short biz()
+ {
+ 	vector signed short r21,r22,r23;
+ 	r21 = load_data;
+ 	r22 = vec_lvehx (0, &load_data[0]);
+ 	r23 = load_data;
+ 	return (r21 + r22 + r23);
+ }
+ 
+ vector signed short bar()
+ {
+ 	vector signed short r31,r32,r33;
+ 	r31 = load_data;
+ 	r32 = vec_lvx (0, &load_data[0]);
+ 	r33 = load_data;
+ 	return (r31 + r32 + r33);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Removing dead stmt r13_. = load_data;" 1 "fre1" } } */
+ /* { dg-final { scan-tree-dump-times "Removing dead stmt r23_. = load_data;" 1 "fre1" } } */
+ /* { dg-final { scan-tree-dump-times "Removing dead stmt r33_. = load_data;" 1 "fre1" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c	Tue Feb  6 16:55:01 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile } */
+ /* { dg-skip-if "not implemented for Darwin" { powerpc*-*-darwin* } } */
  /* { dg-additional-options "-mno-speculate-indirect-jumps" } */
  /* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c	Tue Feb  6 16:55:01 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c	Wed Mar  4 08:30:02 2020
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile } */
+ /* { dg-skip-if "not implemented for Darwin" { powerpc*-*-darwin* } } */
  /* { dg-additional-options "-mno-speculate-indirect-jumps" } */
  /* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/spec-barr-1.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/spec-barr-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/spec-barr-1.c	Tue Mar  6 01:56:41 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/spec-barr-1.c	Wed Mar  4 08:30:02 2020
*************** void foo ()
*** 7,10 ****
    __builtin_ppc_speculation_barrier ();
  }
  
! /* { dg-final { scan-assembler "ori 31,31,0" } } */
--- 7,10 ----
    __builtin_ppc_speculation_barrier ();
  }
  
! /* { dg-final { scan-assembler {ori\s+r?31,r?31,r?0} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c	Tue Oct  2 19:56:50 2007
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,6 ----
  /* Test Attribute Vector associated with vector type stabs.  */
  /* { dg-do compile { target powerpc*-*-darwin* } } */
+ /* { dg-require-effective-target stabs } */
  /* { dg-options "-gstabs+ -fno-eliminate-unused-debug-types -faltivec" } */
  
  int main ()
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,253 ----
+ #include <stdlib.h>
+ #include <stddef.h>
+ #include <altivec.h>
+ 
+ #ifndef RTYPE
+ #define RTYPE TYPE
+ #endif
+ 
+ #ifdef DO_TRACE
+ #include <stdio.h>
+ 
+ #define TRACE(STRING, NUM)						\
+ do									\
+   {									\
+     fprintf (stderr, "%s: %2d\n", STRING, (int) NUM);			\
+     fflush (stderr);							\
+   }									\
+ while (0)
+ 
+ #ifndef FAIL_FORMAT
+ #define FAIL_FORMAT "%ld"
+ #define FAIL_CAST(X) ((long)(X))
+ #endif
+ 
+ #define FAIL(EXP, GOT)							 \
+ do									 \
+   {									 \
+     fprintf (stderr, "Expected: " FAIL_FORMAT ", got " FAIL_FORMAT "\n", \
+ 	     FAIL_CAST (EXP), FAIL_CAST (GOT));				 \
+     fflush (stderr);							 \
+     abort ();								 \
+   }									 \
+ while (0)
+ 
+ #else
+ #define TRACE(STRING, NUM)
+ #define FAIL(EXP, GOT) abort ()
+ #endif
+ 
+ static void
+ check (RTYPE, RTYPE) __attribute__((__noinline__));
+ 
+ static vector TYPE
+ deoptimize (vector TYPE) __attribute__((__noinline__));
+ 
+ static vector TYPE
+ *deoptimize_ptr (vector TYPE *)	__attribute__((__noinline__));
+ 
+ static void
+ check (RTYPE expected, RTYPE got)
+ {
+   if (expected != got)
+     FAIL (expected, got);
+ }
+ 
+ static vector TYPE
+ deoptimize (vector TYPE a)
+ {
+   __asm__ (" # %x0" : "+v" (a));
+   return a;
+ }
+ 
+ static vector TYPE *
+ deoptimize_ptr (vector TYPE *p)
+ {
+   __asm__ (" # %0" : "+r" (p));
+   return p;
+ }
+ 
+ 
+ RTYPE
+ get_auto_0 (vector TYPE a)
+ {
+   TRACE ("get_auto_", 0);
+   return (RTYPE) vec_extract (a, 0);
+ }
+ 
+ RTYPE
+ get_auto_1 (vector TYPE a)
+ {
+   TRACE ("get_auto_", 1);
+   return (RTYPE) vec_extract (a, 1);
+ }
+ 
+ #if ELEMENTS >= 4
+ RTYPE
+ get_auto_2 (vector TYPE a)
+ {
+   return (RTYPE) vec_extract (a, 2);
+ }
+ 
+ RTYPE
+ get_auto_3 (vector TYPE a)
+ {
+   return (RTYPE) vec_extract (a, 3);
+ }
+ 
+ #if ELEMENTS >= 8
+ RTYPE
+ get_auto_4 (vector TYPE a)
+ {
+   return (RTYPE) vec_extract (a, 4);
+ }
+ 
+ RTYPE
+ get_auto_5 (vector TYPE a)
+ {
+   return (RTYPE) vec_extract (a, 5);
+ }
+ 
+ RTYPE
+ get_auto_6 (vector TYPE a)
+ {
+   return (RTYPE) vec_extract (a, 6);
+ }
+ 
+ RTYPE
+ get_auto_7 (vector TYPE a)
+ {
+   return (RTYPE) vec_extract (a, 7);
+ }
+ 
+ #if ELEMENTS >= 16
+ RTYPE
+ get_auto_8 (vector TYPE a)
+ {
+   return (RTYPE) vec_extract (a, 8);
+ }
+ 
+ RTYPE
+ get_auto_9 (vector TYPE a)
+ {
+   return (RTYPE) vec_extract (a, 9);
+ }
+ 
+ RTYPE
+ get_auto_10 (vector TYPE a)
+ {
+   return (RTYPE) vec_extract (a, 10);
+ }
+ 
+ RTYPE
+ get_auto_11 (vector TYPE a)
+ {
+   return (RTYPE) vec_extract (a, 11);
+ }
+ 
+ RTYPE
+ get_auto_12 (vector TYPE a)
+ {
+   return (RTYPE) vec_extract (a, 12);
+ }
+ 
+ RTYPE
+ get_auto_13 (vector TYPE a)
+ {
+   return (RTYPE) vec_extract (a, 13);
+ }
+ 
+ RTYPE
+ get_auto_14 (vector TYPE a)
+ {
+   return (RTYPE) vec_extract (a, 14);
+ }
+ 
+ RTYPE
+ get_auto_15 (vector TYPE a)
+ {
+   return (RTYPE) vec_extract (a, 15);
+ }
+ 
+ #endif
+ #endif
+ #endif
+ 
+ 
+ /* Tests for the normal case of vec_extract where the vector is in a register
+    and returning the result in a register as a return value.  */
+ #ifdef DISABLE_INLINE_OF_GET_AUTO_N
+ __attribute__ ((__noinline__))
+ #else
+ /* gcc issues warning: always_inline function might not be inlinable
+ 
+    __attribute__ ((__always_inline__))
+ */
+ #endif
+ RTYPE
+ get_auto_n (vector TYPE a, ssize_t n)
+ {
+   return (RTYPE) vec_extract (a, n);
+ }
+ 
+ typedef RTYPE (*auto_func_type) (vector TYPE);
+ 
+ static auto_func_type get_auto_const[] = {
+   get_auto_0,
+   get_auto_1,
+ #if ELEMENTS >= 4
+   get_auto_2,
+   get_auto_3,
+ #if ELEMENTS >= 8
+   get_auto_4,
+   get_auto_5,
+   get_auto_6,
+   get_auto_7,
+ #if ELEMENTS >= 16
+   get_auto_8,
+   get_auto_9,
+   get_auto_10,
+   get_auto_11,
+   get_auto_12,
+   get_auto_13,
+   get_auto_14,
+   get_auto_15,
+ #endif
+ #endif
+ #endif
+ };
+ 
+ extern void do_auto (vector TYPE a) __attribute__((__noinline__));
+ 
+ void
+ do_auto (vector TYPE a)
+ {
+   size_t i;
+ 
+   for (i = 1; i < 40; i += 3)
+     {
+       TRACE ("do_auto, i: ", i);
+       TRACE ("  get_auto_const[i] returns: ",
+ 	     (*get_auto_const [i % ELEMENTS]) (a));
+       TRACE ("  get_auto_n returns", get_auto_n (a, i));
+       check (get_auto_n (a, i), (*get_auto_const [i % ELEMENTS]) (a));
+     }
+ }
+ 
+ 
+ 
+ /* Main program to test all of the possibilities.  */
+ int
+ main (void)
+ {
+   size_t i;
+   vector TYPE x = INITIAL;
+   vector TYPE *p, *p2, a, y;
+   vector TYPE z[2];
+ 
+   a = deoptimize (x);
+ 
+   do_auto (a);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-O2 -mvsx" } */
+ 
+ #define TYPE unsigned char
+ /* ELEMENTS is number of elements in a vector of TYPE.  */
+ #define ELEMENTS 16
+ #define INITIAL \
+   {  3, 2, 3, 4, 5, 6, 7, 8, 240, 241, 242, 243, 244, 245, 246, 247 }
+ 
+ #define DO_TRACE
+ #define DISABLE_INLINE_OF_GET_AUTO_N
+ 
+ #include "vec-extract-v16qiu-v2.h"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-O2 -mvsx" } */
+ 
+ #define TYPE unsigned char
+ /* ELEMENTS is number of elements in a vector of TYPE.  */
+ #define ELEMENTS 16
+ #define INITIAL \
+   {  3, 2, 3, 4, 5, 6, 7, 8, 240, 241, 242, 243, 244, 245, 246, 247 }
+ 
+ #define DO_TRACE
+ #undef DISABLE_INLINE_OF_GET_AUTO_N
+ 
+ #include "vec-extract-v16qiu-v2.h"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10a.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10a.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10a.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,155 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ short s3 (vector short v)
+ {
+   return __builtin_vec_ext_v8hi (v, 3);
+ }
+ 
+ short s7 (vector short v)
+ {
+   return __builtin_vec_ext_v8hi (v, 7);
+ }
+ 
+ short s21 (vector short v)
+ {
+   return __builtin_vec_ext_v8hi (v, 21);
+ }
+ 
+ short s30 (vector short v)
+ {
+   return __builtin_vec_ext_v8hi (v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ short ms3 (vector short *vp)
+ {
+   return __builtin_vec_ext_v8hi (*vp, 3);
+ }
+ 
+ short ms7 (vector short *vp)
+ {
+   return __builtin_vec_ext_v8hi (*vp, 7);
+ }
+ 
+ short ms21 (vector short *vp)
+ {
+   return __builtin_vec_ext_v8hi (*vp, 21);
+ }
+ 
+ short ms30 (vector short *vp)
+ {
+   return __builtin_vec_ext_v8hi (*vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ short ci (vector short v, int i)
+ {
+   return __builtin_vec_ext_v8hi (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ short mci (vector short *vp, int i)
+ {
+   return __builtin_vec_ext_v8hi (*vp, i);
+ }
+ 
+ 
+ int main (int argc, short *argv[]) {
+   vector short sv = {
+     CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 };
+   short s;
+ 
+   s = s3 (sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = s7 (sv);
+   if (s != CONST7)
+     abort ();
+ 
+   s = s21 (sv);
+   if (s != CONST5)
+     abort ();
+ 
+   s = s30 (sv);
+   if (s != CONST6)
+     abort ();
+ 
+   s = ms3 (&sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = ms7 (&sv);
+   if (s != CONST7)
+     abort ();
+ 
+   s = ms21 (&sv);
+   if (s != CONST5)
+     abort ();
+ 
+   s = ms30 (&sv);
+   if (s != CONST6)
+     abort ();
+ 
+   s = ci (sv, 5);
+   if (s != CONST5)
+     abort ();
+ 
+   s = ci (sv, 2);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ci (sv, 15);
+   if (s != CONST7)
+     abort ();
+ 
+   s = ci (sv, 28);
+   if (s != CONST4)
+     abort ();
+ 
+   s = mci (&sv, 5);
+   if (s != CONST5)
+     abort ();
+ 
+   s = mci (&sv, 12);
+   if (s != CONST4)
+     abort ();
+ 
+   s = mci (&sv, 25);
+   if (s != CONST1)
+     abort ();
+ 
+   s = mci (&sv, 16);
+   if (s != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10b.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10b.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10b.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,155 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec -O3" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ short s3 (vector short v)
+ {
+   return __builtin_vec_ext_v8hi (v, 3);
+ }
+ 
+ short s7 (vector short v)
+ {
+   return __builtin_vec_ext_v8hi (v, 7);
+ }
+ 
+ short s21 (vector short v)
+ {
+   return __builtin_vec_ext_v8hi (v, 21);
+ }
+ 
+ short s30 (vector short v)
+ {
+   return __builtin_vec_ext_v8hi (v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ short ms3 (vector short *vp)
+ {
+   return __builtin_vec_ext_v8hi (*vp, 3);
+ }
+ 
+ short ms7 (vector short *vp)
+ {
+   return __builtin_vec_ext_v8hi (*vp, 7);
+ }
+ 
+ short ms21 (vector short *vp)
+ {
+   return __builtin_vec_ext_v8hi (*vp, 21);
+ }
+ 
+ short ms30 (vector short *vp)
+ {
+   return __builtin_vec_ext_v8hi (*vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ short ci (vector short v, int i)
+ {
+   return __builtin_vec_ext_v8hi (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ short mci (vector short *vp, int i)
+ {
+   return __builtin_vec_ext_v8hi (*vp, i);
+ }
+ 
+ 
+ int main (int argc, short *argv[]) {
+   vector short sv = {
+     CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 };
+   short s;
+ 
+   s = s3 (sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = s7 (sv);
+   if (s != CONST7)
+     abort ();
+ 
+   s = s21 (sv);
+   if (s != CONST5)
+     abort ();
+ 
+   s = s30 (sv);
+   if (s != CONST6)
+     abort ();
+ 
+   s = ms3 (&sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = ms7 (&sv);
+   if (s != CONST7)
+     abort ();
+ 
+   s = ms21 (&sv);
+   if (s != CONST5)
+     abort ();
+ 
+   s = ms30 (&sv);
+   if (s != CONST6)
+     abort ();
+ 
+   s = ci (sv, 5);
+   if (s != CONST5)
+     abort ();
+ 
+   s = ci (sv, 2);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ci (sv, 15);
+   if (s != CONST7)
+     abort ();
+ 
+   s = ci (sv, 28);
+   if (s != CONST4)
+     abort ();
+ 
+   s = mci (&sv, 5);
+   if (s != CONST5)
+     abort ();
+ 
+   s = mci (&sv, 12);
+   if (s != CONST4)
+     abort ();
+ 
+   s = mci (&sv, 25);
+   if (s != CONST1)
+     abort ();
+ 
+   s = mci (&sv, 16);
+   if (s != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,155 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/vmx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector short s3 (vector short v, short x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ vector short s7 (vector short v, short x)
+ {
+   return vec_insert (x, v, 7);
+ }
+ 
+ vector short s21 (vector short v, short x)
+ {
+   return vec_insert (x, v, 21);
+ }
+ 
+ vector short s30 (vector short v, short x)
+ {
+   return vec_insert (x, v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector short ms3 (vector short *vp, short x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ vector short ms7 (vector short *vp, short x)
+ {
+   return vec_insert (x, *vp, 7);
+ }
+ 
+ vector short ms21 (vector short *vp, short x)
+ {
+   return vec_insert (x, *vp, 21);
+ }
+ 
+ vector short ms30 (vector short *vp, short x)
+ {
+   return vec_insert (x, *vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector short ci (vector short v, int i, short x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector short mci (vector short *vp, int i, short x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ 
+ int main (int argc, short *argv[]) {
+   vector short sv = {
+     CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 };
+   short s;
+ 
+   sv = s3 (sv, CONST6);
+   if (sv [3] != CONST6)
+     abort ();
+ 
+   sv = s7 (sv, CONST4);
+   if (sv [7] != CONST4)
+     abort ();
+ 
+   sv = s21 (sv, CONST3);
+   if (sv [5] != CONST3)
+     abort ();
+ 
+   sv = s30 (sv, CONST2);
+   if (sv [6] != CONST2)
+     abort ();
+ 
+   sv = ms3 (&sv, CONST5);
+   if (sv [3] != CONST5)
+     abort ();
+ 
+   sv = ms7 (&sv, CONST1);
+   if (sv [7] != CONST1)
+     abort ();
+ 
+   sv = ms21 (&sv, CONST2);
+   if (sv [5] != CONST2)
+     abort ();
+ 
+   sv = ms30 (&sv, CONST0);
+   if (sv [6] != CONST0)
+     abort ();
+ 
+   sv = ci (sv, 5, CONST6);
+   if (sv [5] != CONST6)
+     abort ();
+ 
+   sv = ci (sv, 2, CONST4);
+   if (sv [2] != CONST4)
+     abort ();
+ 
+   sv = ci (sv, 15, CONST3);
+   if (sv [7] != CONST3)
+     abort ();
+ 
+   sv = ci (sv, 28, CONST3);
+   if (sv [4] != CONST3)
+     abort ();
+ 
+   sv = mci (&sv, 5, CONST3);
+   if (sv [5] != CONST3)
+     abort ();
+ 
+   sv = mci (&sv, 12, CONST7);
+   if (sv [4] != CONST7)
+     abort ();
+ 
+   sv = mci (&sv, 25, CONST6);
+   if (sv [1] != CONST6)
+     abort ();
+ 
+   sv = mci (&sv, 16, CONST5);
+   if (sv [0] != CONST5)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,155 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec -O3" } */
+ 
+ /* This test should run the same on any target that supports altivec/vmx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector short s3 (vector short v, short x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ vector short s7 (vector short v, short x)
+ {
+   return vec_insert (x, v, 7);
+ }
+ 
+ vector short s21 (vector short v, short x)
+ {
+   return vec_insert (x, v, 21);
+ }
+ 
+ vector short s30 (vector short v, short x)
+ {
+   return vec_insert (x, v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector short ms3 (vector short *vp, short x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ vector short ms7 (vector short *vp, short x)
+ {
+   return vec_insert (x, *vp, 7);
+ }
+ 
+ vector short ms21 (vector short *vp, short x)
+ {
+   return vec_insert (x, *vp, 21);
+ }
+ 
+ vector short ms30 (vector short *vp, short x)
+ {
+   return vec_insert (x, *vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector short ci (vector short v, int i, short x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector short mci (vector short *vp, int i, short x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ 
+ int main (int argc, short *argv[]) {
+   vector short sv = {
+     CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 };
+   short s;
+ 
+   sv = s3 (sv, CONST6);
+   if (sv [3] != CONST6)
+     abort ();
+ 
+   sv = s7 (sv, CONST4);
+   if (sv [7] != CONST4)
+     abort ();
+ 
+   sv = s21 (sv, CONST3);
+   if (sv [5] != CONST3)
+     abort ();
+ 
+   sv = s30 (sv, CONST2);
+   if (sv [6] != CONST2)
+     abort ();
+ 
+   sv = ms3 (&sv, CONST5);
+   if (sv [3] != CONST5)
+     abort ();
+ 
+   sv = ms7 (&sv, CONST1);
+   if (sv [7] != CONST1)
+     abort ();
+ 
+   sv = ms21 (&sv, CONST2);
+   if (sv [5] != CONST2)
+     abort ();
+ 
+   sv = ms30 (&sv, CONST0);
+   if (sv [6] != CONST0)
+     abort ();
+ 
+   sv = ci (sv, 5, CONST6);
+   if (sv [5] != CONST6)
+     abort ();
+ 
+   sv = ci (sv, 2, CONST4);
+   if (sv [2] != CONST4)
+     abort ();
+ 
+   sv = ci (sv, 15, CONST3);
+   if (sv [7] != CONST3)
+     abort ();
+ 
+   sv = ci (sv, 28, CONST3);
+   if (sv [4] != CONST3)
+     abort ();
+ 
+   sv = mci (&sv, 5, CONST3);
+   if (sv [5] != CONST3)
+     abort ();
+ 
+   sv = mci (&sv, 12, CONST7);
+   if (sv [4] != CONST7)
+     abort ();
+ 
+   sv = mci (&sv, 25, CONST6);
+   if (sv [1] != CONST6)
+     abort ();
+ 
+   sv = mci (&sv, 16, CONST5);
+   if (sv [0] != CONST5)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11a.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11a.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11a.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,149 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ int s3 (vector int v)
+ {
+   return __builtin_vec_ext_v4si (v, 3);
+ }
+ 
+ int s1 (vector int v)
+ {
+   return __builtin_vec_ext_v4si (v, 1);
+ }
+ 
+ int s21 (vector int v)
+ {
+   return __builtin_vec_ext_v4si (v, 21);
+ }
+ 
+ int s30 (vector int v)
+ {
+   return __builtin_vec_ext_v4si (v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ int ms3 (vector int *vp)
+ {
+   return __builtin_vec_ext_v4si (*vp, 3);
+ }
+ 
+ int ms1(vector int *vp)
+ {
+   return __builtin_vec_ext_v4si (*vp, 1);
+ }
+ 
+ int ms21(vector int *vp)
+ {
+   return __builtin_vec_ext_v4si (*vp, 21);
+ }
+ 
+ int ms30(vector int *vp)
+ {
+   return __builtin_vec_ext_v4si (*vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ int ci (vector int v, int i)
+ {
+   return __builtin_vec_ext_v4si (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ int mci(vector int *vp, int i)
+ {
+   return __builtin_vec_ext_v4si (*vp, i);
+ }
+ 
+ 
+ int main (int argc, int *argv[]) {
+   vector int sv = { CONST0, CONST1, CONST2, CONST3 };
+   int s;
+ 
+   s = s3 (sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = s1 (sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = s21 (sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = s30 (sv);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ms3 (&sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = ms1 (&sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = ms21 (&sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = ms30 (&sv);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ci (sv, 5);
+   if (s != CONST1)
+     abort ();
+ 
+   s = ci (sv, 2);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ci (sv, 15);
+   if (s != CONST3)
+     abort ();
+ 
+   s = ci (sv, 28);
+   if (s != CONST0)
+     abort ();
+ 
+   s = mci (&sv, 5);
+   if (s != CONST1)
+     abort ();
+ 
+   s = mci (&sv, 12);
+   if (s != CONST0)
+     abort ();
+ 
+   s = mci (&sv, 25);
+   if (s != CONST1)
+     abort ();
+ 
+   s = mci (&sv, 16);
+   if (s != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11b.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11b.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11b.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,149 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec -O3" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ int s3 (vector int v)
+ {
+   return __builtin_vec_ext_v4si (v, 3);
+ }
+ 
+ int s1 (vector int v)
+ {
+   return __builtin_vec_ext_v4si (v, 1);
+ }
+ 
+ int s21 (vector int v)
+ {
+   return __builtin_vec_ext_v4si (v, 21);
+ }
+ 
+ int s30 (vector int v)
+ {
+   return __builtin_vec_ext_v4si (v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ int ms3 (vector int *vp)
+ {
+   return __builtin_vec_ext_v4si (*vp, 3);
+ }
+ 
+ int ms1(vector int *vp)
+ {
+   return __builtin_vec_ext_v4si (*vp, 1);
+ }
+ 
+ int ms21(vector int *vp)
+ {
+   return __builtin_vec_ext_v4si (*vp, 21);
+ }
+ 
+ int ms30(vector int *vp)
+ {
+   return __builtin_vec_ext_v4si (*vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ int ci (vector int v, int i)
+ {
+   return __builtin_vec_ext_v4si (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ int mci(vector int *vp, int i)
+ {
+   return __builtin_vec_ext_v4si (*vp, i);
+ }
+ 
+ 
+ int main (int argc, int *argv[]) {
+   vector int sv = { CONST0, CONST1, CONST2, CONST3 };
+   int s;
+ 
+   s = s3 (sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = s1 (sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = s21 (sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = s30 (sv);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ms3 (&sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = ms1 (&sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = ms21 (&sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = ms30 (&sv);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ci (sv, 5);
+   if (s != CONST1)
+     abort ();
+ 
+   s = ci (sv, 2);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ci (sv, 15);
+   if (s != CONST3)
+     abort ();
+ 
+   s = ci (sv, 28);
+   if (s != CONST0)
+     abort ();
+ 
+   s = mci (&sv, 5);
+   if (s != CONST1)
+     abort ();
+ 
+   s = mci (&sv, 12);
+   if (s != CONST0)
+     abort ();
+ 
+   s = mci (&sv, 25);
+   if (s != CONST1)
+     abort ();
+ 
+   s = mci (&sv, 16);
+   if (s != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,149 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/vmx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector int s3 (vector int v, int x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ vector int s1 (vector int v, int x)
+ {
+   return vec_insert (x, v, 1);
+ }
+ 
+ vector int s21 (vector int v, int x)
+ {
+   return vec_insert (x, v, 21);
+ }
+ 
+ vector int s30 (vector int v, int x)
+ {
+   return vec_insert (x, v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector int ms3  (vector int *vp, int x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ vector int ms1 (vector int *vp, int x)
+ {
+   return vec_insert (x, *vp, 1);
+ }
+ 
+ vector int ms21 (vector int *vp, int x)
+ {
+   return vec_insert (x, *vp, 21);
+ }
+ 
+ vector int ms30 (vector int *vp, int x)
+ {
+   return vec_insert (x, *vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector int ci (vector int v, int i, int x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector int mci(vector int *vp, int i, int x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ 
+ int main (int argc, int *argv[]) {
+   vector int sv = { CONST0, CONST1, CONST2, CONST3 };
+   int s;
+ 
+   sv = s3 (sv, CONST1);
+   if (sv [3] != CONST1)
+     abort ();
+ 
+   sv = s1 (sv, CONST3);
+   if (sv [1] != CONST3)
+     abort ();
+ 
+   sv = s21 (sv, CONST0);
+   if (sv [1] != CONST0)
+     abort ();
+ 
+   sv = s30 (sv, CONST1);
+   if (sv [2] != CONST1)
+     abort ();
+ 
+   sv = ms3 (&sv, CONST2);
+   if (sv [3] != CONST2)
+     abort ();
+ 
+   sv = ms1 (&sv, CONST0);
+   if (sv [1] != CONST0)
+     abort ();
+ 
+   sv = ms21 (&sv, CONST3);
+   if (sv [1] != CONST3)
+     abort ();
+ 
+   sv = ms30 (&sv, CONST0);
+   if (sv [2] != CONST0)
+     abort ();
+ 
+   sv = ci (sv, 5, CONST0);
+   if (sv [1] != CONST0)
+     abort ();
+ 
+   sv = ci (sv, 2, CONST3);
+   if (sv [2] != CONST3)
+     abort ();
+ 
+   sv = ci (sv, 15, CONST1);
+   if (sv [3] != CONST1)
+     abort ();
+ 
+   sv = ci (sv, 28, CONST3);
+   if (sv [0] != CONST3)
+     abort ();
+ 
+   sv = mci (&sv, 5, CONST2);
+   if (sv [1] != CONST2)
+     abort ();
+ 
+   sv = mci (&sv, 12, CONST1);
+   if (sv [0] != CONST1)
+     abort ();
+ 
+   sv = mci (&sv, 25, CONST2);
+   if (sv [1] != CONST2)
+     abort ();
+ 
+   sv = mci (&sv, 16, CONST3);
+   if (sv [0] != CONST3)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,149 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec -O3" } */
+ 
+ /* This test should run the same on any target that supports altivec/vmx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector int s3 (vector int v, int x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ vector int s1 (vector int v, int x)
+ {
+   return vec_insert (x, v, 1);
+ }
+ 
+ vector int s21 (vector int v, int x)
+ {
+   return vec_insert (x, v, 21);
+ }
+ 
+ vector int s30 (vector int v, int x)
+ {
+   return vec_insert (x, v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector int ms3  (vector int *vp, int x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ vector int ms1 (vector int *vp, int x)
+ {
+   return vec_insert (x, *vp, 1);
+ }
+ 
+ vector int ms21 (vector int *vp, int x)
+ {
+   return vec_insert (x, *vp, 21);
+ }
+ 
+ vector int ms30 (vector int *vp, int x)
+ {
+   return vec_insert (x, *vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector int ci (vector int v, int i, int x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector int mci(vector int *vp, int i, int x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ 
+ int main (int argc, int *argv[]) {
+   vector int sv = { CONST0, CONST1, CONST2, CONST3 };
+   int s;
+ 
+   sv = s3 (sv, CONST1);
+   if (sv [3] != CONST1)
+     abort ();
+ 
+   sv = s1 (sv, CONST3);
+   if (sv [1] != CONST3)
+     abort ();
+ 
+   sv = s21 (sv, CONST0);
+   if (sv [1] != CONST0)
+     abort ();
+ 
+   sv = s30 (sv, CONST1);
+   if (sv [2] != CONST1)
+     abort ();
+ 
+   sv = ms3 (&sv, CONST2);
+   if (sv [3] != CONST2)
+     abort ();
+ 
+   sv = ms1 (&sv, CONST0);
+   if (sv [1] != CONST0)
+     abort ();
+ 
+   sv = ms21 (&sv, CONST3);
+   if (sv [1] != CONST3)
+     abort ();
+ 
+   sv = ms30 (&sv, CONST0);
+   if (sv [2] != CONST0)
+     abort ();
+ 
+   sv = ci (sv, 5, CONST0);
+   if (sv [1] != CONST0)
+     abort ();
+ 
+   sv = ci (sv, 2, CONST3);
+   if (sv [2] != CONST3)
+     abort ();
+ 
+   sv = ci (sv, 15, CONST1);
+   if (sv [3] != CONST1)
+     abort ();
+ 
+   sv = ci (sv, 28, CONST3);
+   if (sv [0] != CONST3)
+     abort ();
+ 
+   sv = mci (&sv, 5, CONST2);
+   if (sv [1] != CONST2)
+     abort ();
+ 
+   sv = mci (&sv, 12, CONST1);
+   if (sv [0] != CONST1)
+     abort ();
+ 
+   sv = mci (&sv, 25, CONST2);
+   if (sv [1] != CONST2)
+     abort ();
+ 
+   sv = mci (&sv, 16, CONST3);
+   if (sv [0] != CONST3)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12a.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12a.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12a.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,109 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(31415926539LL)
+ #define CONST1		(2 * 31415926539LL)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ long long int e0 (vector long long int v)
+ {
+   return __builtin_vec_ext_v2di (v, 0);
+ }
+ 
+ long long int e3 (vector long long int v)
+ {
+   return __builtin_vec_ext_v2di (v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ long long int me0 (vector long long int *vp)
+ {
+   return __builtin_vec_ext_v2di (*vp, 0);
+ }
+ 
+ long long int me3 (vector long long int *vp)
+ {
+   return __builtin_vec_ext_v2di (*vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ long long int ei (vector long long int v, int i)
+ {
+   return __builtin_vec_ext_v2di (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ long long int mei (vector long long int *vp, int i)
+ {
+   return __builtin_vec_ext_v2di (*vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector long long int dv = { CONST0, CONST1 };
+   long long int d;
+ 
+   d = e0 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = e3 (dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = me0 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me3 (&dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = ei (dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 1);
+   if (d != CONST1)
+     abort ();
+ 
+   d = ei (dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 3);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 1);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 3);
+   if (d != CONST1)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12b.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12b.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12b.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,109 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx -O3" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(31415926539LL)
+ #define CONST1		(2 * 31415926539LL)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ long long int e0 (vector long long int v)
+ {
+   return __builtin_vec_ext_v2di (v, 0);
+ }
+ 
+ long long int e3 (vector long long int v)
+ {
+   return __builtin_vec_ext_v2di (v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ long long int me0 (vector long long int *vp)
+ {
+   return __builtin_vec_ext_v2di (*vp, 0);
+ }
+ 
+ long long int me3 (vector long long int *vp)
+ {
+   return __builtin_vec_ext_v2di (*vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ long long int ei (vector long long int v, int i)
+ {
+   return __builtin_vec_ext_v2di (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ long long int mei (vector long long int *vp, int i)
+ {
+   return __builtin_vec_ext_v2di (*vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector long long int dv = { CONST0, CONST1 };
+   long long int d;
+ 
+   d = e0 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = e3 (dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = me0 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me3 (&dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = ei (dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 1);
+   if (d != CONST1)
+     abort ();
+ 
+   d = ei (dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 3);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 1);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 3);
+   if (d != CONST1)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,112 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(31415926539LL)
+ #define CONST1		(2 * 31415926539LL)
+ #define CONST2		(3 * 31415926539LL)
+ #define CONST3		(4 * 31415926539LL)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector long long int e0 (vector long long int v, long long int x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector long long int e3 (vector long long int v, long long int x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector long long int me0 (vector long long int *vp, long long int x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector long long int me3 (vector long long int *vp, long long int x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector long long int ei (vector long long int v, int i, long long int x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector long long int mei (vector long long int *vp, int i, long long int x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector long long int dv = { CONST0, CONST1 };
+   long long int d;
+ 
+   dv = e0 (dv, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = e3 (dv, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = me0 (&dv, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = me3 (&dv, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = ei (dv, 0, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 1, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = ei (dv, 2, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = ei (dv, 3, CONST3);
+   if (dv [1] != CONST3)
+     abort ();
+ 
+   dv = mei (&dv, 0, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 1, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = mei (&dv, 2, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 3, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,112 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx -O3" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(31415926539LL)
+ #define CONST1		(2 * 31415926539LL)
+ #define CONST2		(3 * 31415926539LL)
+ #define CONST3		(4 * 31415926539LL)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector long long int e0 (vector long long int v, long long int x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector long long int e3 (vector long long int v, long long int x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector long long int me0 (vector long long int *vp, long long int x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector long long int me3 (vector long long int *vp, long long int x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector long long int ei (vector long long int v, int i, long long int x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector long long int mei (vector long long int *vp, int i, long long int x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector long long int dv = { CONST0, CONST1 };
+   long long int d;
+ 
+   dv = e0 (dv, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = e3 (dv, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = me0 (&dv, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = me3 (&dv, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = ei (dv, 0, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 1, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = ei (dv, 2, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = ei (dv, 3, CONST3);
+   if (dv [1] != CONST3)
+     abort ();
+ 
+   dv = mei (&dv, 0, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 1, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = mei (&dv, 2, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 3, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,124 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ /* Define this after PR89424 is addressed.  */
+ #define PR89424
+ 
+ /* Define this after PR89626 is addressed.  */
+ #undef PR89626
+ 
+ #ifdef PR89626
+ #define SIGNED
+ #else
+ #define SIGNED signed
+ #endif
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(((SIGNED __int128) 31415926539) << 60)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ SIGNED __int128 e0 (vector SIGNED __int128 v)
+ {
+   return __builtin_vec_ext_v1ti (v, 0);
+ }
+ 
+ SIGNED __int128 e3 (vector SIGNED __int128 v)
+ {
+   return __builtin_vec_ext_v1ti (v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ SIGNED __int128 me0 (vector SIGNED __int128 *vp)
+ {
+   return __builtin_vec_ext_v1ti (*vp, 0);
+ }
+ 
+ SIGNED __int128 me3 (vector SIGNED __int128 *vp)
+ {
+   return __builtin_vec_ext_v1ti (*vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ #ifdef PR89424
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ SIGNED __int128 ei (vector SIGNED __int128 v, int i)
+ {
+   return __builtin_vec_ext_v1ti (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ SIGNED __int128 mei (vector SIGNED __int128 *vp, int i)
+ {
+   return __builtin_vec_ext_v1ti (*vp, i);
+ }
+ #endif
+ 
+ int main (int argc, char *argv[]) {
+   vector SIGNED __int128 dv = { CONST0 };
+   SIGNED __int128 d;
+ 
+   d = e0 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = e3 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me0 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me3 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+ #ifdef PR89424
+   d = ei (dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 1);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 3);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 1);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 3);
+   if (d != CONST0)
+     abort ();
+ #endif
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,124 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx -O3" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ /* Define this after PR89424 is addressed.  */
+ #define PR89424
+ 
+ /* Define this after PR89626 is addressed.  */
+ #undef PR89626
+ 
+ #ifdef PR89626
+ #define SIGNED
+ #else
+ #define SIGNED signed
+ #endif
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(((SIGNED __int128) 31415926539) << 60)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ SIGNED __int128 e0 (vector SIGNED __int128 v)
+ {
+   return __builtin_vec_ext_v1ti (v, 0);
+ }
+ 
+ SIGNED __int128 e3 (vector SIGNED __int128 v)
+ {
+   return __builtin_vec_ext_v1ti (v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ SIGNED __int128 me0 (vector SIGNED __int128 *vp)
+ {
+   return __builtin_vec_ext_v1ti (*vp, 0);
+ }
+ 
+ SIGNED __int128 me3 (vector SIGNED __int128 *vp)
+ {
+   return __builtin_vec_ext_v1ti (*vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ #ifdef PR89424
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ SIGNED __int128 ei (vector SIGNED __int128 v, int i)
+ {
+   return __builtin_vec_ext_v1ti (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ SIGNED __int128 mei (vector SIGNED __int128 *vp, int i)
+ {
+   return __builtin_vec_ext_v1ti (*vp, i);
+ }
+ #endif
+ 
+ int main (int argc, char *argv[]) {
+   vector SIGNED __int128 dv = { CONST0 };
+   SIGNED __int128 d;
+ 
+   d = e0 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = e3 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me0 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me3 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+ #ifdef PR89424
+   d = ei (dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 1);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 3);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 1);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 3);
+   if (d != CONST0)
+     abort ();
+ #endif
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,115 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ #define SIGNED signed
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(((SIGNED __int128) 31415926539) << 60)
+ #define CONST1		(((SIGNED __int128) 31415926539) << 55)
+ #define CONST2		(((SIGNED __int128) 31415926539) << 50)
+ #define CONST3		(((SIGNED __int128) 31415926539) << 45)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector SIGNED __int128 e0 (vector SIGNED __int128 v, SIGNED __int128 x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector SIGNED __int128 e3 (vector SIGNED __int128 v, SIGNED __int128 x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector SIGNED __int128 me0 (vector SIGNED __int128 *vp, SIGNED __int128 x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector SIGNED __int128 me3 (vector SIGNED __int128 *vp, SIGNED __int128 x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector SIGNED __int128
+ ei (vector SIGNED __int128 v, int i, SIGNED __int128 x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector SIGNED __int128
+ mei (vector SIGNED __int128 *vp, int i, SIGNED __int128 x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector SIGNED __int128 dv = { CONST0 };
+   SIGNED __int128 d;
+ 
+   dv = e0 (dv, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = e3 (dv, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = me0 (&dv, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = me3 (&dv, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 0, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = ei (dv, 1, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = ei (dv, 2, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 3, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 0, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = mei (&dv, 1, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = mei (&dv, 2, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 3, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,115 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx -O3" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ #define SIGNED signed
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(((SIGNED __int128) 31415926539) << 60)
+ #define CONST1		(((SIGNED __int128) 31415926539) << 55)
+ #define CONST2		(((SIGNED __int128) 31415926539) << 50)
+ #define CONST3		(((SIGNED __int128) 31415926539) << 45)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector SIGNED __int128 e0 (vector SIGNED __int128 v, SIGNED __int128 x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector SIGNED __int128 e3 (vector SIGNED __int128 v, SIGNED __int128 x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector SIGNED __int128 me0 (vector SIGNED __int128 *vp, SIGNED __int128 x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector SIGNED __int128 me3 (vector SIGNED __int128 *vp, SIGNED __int128 x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector SIGNED __int128
+ ei (vector SIGNED __int128 v, int i, SIGNED __int128 x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector SIGNED __int128
+ mei (vector SIGNED __int128 *vp, int i, SIGNED __int128 x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector SIGNED __int128 dv = { CONST0 };
+   SIGNED __int128 d;
+ 
+   dv = e0 (dv, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = e3 (dv, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = me0 (&dv, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = me3 (&dv, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 0, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = ei (dv, 1, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = ei (dv, 2, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 3, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 0, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = mei (&dv, 1, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = mei (&dv, 2, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 3, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14a.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14a.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14a.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,126 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		((float) (3.1415926539))
+ #define CONST1		((float) (3.1415926539 * 2))
+ #define CONST2		((float) (3.1415926539 * 3))
+ #define CONST3		((float) (3.1415926539 * 4))
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ float e0(vector float v){ return __builtin_vec_ext_v4sf (v, 0); }
+ float e1(vector float v){ return __builtin_vec_ext_v4sf (v, 1); }
+ float e7(vector float v){ return __builtin_vec_ext_v4sf (v, 7); }
+ float e8(vector float v){ return __builtin_vec_ext_v4sf (v, 8); }
+ 
+ /* Test for vector residing in memory.  */
+ float me0(vector float *vp){ return __builtin_vec_ext_v4sf (*vp, 0); }
+ float me1(vector float *vp){ return __builtin_vec_ext_v4sf (*vp, 1); }
+ 
+ float me13(vector float *vp)
+ {
+   return __builtin_vec_ext_v4sf (*vp, 13);
+ }
+ 
+ float me15(vector float *vp)
+ {
+   return __builtin_vec_ext_v4sf (*vp, 15);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ float ei(vector float v, int i)
+ {
+   return __builtin_vec_ext_v4sf (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ float mei(vector float *vp, int i)
+ {
+   return __builtin_vec_ext_v4sf (*vp, i);
+ }
+ 
+ 
+ int main (int argc, char *argv[]) {
+   vector float dv = { CONST0, CONST1, CONST2, CONST3 };
+   float d;
+ 
+   d = e0 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = e1 (dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = e7 (dv);
+   if (d != CONST3)
+     abort ();
+ 
+   d = e8 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me0 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me1 (&dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = me13 (&dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = me15 (&dv);
+   if (d != CONST3)
+     abort ();
+ 
+   d = ei (dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 2);
+   if (d != CONST2)
+     abort ();
+ 
+   d = ei (dv, 11);
+   if (d != CONST3)
+     abort ();
+ 
+   d = ei (dv, 17);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 1);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 15);
+   if (d != CONST3)
+     abort ();
+ 
+   d = mei (&dv, 6);
+   if (d != CONST2)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14b.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14b.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14b.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,126 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec -O3" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		((float) (3.1415926539))
+ #define CONST1		((float) (3.1415926539 * 2))
+ #define CONST2		((float) (3.1415926539 * 3))
+ #define CONST3		((float) (3.1415926539 * 4))
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ float e0(vector float v){ return __builtin_vec_ext_v4sf (v, 0); }
+ float e1(vector float v){ return __builtin_vec_ext_v4sf (v, 1); }
+ float e7(vector float v){ return __builtin_vec_ext_v4sf (v, 7); }
+ float e8(vector float v){ return __builtin_vec_ext_v4sf (v, 8); }
+ 
+ /* Test for vector residing in memory.  */
+ float me0(vector float *vp){ return __builtin_vec_ext_v4sf (*vp, 0); }
+ float me1(vector float *vp){ return __builtin_vec_ext_v4sf (*vp, 1); }
+ 
+ float me13(vector float *vp)
+ {
+   return __builtin_vec_ext_v4sf (*vp, 13);
+ }
+ 
+ float me15(vector float *vp)
+ {
+   return __builtin_vec_ext_v4sf (*vp, 15);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ float ei(vector float v, int i)
+ {
+   return __builtin_vec_ext_v4sf (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ float mei(vector float *vp, int i)
+ {
+   return __builtin_vec_ext_v4sf (*vp, i);
+ }
+ 
+ 
+ int main (int argc, char *argv[]) {
+   vector float dv = { CONST0, CONST1, CONST2, CONST3 };
+   float d;
+ 
+   d = e0 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = e1 (dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = e7 (dv);
+   if (d != CONST3)
+     abort ();
+ 
+   d = e8 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me0 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me1 (&dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = me13 (&dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = me15 (&dv);
+   if (d != CONST3)
+     abort ();
+ 
+   d = ei (dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 2);
+   if (d != CONST2)
+     abort ();
+ 
+   d = ei (dv, 11);
+   if (d != CONST3)
+     abort ();
+ 
+   d = ei (dv, 17);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 1);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 15);
+   if (d != CONST3)
+     abort ();
+ 
+   d = mei (&dv, 6);
+   if (d != CONST2)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,149 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/vmx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		((float) (3.1415926539))
+ #define CONST1		((float) (3.1415926539 * 2))
+ #define CONST2		((float) (3.1415926539 * 3))
+ #define CONST3		((float) (3.1415926539 * 4))
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector float e0(vector float v, float x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector float e1(vector float v, float x)
+ {
+   return vec_insert (x, v, 1);
+ }
+ 
+ vector float e7(vector float v, float x)
+ {
+   return vec_insert (x, v, 7);
+ }
+ 
+ vector float e8(vector float v, float x)
+ {
+   return vec_insert (x, v, 8);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector float me0(vector float *vp, float x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector float me1(vector float *vp, float x)
+ {
+   return vec_insert (x, *vp, 1);
+ }
+ 
+ vector float me13(vector float *vp, float x)
+ {
+   return vec_insert (x, *vp, 13);
+ }
+ 
+ vector float me15(vector float *vp, float x)
+ {
+   return vec_insert (x, *vp, 15);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector float ei(vector float v, int i, float x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector float mei(vector float *vp, int i, float x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ 
+ int main (int argc, char *argv[]) {
+   vector float dv = { CONST0, CONST1, CONST2, CONST3 };
+   float d;
+ 
+   dv = e0 (dv, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = e1 (dv, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = e7 (dv, CONST2);
+   if (dv [3] != CONST2)
+     abort ();
+ 
+   dv = e8 (dv, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = me0 (&dv, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = me1 (&dv, CONST3);
+   if (dv [1] != CONST3)
+     abort ();
+ 
+   dv = me13 (&dv, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = me15 (&dv, CONST1);
+   if (dv [3] != CONST1)
+     abort ();
+ 
+   dv = ei (dv, 0, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 2, CONST1);
+   if (dv [2] != CONST1)
+     abort ();
+ 
+   dv = ei (dv, 11, CONST0);
+   if (dv [3] != CONST0)
+     abort ();
+ 
+   dv = ei (dv, 17, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = mei (&dv, 0, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 1, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = mei (&dv, 15, CONST1);
+   if (dv [3] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 6, CONST0);
+   if (dv [2] != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,149 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec -O3" } */
+ 
+ /* This test should run the same on any target that supports altivec/vmx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		((float) (3.1415926539))
+ #define CONST1		((float) (3.1415926539 * 2))
+ #define CONST2		((float) (3.1415926539 * 3))
+ #define CONST3		((float) (3.1415926539 * 4))
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector float e0(vector float v, float x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector float e1(vector float v, float x)
+ {
+   return vec_insert (x, v, 1);
+ }
+ 
+ vector float e7(vector float v, float x)
+ {
+   return vec_insert (x, v, 7);
+ }
+ 
+ vector float e8(vector float v, float x)
+ {
+   return vec_insert (x, v, 8);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector float me0(vector float *vp, float x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector float me1(vector float *vp, float x)
+ {
+   return vec_insert (x, *vp, 1);
+ }
+ 
+ vector float me13(vector float *vp, float x)
+ {
+   return vec_insert (x, *vp, 13);
+ }
+ 
+ vector float me15(vector float *vp, float x)
+ {
+   return vec_insert (x, *vp, 15);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector float ei(vector float v, int i, float x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector float mei(vector float *vp, int i, float x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ 
+ int main (int argc, char *argv[]) {
+   vector float dv = { CONST0, CONST1, CONST2, CONST3 };
+   float d;
+ 
+   dv = e0 (dv, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = e1 (dv, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = e7 (dv, CONST2);
+   if (dv [3] != CONST2)
+     abort ();
+ 
+   dv = e8 (dv, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = me0 (&dv, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = me1 (&dv, CONST3);
+   if (dv [1] != CONST3)
+     abort ();
+ 
+   dv = me13 (&dv, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = me15 (&dv, CONST1);
+   if (dv [3] != CONST1)
+     abort ();
+ 
+   dv = ei (dv, 0, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 2, CONST1);
+   if (dv [2] != CONST1)
+     abort ();
+ 
+   dv = ei (dv, 11, CONST0);
+   if (dv [3] != CONST0)
+     abort ();
+ 
+   dv = ei (dv, 17, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = mei (&dv, 0, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 1, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = mei (&dv, 15, CONST1);
+   if (dv [3] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 6, CONST0);
+   if (dv [2] != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15a.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15a.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15a.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,113 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(3.1415926539)
+ #define CONST1		(3.1415926539 * 2)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ double e0(vector double v){ return __builtin_vec_ext_v2df (v, 0); }
+ double e1(vector double v){ return __builtin_vec_ext_v2df (v, 1); }
+ double e2(vector double v){ return __builtin_vec_ext_v2df (v, 2); }
+ double e3(vector double v){ return __builtin_vec_ext_v2df (v, 3); }
+ 
+ /* Test for vector residing in memory.  */
+ double me0(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 0); }
+ double me1(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 1); }
+ double me2(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 2); }
+ double me3(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 3); }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ double ei(vector double v, int i){ return __builtin_vec_ext_v2df (v, i); }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ double mei(vector double *vp, int i){ return __builtin_vec_ext_v2df (*vp, i); }
+ 
+ 
+ int main (int argc, char *argv[]) {
+   vector double dv;
+   double d;
+   dv[0] = CONST0;
+   dv[1] = CONST1;
+ 
+   d = e0 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = e1 (dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = e2 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = e3 (dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = me0 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me1 (&dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = me2 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me3 (&dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = ei (dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 1);
+   if (d != CONST1)
+     abort ();
+ 
+   d = ei (dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 3);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 1);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 3);
+   if (d != CONST1)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15b.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15b.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15b.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,113 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx -O3" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(3.1415926539)
+ #define CONST1		(3.1415926539 * 2)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ double e0(vector double v){ return __builtin_vec_ext_v2df (v, 0); }
+ double e1(vector double v){ return __builtin_vec_ext_v2df (v, 1); }
+ double e2(vector double v){ return __builtin_vec_ext_v2df (v, 2); }
+ double e3(vector double v){ return __builtin_vec_ext_v2df (v, 3); }
+ 
+ /* Test for vector residing in memory.  */
+ double me0(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 0); }
+ double me1(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 1); }
+ double me2(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 2); }
+ double me3(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 3); }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ double ei(vector double v, int i){ return __builtin_vec_ext_v2df (v, i); }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ double mei(vector double *vp, int i){ return __builtin_vec_ext_v2df (*vp, i); }
+ 
+ 
+ int main (int argc, char *argv[]) {
+   vector double dv;
+   double d;
+   dv[0] = CONST0;
+   dv[1] = CONST1;
+ 
+   d = e0 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = e1 (dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = e2 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = e3 (dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = me0 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me1 (&dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = me2 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me3 (&dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = ei (dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 1);
+   if (d != CONST1)
+     abort ();
+ 
+   d = ei (dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 3);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 1);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 3);
+   if (d != CONST1)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15c.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15c.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15c.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15c.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,151 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(3.1415926539)
+ #define CONST1		(3.1415926539 * 2)
+ #define CONST2		(3.1415926539 * 3)
+ #define CONST3		(3.1415926539 * 4)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector double e0(vector double v, double x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector double e1(vector double v, double x)
+ {
+   return vec_insert (x, v, 1);
+ }
+ 
+ vector double e2(vector double v, double x)
+ {
+   return vec_insert (x, v, 2);
+ }
+ 
+ vector double e3(vector double v, double x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector double me0(vector double *vp, double x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector double me1(vector double *vp, double x)
+ {
+   return vec_insert (x, *vp, 1);
+ }
+ 
+ vector double me2(vector double *vp, double x)
+ {
+   return vec_insert (x, *vp, 2);
+ }
+ 
+ vector double me3(vector double *vp, double x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector double ei(vector double v, int i, double x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector double mei(vector double *vp, int i, double x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector double dv;
+   double d;
+   dv[0] = CONST0;
+   dv[1] = CONST1;
+ 
+   dv = e0 (dv, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = e1 (dv, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = e2 (dv, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = e3 (dv, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = me0 (&dv, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = me1 (&dv, CONST3);
+   if (dv [1] != CONST3)
+     abort ();
+ 
+   dv = me2 (&dv, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = me3 (&dv, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = ei (dv, 0, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = ei (dv, 1, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = ei (dv, 2, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 3, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = mei (&dv, 0, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 1, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = mei (&dv, 2, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = mei (&dv, 3, CONST3);
+   if (dv [1] != CONST3)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15d.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15d.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15d.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15d.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,151 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx -O3" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(3.1415926539)
+ #define CONST1		(3.1415926539 * 2)
+ #define CONST2		(3.1415926539 * 3)
+ #define CONST3		(3.1415926539 * 4)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector double e0(vector double v, double x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector double e1(vector double v, double x)
+ {
+   return vec_insert (x, v, 1);
+ }
+ 
+ vector double e2(vector double v, double x)
+ {
+   return vec_insert (x, v, 2);
+ }
+ 
+ vector double e3(vector double v, double x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector double me0(vector double *vp, double x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector double me1(vector double *vp, double x)
+ {
+   return vec_insert (x, *vp, 1);
+ }
+ 
+ vector double me2(vector double *vp, double x)
+ {
+   return vec_insert (x, *vp, 2);
+ }
+ 
+ vector double me3(vector double *vp, double x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector double ei(vector double v, int i, double x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector double mei(vector double *vp, int i, double x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector double dv;
+   double d;
+   dv[0] = CONST0;
+   dv[1] = CONST1;
+ 
+   dv = e0 (dv, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = e1 (dv, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = e2 (dv, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = e3 (dv, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = me0 (&dv, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = me1 (&dv, CONST3);
+   if (dv [1] != CONST3)
+     abort ();
+ 
+   dv = me2 (&dv, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = me3 (&dv, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = ei (dv, 0, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = ei (dv, 1, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = ei (dv, 2, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 3, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = mei (&dv, 0, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 1, CONST0);
+   if (dv [1] != CONST0)
+     abort ();
+ 
+   dv = mei (&dv, 2, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = mei (&dv, 3, CONST3);
+   if (dv [1] != CONST3)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16a.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16a.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16a.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,165 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ #define CONST8		(8)
+ #define CONST9		(9)
+ #define CONSTA		(10)
+ #define CONSTB		(11)
+ #define CONSTC		(12)
+ #define CONSTD		(13)
+ #define CONSTE		(14)
+ #define CONSTF		(15)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ unsigned char c0 (vector unsigned char v)
+ {
+   return __builtin_vec_extract (v, 0);
+ }
+ 
+ unsigned char c9 (vector unsigned char v)
+ {
+   return __builtin_vec_extract (v, 9);
+ }
+ 
+ unsigned char c21 (vector unsigned char v)
+ {
+   return __builtin_vec_extract (v, 21);
+ }
+ 
+ unsigned char c30 (vector unsigned char v)
+ {
+   return __builtin_vec_extract (v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ unsigned char mc0 (vector unsigned char *vp)
+ {
+   return __builtin_vec_extract (*vp, 0);
+ }
+ 
+ unsigned char mc9 (vector unsigned char *vp)
+ {
+   return __builtin_vec_extract (*vp, 9);
+ }
+ 
+ unsigned char mc21 (vector unsigned char *vp)
+ {
+   return __builtin_vec_extract (*vp, 21);
+ }
+ 
+ unsigned char mc30 (vector unsigned char *vp)
+ {
+   return __builtin_vec_extract (*vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ unsigned char ci (vector unsigned char v, int i)
+ {
+   return __builtin_vec_extract (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ unsigned char mci (vector unsigned char *vp, int i)
+ {
+   return __builtin_vec_extract (*vp, i);
+ }
+ 
+ 
+ int main (int argc, char *argv[]) {
+   vector unsigned char cv = { CONST0, CONST1, CONST2, CONST3,
+ 			    CONST4, CONST5, CONST6, CONST7,
+ 			    CONST8, CONST9, CONSTA, CONSTB,
+ 			    CONSTC, CONSTD, CONSTE, CONSTF };
+   unsigned char c;
+ 
+   c = c0 (cv);
+   if (c != CONST0)
+     abort ();
+ 
+   c = c9 (cv);
+   if (c != CONST9)
+     abort ();
+ 
+   c = c21 (cv);
+   if (c != CONST5)
+     abort ();
+ 
+   c = c30 (cv);
+   if (c != CONSTE)
+     abort ();
+ 
+   c = mc0 (&cv);
+   if (c != CONST0)
+     abort ();
+ 
+   c = mc9 (&cv);
+   if (c != CONST9)
+     abort ();
+ 
+   c = mc21 (&cv);
+   if (c != CONST5)
+     abort ();
+ 
+   c = mc30 (&cv);
+   if (c != CONSTE)
+     abort ();
+ 
+   c = ci (cv, 8);
+   if (c != CONST8)
+     abort ();
+ 
+   c = ci (cv, 13);
+   if (c != CONSTD)
+     abort ();
+ 
+   c = ci (cv, 23);
+   if (c != CONST7)
+     abort ();
+ 
+   c = ci (cv, 31);
+   if (c != CONSTF)
+     abort ();
+ 
+   c = mci (&cv, 5);
+   if (c != CONST5)
+     abort ();
+ 
+   c = mci (&cv, 12);
+   if (c != CONSTC)
+     abort ();
+ 
+   c = mci (&cv, 25);
+   if (c != CONST9)
+     abort ();
+ 
+   c = mci (&cv, 16);
+   if (c != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16b.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16b.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16b.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,165 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec -O3" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ #define CONST8		(8)
+ #define CONST9		(9)
+ #define CONSTA		(10)
+ #define CONSTB		(11)
+ #define CONSTC		(12)
+ #define CONSTD		(13)
+ #define CONSTE		(14)
+ #define CONSTF		(15)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ unsigned char c0 (vector unsigned char v)
+ {
+   return __builtin_vec_extract (v, 0);
+ }
+ 
+ unsigned char c9 (vector unsigned char v)
+ {
+   return __builtin_vec_extract (v, 9);
+ }
+ 
+ unsigned char c21 (vector unsigned char v)
+ {
+   return __builtin_vec_extract (v, 21);
+ }
+ 
+ unsigned char c30 (vector unsigned char v)
+ {
+   return __builtin_vec_extract (v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ unsigned char mc0 (vector unsigned char *vp)
+ {
+   return __builtin_vec_extract (*vp, 0);
+ }
+ 
+ unsigned char mc9 (vector unsigned char *vp)
+ {
+   return __builtin_vec_extract (*vp, 9);
+ }
+ 
+ unsigned char mc21 (vector unsigned char *vp)
+ {
+   return __builtin_vec_extract (*vp, 21);
+ }
+ 
+ unsigned char mc30 (vector unsigned char *vp)
+ {
+   return __builtin_vec_extract (*vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ unsigned char ci (vector unsigned char v, int i)
+ {
+   return __builtin_vec_extract (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ unsigned char mci (vector unsigned char *vp, int i)
+ {
+   return __builtin_vec_extract (*vp, i);
+ }
+ 
+ 
+ int main (int argc, char *argv[]) {
+   vector unsigned char cv = { CONST0, CONST1, CONST2, CONST3,
+ 			    CONST4, CONST5, CONST6, CONST7,
+ 			    CONST8, CONST9, CONSTA, CONSTB,
+ 			    CONSTC, CONSTD, CONSTE, CONSTF };
+   unsigned char c;
+ 
+   c = c0 (cv);
+   if (c != CONST0)
+     abort ();
+ 
+   c = c9 (cv);
+   if (c != CONST9)
+     abort ();
+ 
+   c = c21 (cv);
+   if (c != CONST5)
+     abort ();
+ 
+   c = c30 (cv);
+   if (c != CONSTE)
+     abort ();
+ 
+   c = mc0 (&cv);
+   if (c != CONST0)
+     abort ();
+ 
+   c = mc9 (&cv);
+   if (c != CONST9)
+     abort ();
+ 
+   c = mc21 (&cv);
+   if (c != CONST5)
+     abort ();
+ 
+   c = mc30 (&cv);
+   if (c != CONSTE)
+     abort ();
+ 
+   c = ci (cv, 8);
+   if (c != CONST8)
+     abort ();
+ 
+   c = ci (cv, 13);
+   if (c != CONSTD)
+     abort ();
+ 
+   c = ci (cv, 23);
+   if (c != CONST7)
+     abort ();
+ 
+   c = ci (cv, 31);
+   if (c != CONSTF)
+     abort ();
+ 
+   c = mci (&cv, 5);
+   if (c != CONST5)
+     abort ();
+ 
+   c = mci (&cv, 12);
+   if (c != CONSTC)
+     abort ();
+ 
+   c = mci (&cv, 25);
+   if (c != CONST9)
+     abort ();
+ 
+   c = mci (&cv, 16);
+   if (c != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,180 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/vmx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <stdio.h>
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ #define CONST8		(8)
+ #define CONST9		(9)
+ #define CONSTA		(10)
+ #define CONSTB		(11)
+ #define CONSTC		(12)
+ #define CONSTD		(13)
+ #define CONSTE		(14)
+ #define CONSTF		(15)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector unsigned char c0 (vector unsigned char v, unsigned char x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector unsigned char c9 (vector unsigned char v, unsigned char x)
+ {
+   return vec_insert (x, v, 9);
+ }
+ 
+ vector unsigned char c21 (vector unsigned char v, unsigned char x)
+ {
+   return vec_insert (x, v, 21);
+ }
+ 
+ vector unsigned char c30 (vector unsigned char v, unsigned char x)
+ {
+   return vec_insert (x, v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector unsigned char mc0 (vector unsigned char *vp, unsigned char x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector unsigned char mc9 (vector unsigned char *vp, unsigned char x)
+ {
+   return vec_insert (x, *vp, 9);
+ }
+ 
+ vector unsigned char mc21 (vector unsigned char *vp, unsigned char x)
+ {
+   return vec_insert (x, *vp, 21);
+ }
+ 
+ vector unsigned char mc30 (vector unsigned char *vp, unsigned char x)
+ {
+   return vec_insert (x, *vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector unsigned char ci (vector unsigned char v, int i, unsigned char x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector unsigned char mci (vector unsigned char *vp, int i, unsigned char x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ 
+ int main (int argc, char *argv[]) {
+   vector unsigned char cv = { CONST0, CONST1, CONST2, CONST3,
+ 			      CONST4, CONST5, CONST6, CONST7,
+ 			      CONST8, CONST9, CONSTA, CONSTB,
+ 			      CONSTC, CONSTD, CONSTE, CONSTF };
+   printf ("A\n");
+   cv = c0 (cv, CONST3);
+   if (cv [0] != CONST3)
+     abort ();
+ 
+   printf ("B\n");
+   cv = c9 (cv, CONST2);
+   if (cv [9] != CONST2)
+     abort ();
+ 
+   printf ("C\n");
+   cv = c21 (cv, CONSTF);
+   if (cv [5] != CONSTF)
+     abort ();
+ 
+   printf ("D\n");
+   cv = c30 (cv, CONST3);
+   if (cv [14] != CONST3)
+     abort ();
+ 
+   printf ("E\n");
+   cv = mc0 (&cv, CONST4);
+   if (cv [0] != CONST4)
+     abort ();
+ 
+   printf ("F\n");
+   cv = mc9 (&cv, CONST3);
+   if (cv [9] != CONST3)
+     abort ();
+ 
+   printf ("G\n");
+   cv = mc21 (&cv, CONST1);
+   if (cv [5] != CONST1)
+     abort ();
+ 
+   printf ("H\n");
+   cv = mc30 (&cv, CONSTC);
+   if (cv [14] != CONSTC)
+     abort ();
+ 
+   printf ("I\n");
+   cv = ci (cv, 8, CONSTD);
+   if (cv [8] != CONSTD)
+     abort ();
+ 
+   printf ("J\n");
+   cv = ci (cv, 13, CONST5);
+   if (cv [13] != CONST5)
+     abort ();
+ 
+   printf ("K\n");
+   cv = ci (cv, 23, CONST6);
+   if (cv [7] != CONST6)
+     abort ();
+ 
+   printf ("L\n");
+   cv = ci (cv, 31, CONST7);
+   if (cv [15] != CONST7)
+     abort ();
+ 
+   printf ("M\n");
+   cv = mci (&cv, 5, CONST8);
+   if (cv [5] != CONST8)
+     abort ();
+ 
+   printf ("N\n");
+   cv = mci (&cv, 12, CONST9);
+   if (cv [12] != CONST9)
+     abort ();
+ 
+   printf ("O\n");
+   cv = mci (&cv, 25, CONSTA);
+   if (cv [9] != CONSTA)
+     abort ();
+ 
+   printf ("P\n");
+   cv = mci (&cv, 16, CONSTB);
+   if (cv [0] != CONSTB)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,163 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec -O3" } */
+ 
+ /* This test should run the same on any target that supports altivec/vmx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ #define CONST8		(8)
+ #define CONST9		(9)
+ #define CONSTA		(10)
+ #define CONSTB		(11)
+ #define CONSTC		(12)
+ #define CONSTD		(13)
+ #define CONSTE		(14)
+ #define CONSTF		(15)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector unsigned char c0 (vector unsigned char v, unsigned char x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector unsigned char c9 (vector unsigned char v, unsigned char x)
+ {
+   return vec_insert (x, v, 9);
+ }
+ 
+ vector unsigned char c21 (vector unsigned char v, unsigned char x)
+ {
+   return vec_insert (x, v, 21);
+ }
+ 
+ vector unsigned char c30 (vector unsigned char v, unsigned char x)
+ {
+   return vec_insert (x, v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector unsigned char mc0 (vector unsigned char *vp, unsigned char x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector unsigned char mc9 (vector unsigned char *vp, unsigned char x)
+ {
+   return vec_insert (x, *vp, 9);
+ }
+ 
+ vector unsigned char mc21 (vector unsigned char *vp, unsigned char x)
+ {
+   return vec_insert (x, *vp, 21);
+ }
+ 
+ vector unsigned char mc30 (vector unsigned char *vp, unsigned char x)
+ {
+   return vec_insert (x, *vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector unsigned char ci (vector unsigned char v, int i, unsigned char x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector unsigned char mci (vector unsigned char *vp, int i, unsigned char x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ 
+ int main (int argc, char *argv[]) {
+   vector unsigned char cv = { CONST0, CONST1, CONST2, CONST3,
+ 			      CONST4, CONST5, CONST6, CONST7,
+ 			      CONST8, CONST9, CONSTA, CONSTB,
+ 			      CONSTC, CONSTD, CONSTE, CONSTF };
+   cv = c0 (cv, CONST3);
+   if (cv [0] != CONST3)
+     abort ();
+ 
+   cv = c9 (cv, CONST2);
+   if (cv [9] != CONST2)
+     abort ();
+ 
+   cv = c21 (cv, CONSTF);
+   if (cv [5] != CONSTF)
+     abort ();
+ 
+   cv = c30 (cv, CONST3);
+   if (cv [14] != CONST3)
+     abort ();
+ 
+   cv = mc0 (&cv, CONST4);
+   if (cv [0] != CONST4)
+     abort ();
+ 
+   cv = mc9 (&cv, CONST3);
+   if (cv [9] != CONST3)
+     abort ();
+ 
+   cv = mc21 (&cv, CONST1);
+   if (cv [5] != CONST1)
+     abort ();
+ 
+   cv = mc30 (&cv, CONSTC);
+   if (cv [14] != CONSTC)
+     abort ();
+ 
+   cv = ci (cv, 8, CONSTD);
+   if (cv [8] != CONSTD)
+     abort ();
+ 
+   cv = ci (cv, 13, CONST5);
+   if (cv [13] != CONST5)
+     abort ();
+ 
+   cv = ci (cv, 23, CONST6);
+   if (cv [7] != CONST6)
+     abort ();
+ 
+   cv = ci (cv, 31, CONST7);
+   if (cv [15] != CONST7)
+     abort ();
+ 
+   cv = mci (&cv, 5, CONST8);
+   if (cv [5] != CONST8)
+     abort ();
+ 
+   cv = mci (&cv, 12, CONST9);
+   if (cv [12] != CONST9)
+     abort ();
+ 
+   cv = mci (&cv, 25, CONSTA);
+   if (cv [9] != CONSTA)
+     abort ();
+ 
+   cv = mci (&cv, 16, CONSTB);
+   if (cv [0] != CONSTB)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17a.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17a.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17a.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,155 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ unsigned short s3 (vector unsigned short v)
+ {
+   return __builtin_vec_extract (v, 3);
+ }
+ 
+ unsigned short s7 (vector unsigned short v)
+ {
+   return __builtin_vec_extract (v, 7);
+ }
+ 
+ unsigned short s21 (vector unsigned short v)
+ {
+   return __builtin_vec_extract (v, 21);
+ }
+ 
+ unsigned short s30 (vector unsigned short v)
+ {
+   return __builtin_vec_extract (v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ unsigned short ms3 (vector unsigned short *vp)
+ {
+   return __builtin_vec_extract (*vp, 3);
+ }
+ 
+ unsigned short ms7 (vector unsigned short *vp)
+ {
+   return __builtin_vec_extract (*vp, 7);
+ }
+ 
+ unsigned short ms21 (vector unsigned short *vp)
+ {
+   return __builtin_vec_extract (*vp, 21);
+ }
+ 
+ unsigned short ms30 (vector unsigned short *vp)
+ {
+   return __builtin_vec_extract (*vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ unsigned short ci (vector unsigned short v, int i)
+ {
+   return __builtin_vec_extract (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ unsigned short mci (vector unsigned short *vp, int i)
+ {
+   return __builtin_vec_extract (*vp, i);
+ }
+ 
+ 
+ int main (int argc, unsigned short *argv[]) {
+   vector unsigned short sv = {
+     CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 };
+   unsigned short s;
+ 
+   s = s3 (sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = s7 (sv);
+   if (s != CONST7)
+     abort ();
+ 
+   s = s21 (sv);
+   if (s != CONST5)
+     abort ();
+ 
+   s = s30 (sv);
+   if (s != CONST6)
+     abort ();
+ 
+   s = ms3 (&sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = ms7 (&sv);
+   if (s != CONST7)
+     abort ();
+ 
+   s = ms21 (&sv);
+   if (s != CONST5)
+     abort ();
+ 
+   s = ms30 (&sv);
+   if (s != CONST6)
+     abort ();
+ 
+   s = ci (sv, 5);
+   if (s != CONST5)
+     abort ();
+ 
+   s = ci (sv, 2);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ci (sv, 15);
+   if (s != CONST7)
+     abort ();
+ 
+   s = ci (sv, 28);
+   if (s != CONST4)
+     abort ();
+ 
+   s = mci (&sv, 5);
+   if (s != CONST5)
+     abort ();
+ 
+   s = mci (&sv, 12);
+   if (s != CONST4)
+     abort ();
+ 
+   s = mci (&sv, 25);
+   if (s != CONST1)
+     abort ();
+ 
+   s = mci (&sv, 16);
+   if (s != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17b.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17b.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17b.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,155 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec -O3" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ unsigned short s3 (vector unsigned short v)
+ {
+   return __builtin_vec_extract (v, 3);
+ }
+ 
+ unsigned short s7 (vector unsigned short v)
+ {
+   return __builtin_vec_extract (v, 7);
+ }
+ 
+ unsigned short s21 (vector unsigned short v)
+ {
+   return __builtin_vec_extract (v, 21);
+ }
+ 
+ unsigned short s30 (vector unsigned short v)
+ {
+   return __builtin_vec_extract (v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ unsigned short ms3 (vector unsigned short *vp)
+ {
+   return __builtin_vec_extract (*vp, 3);
+ }
+ 
+ unsigned short ms7 (vector unsigned short *vp)
+ {
+   return __builtin_vec_extract (*vp, 7);
+ }
+ 
+ unsigned short ms21 (vector unsigned short *vp)
+ {
+   return __builtin_vec_extract (*vp, 21);
+ }
+ 
+ unsigned short ms30 (vector unsigned short *vp)
+ {
+   return __builtin_vec_extract (*vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ unsigned short ci (vector unsigned short v, int i)
+ {
+   return __builtin_vec_extract (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ unsigned short mci (vector unsigned short *vp, int i)
+ {
+   return __builtin_vec_extract (*vp, i);
+ }
+ 
+ 
+ int main (int argc, unsigned short *argv[]) {
+   vector unsigned short sv = {
+     CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 };
+   unsigned short s;
+ 
+   s = s3 (sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = s7 (sv);
+   if (s != CONST7)
+     abort ();
+ 
+   s = s21 (sv);
+   if (s != CONST5)
+     abort ();
+ 
+   s = s30 (sv);
+   if (s != CONST6)
+     abort ();
+ 
+   s = ms3 (&sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = ms7 (&sv);
+   if (s != CONST7)
+     abort ();
+ 
+   s = ms21 (&sv);
+   if (s != CONST5)
+     abort ();
+ 
+   s = ms30 (&sv);
+   if (s != CONST6)
+     abort ();
+ 
+   s = ci (sv, 5);
+   if (s != CONST5)
+     abort ();
+ 
+   s = ci (sv, 2);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ci (sv, 15);
+   if (s != CONST7)
+     abort ();
+ 
+   s = ci (sv, 28);
+   if (s != CONST4)
+     abort ();
+ 
+   s = mci (&sv, 5);
+   if (s != CONST5)
+     abort ();
+ 
+   s = mci (&sv, 12);
+   if (s != CONST4)
+     abort ();
+ 
+   s = mci (&sv, 25);
+   if (s != CONST1)
+     abort ();
+ 
+   s = mci (&sv, 16);
+   if (s != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,154 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/vmx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector unsigned short s3 (vector unsigned short v, unsigned short x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ vector unsigned short s7 (vector unsigned short v, unsigned short x)
+ {
+   return vec_insert (x, v, 7);
+ }
+ 
+ vector unsigned short s21 (vector unsigned short v, unsigned short x)
+ {
+   return vec_insert (x, v, 21);
+ }
+ 
+ vector unsigned short s30 (vector unsigned short v, unsigned short x)
+ {
+   return vec_insert (x, v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector unsigned short ms3 (vector unsigned short *vp, unsigned short x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ vector unsigned short ms7 (vector unsigned short *vp, unsigned short x)
+ {
+   return vec_insert (x, *vp, 7);
+ }
+ 
+ vector unsigned short ms21 (vector unsigned short *vp, unsigned short x)
+ {
+   return vec_insert (x, *vp, 21);
+ }
+ 
+ vector unsigned short ms30 (vector unsigned short *vp, unsigned short x)
+ {
+   return vec_insert (x, *vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector unsigned short ci (vector unsigned short v, int i, unsigned short x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector unsigned short mci (vector unsigned short *vp, int i, unsigned short x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ 
+ int main (int argc, unsigned short *argv[]) {
+   vector unsigned short sv = {
+     CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 };
+ 
+   sv = s3 (sv, CONST1);
+   if (sv [3] != CONST1)
+     abort ();
+ 
+   sv = s7 (sv, CONST2);
+   if (sv [7] != CONST2)
+     abort ();
+ 
+   sv = s21 (sv, CONST3);
+   if (sv [5] != CONST3)
+     abort ();
+ 
+   sv = s30 (sv, CONST4);
+   if (sv [6] != CONST4)
+     abort ();
+ 
+   sv = ms3 (&sv, CONST5);
+   if (sv [3] != CONST5)
+     abort ();
+ 
+   sv = ms7 (&sv, CONST6);
+   if (sv [7] != CONST6)
+     abort ();
+ 
+   sv = ms21 (&sv, CONST7);
+   if (sv [5] != CONST7)
+     abort ();
+ 
+   sv = ms30 (&sv, CONST0);
+   if (sv [6] != CONST0)
+     abort ();
+ 
+   sv = ci (sv, 5, CONST1);
+   if (sv [5] != CONST1)
+     abort ();
+ 
+   sv = ci (sv, 2, CONST3);
+   if (sv [2] != CONST3)
+     abort ();
+ 
+   sv = ci (sv, 15, CONST2);
+   if (sv [7] != CONST2)
+     abort ();
+ 
+   sv = ci (sv, 28, CONST5);
+   if (sv [4] != CONST5)
+     abort ();
+ 
+   sv = mci (&sv, 5, CONST4);
+   if (sv [5] != CONST4)
+     abort ();
+ 
+   sv = mci (&sv, 12, CONST6);
+   if (sv [4] != CONST6)
+     abort ();
+ 
+   sv = mci (&sv, 25, CONST7);
+   if (sv [1] != CONST7)
+     abort ();
+ 
+   sv = mci (&sv, 16, CONST4);
+   if (sv [0] != CONST4)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,154 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/vmx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector unsigned short s3 (vector unsigned short v, unsigned short x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ vector unsigned short s7 (vector unsigned short v, unsigned short x)
+ {
+   return vec_insert (x, v, 7);
+ }
+ 
+ vector unsigned short s21 (vector unsigned short v, unsigned short x)
+ {
+   return vec_insert (x, v, 21);
+ }
+ 
+ vector unsigned short s30 (vector unsigned short v, unsigned short x)
+ {
+   return vec_insert (x, v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector unsigned short ms3 (vector unsigned short *vp, unsigned short x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ vector unsigned short ms7 (vector unsigned short *vp, unsigned short x)
+ {
+   return vec_insert (x, *vp, 7);
+ }
+ 
+ vector unsigned short ms21 (vector unsigned short *vp, unsigned short x)
+ {
+   return vec_insert (x, *vp, 21);
+ }
+ 
+ vector unsigned short ms30 (vector unsigned short *vp, unsigned short x)
+ {
+   return vec_insert (x, *vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector unsigned short ci (vector unsigned short v, int i, unsigned short x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector unsigned short mci (vector unsigned short *vp, int i, unsigned short x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ 
+ int main (int argc, unsigned short *argv[]) {
+   vector unsigned short sv = {
+     CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 };
+ 
+   sv = s3 (sv, CONST1);
+   if (sv [3] != CONST1)
+     abort ();
+ 
+   sv = s7 (sv, CONST2);
+   if (sv [7] != CONST2)
+     abort ();
+ 
+   sv = s21 (sv, CONST3);
+   if (sv [5] != CONST3)
+     abort ();
+ 
+   sv = s30 (sv, CONST4);
+   if (sv [6] != CONST4)
+     abort ();
+ 
+   sv = ms3 (&sv, CONST5);
+   if (sv [3] != CONST5)
+     abort ();
+ 
+   sv = ms7 (&sv, CONST6);
+   if (sv [7] != CONST6)
+     abort ();
+ 
+   sv = ms21 (&sv, CONST7);
+   if (sv [5] != CONST7)
+     abort ();
+ 
+   sv = ms30 (&sv, CONST0);
+   if (sv [6] != CONST0)
+     abort ();
+ 
+   sv = ci (sv, 5, CONST1);
+   if (sv [5] != CONST1)
+     abort ();
+ 
+   sv = ci (sv, 2, CONST3);
+   if (sv [2] != CONST3)
+     abort ();
+ 
+   sv = ci (sv, 15, CONST2);
+   if (sv [7] != CONST2)
+     abort ();
+ 
+   sv = ci (sv, 28, CONST5);
+   if (sv [4] != CONST5)
+     abort ();
+ 
+   sv = mci (&sv, 5, CONST4);
+   if (sv [5] != CONST4)
+     abort ();
+ 
+   sv = mci (&sv, 12, CONST6);
+   if (sv [4] != CONST6)
+     abort ();
+ 
+   sv = mci (&sv, 25, CONST7);
+   if (sv [1] != CONST7)
+     abort ();
+ 
+   sv = mci (&sv, 16, CONST4);
+   if (sv [0] != CONST4)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18a.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18a.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18a.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,149 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Unsigned Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ unsigned int s3 (vector unsigned int v)
+ {
+   return __builtin_vec_extract (v, 3);
+ }
+ 
+ unsigned int s1 (vector unsigned int v)
+ {
+   return __builtin_vec_extract (v, 1);
+ }
+ 
+ unsigned int s21 (vector unsigned int v)
+ {
+   return __builtin_vec_extract (v, 21);
+ }
+ 
+ unsigned int s30 (vector unsigned int v)
+ {
+   return __builtin_vec_extract (v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ unsigned int ms3 (vector unsigned int *vp)
+ {
+   return __builtin_vec_extract (*vp, 3);
+ }
+ 
+ unsigned int ms1(vector unsigned int *vp)
+ {
+   return __builtin_vec_extract (*vp, 1);
+ }
+ 
+ unsigned int ms21(vector unsigned int *vp)
+ {
+   return __builtin_vec_extract (*vp, 21);
+ }
+ 
+ unsigned int ms30(vector unsigned int *vp)
+ {
+   return __builtin_vec_extract (*vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ unsigned int ci (vector unsigned int v, int i)
+ {
+   return __builtin_vec_extract (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ unsigned int mci(vector unsigned int *vp, int i)
+ {
+   return __builtin_vec_extract (*vp, i);
+ }
+ 
+ 
+ unsigned int main (int argc, unsigned char *argv[]) {
+   vector unsigned int sv = { CONST0, CONST1, CONST2, CONST3 };
+   unsigned int s;
+ 
+   s = s3 (sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = s1 (sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = s21 (sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = s30 (sv);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ms3 (&sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = ms1 (&sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = ms21 (&sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = ms30 (&sv);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ci (sv, 5);
+   if (s != CONST1)
+     abort ();
+ 
+   s = ci (sv, 2);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ci (sv, 15);
+   if (s != CONST3)
+     abort ();
+ 
+   s = ci (sv, 28);
+   if (s != CONST0)
+     abort ();
+ 
+   s = mci (&sv, 5);
+   if (s != CONST1)
+     abort ();
+ 
+   s = mci (&sv, 12);
+   if (s != CONST0)
+     abort ();
+ 
+   s = mci (&sv, 25);
+   if (s != CONST1)
+     abort ();
+ 
+   s = mci (&sv, 16);
+   if (s != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18b.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18b.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18b.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,149 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec -O3" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Unsigned Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ unsigned int s3 (vector unsigned int v)
+ {
+   return __builtin_vec_extract (v, 3);
+ }
+ 
+ unsigned int s1 (vector unsigned int v)
+ {
+   return __builtin_vec_extract (v, 1);
+ }
+ 
+ unsigned int s21 (vector unsigned int v)
+ {
+   return __builtin_vec_extract (v, 21);
+ }
+ 
+ unsigned int s30 (vector unsigned int v)
+ {
+   return __builtin_vec_extract (v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ unsigned int ms3 (vector unsigned int *vp)
+ {
+   return __builtin_vec_extract (*vp, 3);
+ }
+ 
+ unsigned int ms1(vector unsigned int *vp)
+ {
+   return __builtin_vec_extract (*vp, 1);
+ }
+ 
+ unsigned int ms21(vector unsigned int *vp)
+ {
+   return __builtin_vec_extract (*vp, 21);
+ }
+ 
+ unsigned int ms30(vector unsigned int *vp)
+ {
+   return __builtin_vec_extract (*vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ unsigned int ci (vector unsigned int v, int i)
+ {
+   return __builtin_vec_extract (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ unsigned int mci(vector unsigned int *vp, int i)
+ {
+   return __builtin_vec_extract (*vp, i);
+ }
+ 
+ 
+ unsigned int main (int argc, unsigned char *argv[]) {
+   vector unsigned int sv = { CONST0, CONST1, CONST2, CONST3 };
+   unsigned int s;
+ 
+   s = s3 (sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = s1 (sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = s21 (sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = s30 (sv);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ms3 (&sv);
+   if (s != CONST3)
+     abort ();
+ 
+   s = ms1 (&sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = ms21 (&sv);
+   if (s != CONST1)
+     abort ();
+ 
+   s = ms30 (&sv);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ci (sv, 5);
+   if (s != CONST1)
+     abort ();
+ 
+   s = ci (sv, 2);
+   if (s != CONST2)
+     abort ();
+ 
+   s = ci (sv, 15);
+   if (s != CONST3)
+     abort ();
+ 
+   s = ci (sv, 28);
+   if (s != CONST0)
+     abort ();
+ 
+   s = mci (&sv, 5);
+   if (s != CONST1)
+     abort ();
+ 
+   s = mci (&sv, 12);
+   if (s != CONST0)
+     abort ();
+ 
+   s = mci (&sv, 25);
+   if (s != CONST1)
+     abort ();
+ 
+   s = mci (&sv, 16);
+   if (s != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,148 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/vmx
+    instructions.  Unsigned Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector unsigned int s3 (vector unsigned int v, unsigned int x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ vector unsigned int s1 (vector unsigned int v, unsigned int x)
+ {
+   return vec_insert (x, v, 1);
+ }
+ 
+ vector unsigned int s21 (vector unsigned int v, unsigned int x)
+ {
+   return vec_insert (x, v, 21);
+ }
+ 
+ vector unsigned int s30 (vector unsigned int v, unsigned int x)
+ {
+   return vec_insert (x, v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector unsigned int ms3 (vector unsigned int *vp, unsigned int x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ vector unsigned int ms1(vector unsigned int *vp, unsigned int x)
+ {
+   return vec_insert (x, *vp, 1);
+ }
+ 
+ vector unsigned int ms21(vector unsigned int *vp, unsigned int x)
+ {
+   return vec_insert (x, *vp, 21);
+ }
+ 
+ vector unsigned int ms30(vector unsigned int *vp, unsigned int x)
+ {
+   return vec_insert (x, *vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector unsigned int ci (vector unsigned int v, int i, unsigned int x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector unsigned int mci(vector unsigned int *vp, int i, unsigned int x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ 
+ int main (int argc, unsigned char *argv[]) {
+   vector unsigned int sv = { CONST0, CONST1, CONST2, CONST3 };
+ 
+   sv = s3 (sv, CONST2);
+   if (sv [3] != CONST2)
+     abort ();
+ 
+   sv = s1 (sv, CONST2);
+   if (sv [1] != CONST2)
+     abort ();
+ 
+   sv = s21 (sv, CONST3);
+   if (sv [1] != CONST3)
+     abort ();
+ 
+   sv = s30 (sv, CONST1);
+   if (sv [2] != CONST1)
+     abort ();
+ 
+   sv = ms3 (&sv, CONST0);
+   if (sv [3] != CONST0)
+     abort ();
+ 
+   sv = ms1 (&sv, CONST0);
+   if (sv [1] != CONST0)
+     abort ();
+ 
+   sv = ms21 (&sv, CONST1);
+   if (sv [1] != CONST1)
+     abort ();
+ 
+   sv = ms30 (&sv, CONST0);
+   if (sv [2] != CONST0)
+     abort ();
+ 
+   sv = ci (sv, 5, CONST3);
+   if (sv [1] != CONST3)
+     abort ();
+ 
+   sv = ci (sv, 2, CONST0);
+   if (sv [2] != CONST0)
+     abort ();
+ 
+   sv = ci (sv, 15, CONST1);
+   if (sv [3] != CONST1)
+     abort ();
+ 
+   sv = ci (sv, 28, CONST3);
+   if (sv [0] != CONST3)
+     abort ();
+ 
+   sv = mci (&sv, 5, CONST0);
+   if (sv [1] != CONST0)
+     abort ();
+ 
+   sv = mci (&sv, 12, CONST2);
+   if (sv [0] != CONST2)
+     abort ();
+ 
+   sv = mci (&sv, 25, CONST3);
+   if (sv [1] != CONST3)
+     abort ();
+ 
+   sv = mci (&sv, 16, CONST1);
+   if (sv [0] != CONST1)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,148 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec -O3" } */
+ 
+ /* This test should run the same on any target that supports altivec/vmx
+    instructions.  Unsigned Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector unsigned int s3 (vector unsigned int v, unsigned int x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ vector unsigned int s1 (vector unsigned int v, unsigned int x)
+ {
+   return vec_insert (x, v, 1);
+ }
+ 
+ vector unsigned int s21 (vector unsigned int v, unsigned int x)
+ {
+   return vec_insert (x, v, 21);
+ }
+ 
+ vector unsigned int s30 (vector unsigned int v, unsigned int x)
+ {
+   return vec_insert (x, v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector unsigned int ms3 (vector unsigned int *vp, unsigned int x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ vector unsigned int ms1(vector unsigned int *vp, unsigned int x)
+ {
+   return vec_insert (x, *vp, 1);
+ }
+ 
+ vector unsigned int ms21(vector unsigned int *vp, unsigned int x)
+ {
+   return vec_insert (x, *vp, 21);
+ }
+ 
+ vector unsigned int ms30(vector unsigned int *vp, unsigned int x)
+ {
+   return vec_insert (x, *vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector unsigned int ci (vector unsigned int v, int i, unsigned int x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector unsigned int mci(vector unsigned int *vp, int i, unsigned int x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ 
+ int main (int argc, unsigned char *argv[]) {
+   vector unsigned int sv = { CONST0, CONST1, CONST2, CONST3 };
+ 
+   sv = s3 (sv, CONST2);
+   if (sv [3] != CONST2)
+     abort ();
+ 
+   sv = s1 (sv, CONST2);
+   if (sv [1] != CONST2)
+     abort ();
+ 
+   sv = s21 (sv, CONST3);
+   if (sv [1] != CONST3)
+     abort ();
+ 
+   sv = s30 (sv, CONST1);
+   if (sv [2] != CONST1)
+     abort ();
+ 
+   sv = ms3 (&sv, CONST0);
+   if (sv [3] != CONST0)
+     abort ();
+ 
+   sv = ms1 (&sv, CONST0);
+   if (sv [1] != CONST0)
+     abort ();
+ 
+   sv = ms21 (&sv, CONST1);
+   if (sv [1] != CONST1)
+     abort ();
+ 
+   sv = ms30 (&sv, CONST0);
+   if (sv [2] != CONST0)
+     abort ();
+ 
+   sv = ci (sv, 5, CONST3);
+   if (sv [1] != CONST3)
+     abort ();
+ 
+   sv = ci (sv, 2, CONST0);
+   if (sv [2] != CONST0)
+     abort ();
+ 
+   sv = ci (sv, 15, CONST1);
+   if (sv [3] != CONST1)
+     abort ();
+ 
+   sv = ci (sv, 28, CONST3);
+   if (sv [0] != CONST3)
+     abort ();
+ 
+   sv = mci (&sv, 5, CONST0);
+   if (sv [1] != CONST0)
+     abort ();
+ 
+   sv = mci (&sv, 12, CONST2);
+   if (sv [0] != CONST2)
+     abort ();
+ 
+   sv = mci (&sv, 25, CONST3);
+   if (sv [1] != CONST3)
+     abort ();
+ 
+   sv = mci (&sv, 16, CONST1);
+   if (sv [0] != CONST1)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19a.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19a.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19a.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,109 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(31415926539LL)
+ #define CONST1		(2 * 31415926539LL)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ unsigned long long int e0 (vector unsigned long long int v)
+ {
+   return __builtin_vec_extract (v, 0);
+ }
+ 
+ unsigned long long int e3 (vector unsigned long long int v)
+ {
+   return __builtin_vec_extract (v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ unsigned long long int me0 (vector unsigned long long int *vp)
+ {
+   return __builtin_vec_extract (*vp, 0);
+ }
+ 
+ unsigned long long int me3 (vector unsigned long long int *vp)
+ {
+   return __builtin_vec_extract (*vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ unsigned long long int ei (vector unsigned long long int v, int i)
+ {
+   return __builtin_vec_extract (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ unsigned long long int mei (vector unsigned long long int *vp, int i)
+ {
+   return __builtin_vec_extract (*vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector unsigned long long int dv = { CONST0, CONST1 };
+   unsigned long long int d;
+ 
+   d = e0 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = e3 (dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = me0 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me3 (&dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = ei (dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 1);
+   if (d != CONST1)
+     abort ();
+ 
+   d = ei (dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 3);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 1);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 3);
+   if (d != CONST1)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19b.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19b.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19b.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,109 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx -O3" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(31415926539LL)
+ #define CONST1		(2 * 31415926539LL)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ unsigned long long int e0 (vector unsigned long long int v)
+ {
+   return __builtin_vec_extract (v, 0);
+ }
+ 
+ unsigned long long int e3 (vector unsigned long long int v)
+ {
+   return __builtin_vec_extract (v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ unsigned long long int me0 (vector unsigned long long int *vp)
+ {
+   return __builtin_vec_extract (*vp, 0);
+ }
+ 
+ unsigned long long int me3 (vector unsigned long long int *vp)
+ {
+   return __builtin_vec_extract (*vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ unsigned long long int ei (vector unsigned long long int v, int i)
+ {
+   return __builtin_vec_extract (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ unsigned long long int mei (vector unsigned long long int *vp, int i)
+ {
+   return __builtin_vec_extract (*vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector unsigned long long int dv = { CONST0, CONST1 };
+   unsigned long long int d;
+ 
+   d = e0 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = e3 (dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = me0 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me3 (&dv);
+   if (d != CONST1)
+     abort ();
+ 
+   d = ei (dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 1);
+   if (d != CONST1)
+     abort ();
+ 
+   d = ei (dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 3);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 1);
+   if (d != CONST1)
+     abort ();
+ 
+   d = mei (&dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 3);
+   if (d != CONST1)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,122 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(31415926539LL)
+ #define CONST1		(2 * 31415926539LL)
+ #define CONST2		(3 * 31415926539LL)
+ #define CONST3		(4 * 31415926539LL)
+ #define CONST4		(5 * 31415926539LL)
+ #define CONST5		(6 * 31415926539LL)
+ #define CONST6		(7 * 31415926539LL)
+ #define CONST7		(8 * 31415926539LL)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector unsigned long long int
+ e0 (vector unsigned long long int v, unsigned long long int x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector unsigned long long int
+ e3 (vector unsigned long long int v, unsigned long long int x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector unsigned long long int
+ me0 (vector unsigned long long int *vp, unsigned long long int x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector unsigned long long int
+ me3 (vector unsigned long long int *vp, unsigned long long int x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector unsigned long long int
+ ei (vector unsigned long long int v, int i, unsigned long long int x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector unsigned long long int
+ mei (vector unsigned long long int *vp, int i, unsigned long long int x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector unsigned long long int dv = { CONST0, CONST1 };
+   unsigned long long int d;
+ 
+   dv = e0 (dv, CONST7);
+   if (dv [0] != CONST7)
+     abort ();
+ 
+   dv = e3 (dv, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = me0 (&dv, CONST4);
+   if (dv [0] != CONST4)
+     abort ();
+ 
+   dv = me3 (&dv, CONST3);
+   if (dv [1] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 0, CONST5);
+   if (dv [0] != CONST5)
+     abort ();
+ 
+   dv = ei (dv, 1, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = ei (dv, 2, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 3, CONST6);
+   if (dv [1] != CONST6)
+     abort ();
+ 
+   dv = mei (&dv, 0, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 1, CONST3);
+   if (dv [1] != CONST3)
+     abort ();
+ 
+   dv = mei (&dv, 2, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 3, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,122 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx -O3" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(31415926539LL)
+ #define CONST1		(2 * 31415926539LL)
+ #define CONST2		(3 * 31415926539LL)
+ #define CONST3		(4 * 31415926539LL)
+ #define CONST4		(5 * 31415926539LL)
+ #define CONST5		(6 * 31415926539LL)
+ #define CONST6		(7 * 31415926539LL)
+ #define CONST7		(8 * 31415926539LL)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector unsigned long long int
+ e0 (vector unsigned long long int v, unsigned long long int x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector unsigned long long int
+ e3 (vector unsigned long long int v, unsigned long long int x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector unsigned long long int
+ me0 (vector unsigned long long int *vp, unsigned long long int x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector unsigned long long int
+ me3 (vector unsigned long long int *vp, unsigned long long int x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector unsigned long long int
+ ei (vector unsigned long long int v, int i, unsigned long long int x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector unsigned long long int
+ mei (vector unsigned long long int *vp, int i, unsigned long long int x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector unsigned long long int dv = { CONST0, CONST1 };
+   unsigned long long int d;
+ 
+   dv = e0 (dv, CONST7);
+   if (dv [0] != CONST7)
+     abort ();
+ 
+   dv = e3 (dv, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = me0 (&dv, CONST4);
+   if (dv [0] != CONST4)
+     abort ();
+ 
+   dv = me3 (&dv, CONST3);
+   if (dv [1] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 0, CONST5);
+   if (dv [0] != CONST5)
+     abort ();
+ 
+   dv = ei (dv, 1, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   dv = ei (dv, 2, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 3, CONST6);
+   if (dv [1] != CONST6)
+     abort ();
+ 
+   dv = mei (&dv, 0, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 1, CONST3);
+   if (dv [1] != CONST3)
+     abort ();
+ 
+   dv = mei (&dv, 2, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 3, CONST2);
+   if (dv [1] != CONST2)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,115 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ /* Define this after PR89424 is addressed.  */
+ #define PR89424
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(((unsigned __int128) 31415926539) << 60)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ unsigned __int128 e0 (vector unsigned __int128 v)
+ {
+   return __builtin_vec_extract (v, 0);
+ }
+ 
+ unsigned __int128 e3 (vector unsigned __int128 v)
+ {
+   return __builtin_vec_extract (v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ unsigned __int128 me0 (vector unsigned __int128 *vp)
+ {
+   return __builtin_vec_extract (*vp, 0);
+ }
+ 
+ unsigned __int128 me3 (vector unsigned __int128 *vp)
+ {
+   return __builtin_vec_extract (*vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ #ifdef PR89424
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ unsigned __int128 ei (vector unsigned __int128 v, int i)
+ {
+   return __builtin_vec_extract (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ unsigned __int128 mei (vector unsigned __int128 *vp, int i)
+ {
+   return __builtin_vec_extract (*vp, i);
+ }
+ #endif
+ 
+ int main (int argc, char *argv[]) {
+   vector unsigned __int128 dv = { CONST0 };
+   unsigned __int128 d;
+ 
+   d = e0 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = e3 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me0 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me3 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+ #ifdef PR89424
+   d = ei (dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 1);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 3);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 1);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 3);
+   if (d != CONST0)
+     abort ();
+ #endif
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,115 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx -O3" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ /* Define this after PR89424 is addressed.  */
+ #define PR89424
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(((unsigned __int128) 31415926539) << 60)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ unsigned __int128 e0 (vector unsigned __int128 v)
+ {
+   return __builtin_vec_extract (v, 0);
+ }
+ 
+ unsigned __int128 e3 (vector unsigned __int128 v)
+ {
+   return __builtin_vec_extract (v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ unsigned __int128 me0 (vector unsigned __int128 *vp)
+ {
+   return __builtin_vec_extract (*vp, 0);
+ }
+ 
+ unsigned __int128 me3 (vector unsigned __int128 *vp)
+ {
+   return __builtin_vec_extract (*vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ #ifdef PR89424
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ unsigned __int128 ei (vector unsigned __int128 v, int i)
+ {
+   return __builtin_vec_extract (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ unsigned __int128 mei (vector unsigned __int128 *vp, int i)
+ {
+   return __builtin_vec_extract (*vp, i);
+ }
+ #endif
+ 
+ int main (int argc, char *argv[]) {
+   vector unsigned __int128 dv = { CONST0 };
+   unsigned __int128 d;
+ 
+   d = e0 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = e3 (dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me0 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+   d = me3 (&dv);
+   if (d != CONST0)
+     abort ();
+ 
+ #ifdef PR89424
+   d = ei (dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 1);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = ei (dv, 3);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 0);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 1);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 2);
+   if (d != CONST0)
+     abort ();
+ 
+   d = mei (&dv, 3);
+   if (d != CONST0)
+     abort ();
+ #endif
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,115 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(((unsigned __int128) 31415926539) << 60)
+ #define CONST1		(((unsigned __int128) 31415926539) << 54)
+ #define CONST2		(((unsigned __int128) 31415926539) << 48)
+ #define CONST3		(((unsigned __int128) 31415926539) << 32)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector unsigned __int128 e0 (vector unsigned __int128 v, unsigned __int128 x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector unsigned __int128 e3 (vector unsigned __int128 v, unsigned __int128 x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector unsigned __int128
+ me0 (vector unsigned __int128 *vp, unsigned __int128 x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector unsigned __int128
+ me3 (vector unsigned __int128 *vp, unsigned __int128 x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector unsigned __int128
+ ei (vector unsigned __int128 v, int i, unsigned __int128 x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector unsigned __int128
+ mei (vector unsigned __int128 *vp, int i, unsigned __int128 x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector unsigned __int128 dv = { CONST0 };
+ 
+   dv = e0 (dv, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = e3 (dv, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = me0 (&dv, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = me3 (&dv, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 0, CONST0);
+   if (dv [0] != CONST0)
+     abort ();
+ 
+   dv = ei (dv, 1, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = ei (dv, 2, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = ei (dv, 3, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = mei (&dv, 0, CONST0);
+   if (dv [0] != CONST0)
+     abort ();
+ 
+   dv = mei (&dv, 1, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 2, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = mei (&dv, 3, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,115 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-mvsx -O3" } */
+ 
+ /* This test should run the same on any target that supports vsx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(((unsigned __int128) 31415926539) << 60)
+ #define CONST1		(((unsigned __int128) 31415926539) << 54)
+ #define CONST2		(((unsigned __int128) 31415926539) << 48)
+ #define CONST3		(((unsigned __int128) 31415926539) << 32)
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector unsigned __int128 e0 (vector unsigned __int128 v, unsigned __int128 x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector unsigned __int128 e3 (vector unsigned __int128 v, unsigned __int128 x)
+ {
+   return vec_insert (x, v, 3);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector unsigned __int128
+ me0 (vector unsigned __int128 *vp, unsigned __int128 x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector unsigned __int128
+ me3 (vector unsigned __int128 *vp, unsigned __int128 x)
+ {
+   return vec_insert (x, *vp, 3);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector unsigned __int128
+ ei (vector unsigned __int128 v, int i, unsigned __int128 x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector unsigned __int128
+ mei (vector unsigned __int128 *vp, int i, unsigned __int128 x)
+ {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ int main (int argc, char *argv[]) {
+   vector unsigned __int128 dv = { CONST0 };
+ 
+   dv = e0 (dv, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = e3 (dv, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = me0 (&dv, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = me3 (&dv, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = ei (dv, 0, CONST0);
+   if (dv [0] != CONST0)
+     abort ();
+ 
+   dv = ei (dv, 1, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = ei (dv, 2, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = ei (dv, 3, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   dv = mei (&dv, 0, CONST0);
+   if (dv [0] != CONST0)
+     abort ();
+ 
+   dv = mei (&dv, 1, CONST1);
+   if (dv [0] != CONST1)
+     abort ();
+ 
+   dv = mei (&dv, 2, CONST2);
+   if (dv [0] != CONST2)
+     abort ();
+ 
+   dv = mei (&dv, 3, CONST3);
+   if (dv [0] != CONST3)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,164 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ #define CONST8		(8)
+ #define CONST9		(9)
+ #define CONSTA		(10)
+ #define CONSTB		(11)
+ #define CONSTC		(12)
+ #define CONSTD		(13)
+ #define CONSTE		(14)
+ #define CONSTF		(15)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ signed char c0 (vector signed char v)
+ {
+   return __builtin_vec_ext_v16qi (v, 0);
+ }
+ 
+ signed char c9 (vector signed char v)
+ {
+   return __builtin_vec_ext_v16qi (v, 9);
+ }
+ 
+ signed char c21 (vector signed char v)
+ {
+   return __builtin_vec_ext_v16qi (v, 21);
+ }
+ 
+ signed char c30 (vector signed char v)
+ {
+   return __builtin_vec_ext_v16qi (v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ signed char mc0 (vector signed char *vp)
+ {
+   return __builtin_vec_ext_v16qi (*vp, 0);
+ }
+ 
+ signed char mc9 (vector signed char *vp)
+ {
+   return __builtin_vec_ext_v16qi (*vp, 9);
+ }
+ 
+ signed char mc21 (vector signed char *vp)
+ {
+   return __builtin_vec_ext_v16qi (*vp, 21);
+ }
+ 
+ signed char mc30 (vector signed char *vp)
+ {
+   return __builtin_vec_ext_v16qi (*vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ signed char ci (vector signed char v, int i)
+ {
+   return __builtin_vec_ext_v16qi (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ signed char mci(vector signed char *vp, int i) {
+   return __builtin_vec_ext_v16qi (*vp, i);
+ }
+ 
+ 
+ int main (int argc, char *argv[]) {
+   vector signed char cv = { CONST0, CONST1, CONST2, CONST3,
+ 			    CONST4, CONST5, CONST6, CONST7,
+ 			    CONST8, CONST9, CONSTA, CONSTB,
+ 			    CONSTC, CONSTD, CONSTE, CONSTF };
+   signed char c;
+ 
+   c = c0 (cv);
+   if (c != CONST0)
+     abort ();
+ 
+   c = c9 (cv);
+   if (c != CONST9)
+     abort ();
+ 
+   c = c21 (cv);
+   if (c != CONST5)
+     abort ();
+ 
+   c = c30 (cv);
+   if (c != CONSTE)
+     abort ();
+ 
+   c = mc0 (&cv);
+   if (c != CONST0)
+     abort ();
+ 
+   c = mc9 (&cv);
+   if (c != CONST9)
+     abort ();
+ 
+   c = mc21 (&cv);
+   if (c != CONST5)
+     abort ();
+ 
+   c = mc30 (&cv);
+   if (c != CONSTE)
+     abort ();
+ 
+   c = ci (cv, 8);
+   if (c != CONST8)
+     abort ();
+ 
+   c = ci (cv, 13);
+   if (c != CONSTD)
+     abort ();
+ 
+   c = ci (cv, 23);
+   if (c != CONST7)
+     abort ();
+ 
+   c = ci (cv, 31);
+   if (c != CONSTF)
+     abort ();
+ 
+   c = mci (&cv, 5);
+   if (c != CONST5)
+     abort ();
+ 
+   c = mci (&cv, 12);
+   if (c != CONSTC)
+     abort ();
+ 
+   c = mci (&cv, 25);
+   if (c != CONST9)
+     abort ();
+ 
+   c = mci (&cv, 16);
+   if (c != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,164 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec -O3" } */
+ 
+ /* This test should run the same on any target that supports altivec/dfp
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ #define CONST8		(8)
+ #define CONST9		(9)
+ #define CONSTA		(10)
+ #define CONSTB		(11)
+ #define CONSTC		(12)
+ #define CONSTD		(13)
+ #define CONSTE		(14)
+ #define CONSTF		(15)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ signed char c0 (vector signed char v)
+ {
+   return __builtin_vec_ext_v16qi (v, 0);
+ }
+ 
+ signed char c9 (vector signed char v)
+ {
+   return __builtin_vec_ext_v16qi (v, 9);
+ }
+ 
+ signed char c21 (vector signed char v)
+ {
+   return __builtin_vec_ext_v16qi (v, 21);
+ }
+ 
+ signed char c30 (vector signed char v)
+ {
+   return __builtin_vec_ext_v16qi (v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ signed char mc0 (vector signed char *vp)
+ {
+   return __builtin_vec_ext_v16qi (*vp, 0);
+ }
+ 
+ signed char mc9 (vector signed char *vp)
+ {
+   return __builtin_vec_ext_v16qi (*vp, 9);
+ }
+ 
+ signed char mc21 (vector signed char *vp)
+ {
+   return __builtin_vec_ext_v16qi (*vp, 21);
+ }
+ 
+ signed char mc30 (vector signed char *vp)
+ {
+   return __builtin_vec_ext_v16qi (*vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ signed char ci (vector signed char v, int i)
+ {
+   return __builtin_vec_ext_v16qi (v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ signed char mci(vector signed char *vp, int i) {
+   return __builtin_vec_ext_v16qi (*vp, i);
+ }
+ 
+ 
+ int main (int argc, char *argv[]) {
+   vector signed char cv = { CONST0, CONST1, CONST2, CONST3,
+ 			    CONST4, CONST5, CONST6, CONST7,
+ 			    CONST8, CONST9, CONSTA, CONSTB,
+ 			    CONSTC, CONSTD, CONSTE, CONSTF };
+   signed char c;
+ 
+   c = c0 (cv);
+   if (c != CONST0)
+     abort ();
+ 
+   c = c9 (cv);
+   if (c != CONST9)
+     abort ();
+ 
+   c = c21 (cv);
+   if (c != CONST5)
+     abort ();
+ 
+   c = c30 (cv);
+   if (c != CONSTE)
+     abort ();
+ 
+   c = mc0 (&cv);
+   if (c != CONST0)
+     abort ();
+ 
+   c = mc9 (&cv);
+   if (c != CONST9)
+     abort ();
+ 
+   c = mc21 (&cv);
+   if (c != CONST5)
+     abort ();
+ 
+   c = mc30 (&cv);
+   if (c != CONSTE)
+     abort ();
+ 
+   c = ci (cv, 8);
+   if (c != CONST8)
+     abort ();
+ 
+   c = ci (cv, 13);
+   if (c != CONSTD)
+     abort ();
+ 
+   c = ci (cv, 23);
+   if (c != CONST7)
+     abort ();
+ 
+   c = ci (cv, 31);
+   if (c != CONSTF)
+     abort ();
+ 
+   c = mci (&cv, 5);
+   if (c != CONST5)
+     abort ();
+ 
+   c = mci (&cv, 12);
+   if (c != CONSTC)
+     abort ();
+ 
+   c = mci (&cv, 25);
+   if (c != CONST9)
+     abort ();
+ 
+   c = mci (&cv, 16);
+   if (c != CONST0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,164 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* This test should run the same on any target that supports altivec/vmx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ #define CONST8		(8)
+ #define CONST9		(9)
+ #define CONSTA		(10)
+ #define CONSTB		(11)
+ #define CONSTC		(12)
+ #define CONSTD		(13)
+ #define CONSTE		(14)
+ #define CONSTF		(15)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector signed char c0 (vector signed char v, signed char x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector signed char c9 (vector signed char v, signed char x)
+ {
+   return vec_insert (x, v, 9);
+ }
+ 
+ vector signed char c21 (vector signed char v, signed char x)
+ {
+   return vec_insert (x, v, 21);
+ }
+ 
+ vector signed char c30 (vector signed char v, signed char x)
+ {
+   return vec_insert (x, v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector signed char mc0 (vector signed char *vp, signed char x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector signed char mc9 (vector signed char *vp, signed char x)
+ {
+   return vec_insert (x, *vp, 9);
+ }
+ 
+ vector signed char mc21 (vector signed char *vp, signed char x)
+ {
+   return vec_insert (x, *vp, 21);
+ }
+ 
+ vector signed char mc30 (vector signed char *vp, signed char x)
+ {
+   return vec_insert (x, *vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector signed char ci (vector signed char v, int i, signed char x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector signed char mci(vector signed char *vp, int i, signed char x) {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ 
+ int main (int argc, char *argv[]) {
+   vector signed char cv = { CONST0, CONST1, CONST2, CONST3,
+ 			    CONST4, CONST5, CONST6, CONST7,
+ 			    CONST8, CONST9, CONSTA, CONSTB,
+ 			    CONSTC, CONSTD, CONSTE, CONSTF };
+   signed char c;
+ 
+   cv = c0 (cv, CONSTF);
+   if (cv [0] != CONSTF)
+     abort ();
+ 
+   cv = c9 (cv, CONST7);
+   if (cv [9] != CONST7)
+     abort ();
+ 
+   cv = c21 (cv, CONSTA);
+   if (cv [5] != CONSTA)
+     abort ();
+ 
+   cv = c30 (cv, CONSTC);
+   if (cv [14] != CONSTC)
+     abort ();
+ 
+   cv = mc0 (&cv, CONSTB);
+   if (cv [0] != CONSTB)
+     abort ();
+ 
+   cv = mc9 (&cv, CONST1);
+   if (cv [9] != CONST1)
+     abort ();
+ 
+   cv = mc21 (&cv, CONST7);
+   if (cv [5] != CONST7)
+     abort ();
+ 
+   cv = mc30 (&cv, CONST2);
+   if (cv [14] != CONST2)
+     abort ();
+ 
+   cv = ci (cv, 8, CONST4);
+   if (cv [8] != CONST4)
+     abort ();
+ 
+   cv = ci (cv, 13, CONSTB);
+   if (cv [13] != CONSTB)
+     abort ();
+ 
+   cv = ci (cv, 23, CONST3);
+   if (cv [7] != CONST3)
+     abort ();
+ 
+   cv = ci (cv, 31, CONST2);
+   if (cv [15] != CONST2)
+     abort ();
+ 
+   cv = mci (&cv, 5, CONST1);
+   if (cv [5] != CONST1)
+     abort ();
+ 
+   cv = mci (&cv, 12, CONST3);
+   if (cv [12] != CONST3)
+     abort ();
+ 
+   cv = mci (&cv, 25, CONST5);
+   if (cv [9] != CONST5)
+     abort ();
+ 
+   cv = mci (&cv, 16, CONSTD);
+   if (cv [0] != CONSTD)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,164 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vmx_hw } */
+ /* { dg-options "-maltivec -O3" } */
+ 
+ /* This test should run the same on any target that supports altivec/vmx
+    instructions.  Intentionally not specifying cpu in order to test
+    all code generation paths.  */
+ 
+ #include <altivec.h>
+ 
+ extern void abort (void);
+ 
+ #define CONST0		(0)
+ #define CONST1		(1)
+ #define CONST2		(2)
+ #define CONST3		(3)
+ #define CONST4		(4)
+ #define CONST5		(5)
+ #define CONST6		(6)
+ #define CONST7		(7)
+ #define CONST8		(8)
+ #define CONST9		(9)
+ #define CONSTA		(10)
+ #define CONSTB		(11)
+ #define CONSTC		(12)
+ #define CONSTD		(13)
+ #define CONSTE		(14)
+ #define CONSTF		(15)
+ 
+ 
+ /* Test that indices > length of vector are applied modulo the vector
+    length.  */
+ 
+ /* Test for vector residing in register.  */
+ vector signed char c0 (vector signed char v, signed char x)
+ {
+   return vec_insert (x, v, 0);
+ }
+ 
+ vector signed char c9 (vector signed char v, signed char x)
+ {
+   return vec_insert (x, v, 9);
+ }
+ 
+ vector signed char c21 (vector signed char v, signed char x)
+ {
+   return vec_insert (x, v, 21);
+ }
+ 
+ vector signed char c30 (vector signed char v, signed char x)
+ {
+   return vec_insert (x, v, 30);
+ }
+ 
+ /* Test for vector residing in memory.  */
+ vector signed char mc0 (vector signed char *vp, signed char x)
+ {
+   return vec_insert (x, *vp, 0);
+ }
+ 
+ vector signed char mc9 (vector signed char *vp, signed char x)
+ {
+   return vec_insert (x, *vp, 9);
+ }
+ 
+ vector signed char mc21 (vector signed char *vp, signed char x)
+ {
+   return vec_insert (x, *vp, 21);
+ }
+ 
+ vector signed char mc30 (vector signed char *vp, signed char x)
+ {
+   return vec_insert (x, *vp, 30);
+ }
+ 
+ /* Test the same with variable indices.  */
+ 
+ /* Test for variable selector and vector residing in register.  */
+ __attribute__((noinline))
+ vector signed char ci (vector signed char v, int i, signed char x)
+ {
+   return vec_insert (x, v, i);
+ }
+ 
+ /* Test for variable selector and vector residing in memory.  */
+ __attribute__((noinline))
+ vector signed char mci(vector signed char *vp, int i, signed char x) {
+   return vec_insert (x, *vp, i);
+ }
+ 
+ 
+ int main (int argc, char *argv[]) {
+   vector signed char cv = { CONST0, CONST1, CONST2, CONST3,
+ 			    CONST4, CONST5, CONST6, CONST7,
+ 			    CONST8, CONST9, CONSTA, CONSTB,
+ 			    CONSTC, CONSTD, CONSTE, CONSTF };
+   signed char c;
+ 
+   cv = c0 (cv, CONSTF);
+   if (cv [0] != CONSTF)
+     abort ();
+ 
+   cv = c9 (cv, CONST7);
+   if (cv [9] != CONST7)
+     abort ();
+ 
+   cv = c21 (cv, CONSTA);
+   if (cv [5] != CONSTA)
+     abort ();
+ 
+   cv = c30 (cv, CONSTC);
+   if (cv [14] != CONSTC)
+     abort ();
+ 
+   cv = mc0 (&cv, CONSTB);
+   if (cv [0] != CONSTB)
+     abort ();
+ 
+   cv = mc9 (&cv, CONST1);
+   if (cv [9] != CONST1)
+     abort ();
+ 
+   cv = mc21 (&cv, CONST7);
+   if (cv [5] != CONST7)
+     abort ();
+ 
+   cv = mc30 (&cv, CONST2);
+   if (cv [14] != CONST2)
+     abort ();
+ 
+   cv = ci (cv, 8, CONST4);
+   if (cv [8] != CONST4)
+     abort ();
+ 
+   cv = ci (cv, 13, CONSTB);
+   if (cv [13] != CONSTB)
+     abort ();
+ 
+   cv = ci (cv, 23, CONST3);
+   if (cv [7] != CONST3)
+     abort ();
+ 
+   cv = ci (cv, 31, CONST2);
+   if (cv [15] != CONST2)
+     abort ();
+ 
+   cv = mci (&cv, 5, CONST1);
+   if (cv [5] != CONST1)
+     abort ();
+ 
+   cv = mci (&cv, 12, CONST3);
+   if (cv [12] != CONST3)
+     abort ();
+ 
+   cv = mci (&cv, 25, CONST5);
+   if (cv [9] != CONST5)
+     abort ();
+ 
+   cv = mci (&cv, 16, CONSTD);
+   if (cv [0] != CONSTD)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/riscv/pr93202.c gcc-8.4.0/gcc/testsuite/gcc.target/riscv/pr93202.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/riscv/pr93202.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/riscv/pr93202.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,10 ----
+ /* PR inline-asm/93202 */
+ /* { dg-do compile { target fpic } } */
+ /* { dg-options "-fpic" } */
+ 
+ void
+ foo (void)
+ {
+   asm volatile ("%h0" :: "i" (&foo));	/* { dg-error "invalid use of '%h'" } */
+   asm volatile ("%R0" :: "i" (&foo));	/* { dg-error "invalid use of '%R'" } */
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/riscv/promote-type-for-libcall.c gcc-8.4.0/gcc/testsuite/gcc.target/riscv/promote-type-for-libcall.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/riscv/promote-type-for-libcall.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/riscv/promote-type-for-libcall.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do run } */
+ /* { dg-options "-O1 -ftree-slp-vectorize -funroll-loops" } */
+ 
+ #include <stdio.h>
+ #include <stdlib.h>
+ #define N 4
+ volatile float f[N];
+ int x[N] __attribute__((aligned(8)));
+ int main() {
+   int i;
+   x[0] = -1;
+   x[1] = 2;
+   x[2] = -2;
+   x[3] = 2;
+ 
+   for (i=0;i<N;++i){
+     f[i] = x[i];
+   }
+ 
+   if (f[0] != -1.0f) {
+     abort();
+   }
+ 
+   if (f[1] != 2.0f) {
+     abort();
+   }
+ 
+   if (f[2] != -2.0f) {
+     abort();
+   }
+ 
+   if (f[3] != 2.0f) {
+     abort();
+   }
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/s390/pr89775-1.c gcc-8.4.0/gcc/testsuite/gcc.target/s390/pr89775-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/s390/pr89775-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/s390/pr89775-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,17 ----
+ /* PR target/89775 */
+ /* { dg-do run } */
+ /* { dg-options "-O0 -fomit-frame-pointer" } */
+ /* { dg-additional-sources "pr89775-2.c" } */
+ 
+ register void *sp __asm ("15");
+ 
+ __attribute__((noipa)) int
+ foo (const char *a, const char *b)
+ {
+   while (1)
+     {
+       char c = *a++;
+       if (c != *b++) return 0;
+       if (c == '\0') return 1;
+     }
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/s390/pr89775-2.c gcc-8.4.0/gcc/testsuite/gcc.target/s390/pr89775-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/s390/pr89775-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/s390/pr89775-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,25 ----
+ /* PR target/89775 */
+ /* { dg-do compile } */
+ 
+ extern int foo (const char *, const char *);
+ 
+ __attribute__((noipa)) void
+ bar (const char *p)
+ {
+   static const char *x;
+   if (!x)
+     x = p;
+   else if (p != x)
+     __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+   char a[8] = "abcdefg";
+   bar (a);
+   if (foo (a, a) != 1)
+     __builtin_abort ();
+   bar (a);
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/s390/pr93908.c gcc-8.4.0/gcc/testsuite/gcc.target/s390/pr93908.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/s390/pr93908.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/s390/pr93908.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,5 ----
+ /* PR rtl-optimization/93908 */
+ /* { dg-do run { target s390_zEC12_hw } } */
+ /* { dg-options "-O2 -march=zEC12 -mtune=z13" } */
+ 
+ #include "../../gcc.c-torture/execute/pr93908.c"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/s390/vector/pr92950.c gcc-8.4.0/gcc/testsuite/gcc.target/s390/vector/pr92950.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/s390/vector/pr92950.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/s390/vector/pr92950.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -mzarch -march=z13" } */
+ 
+ struct a {
+   int b;
+   char c;
+ };
+ struct a d = {1, 16};
+ struct a *e = &d;
+ 
+ int f = 0;
+ 
+ int main() {
+   struct a g = {0, 0 };
+   f = 0;
+ 
+   for (; f <= 1; f++) {
+     g = d;
+     *e = g;
+   }
+ 
+   if (d.c != 16)
+     __builtin_abort();
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c gcc-8.4.0/gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -mzarch -march=z13 --save-temps" } */
+ 
+ /* { dg-final { scan-assembler-times "veslf" 1 } } */
+ 
+ typedef __attribute__((vector_size(16))) signed int v4si;
+ 
+ v4si __attribute__((noinline,noclone))
+ shift_left_by_scalar (v4si in, int shift_count)
+ {
+   return in << (3 + shift_count);
+ }
+ 
+ int
+ main ()
+ {
+   v4si a = { 1, 2, 3, 4 };
+   v4si result = shift_left_by_scalar (a, 1);
+ 
+   if (result[1] != 32)
+     __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/s390/zvector/vec-addc-u128.c gcc-8.4.0/gcc/testsuite/gcc.target/s390/zvector/vec-addc-u128.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/s390/zvector/vec-addc-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/s390/zvector/vec-addc-u128.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile { target { s390*-*-* } } } */
+ /* { dg-options "-O3 -mzarch -march=z13 -mzvector -fno-asynchronous-unwind-tables" } */
+ 
+ #include <vecintrin.h>
+ 
+ vector unsigned char test(void)
+ {
+    vector unsigned char a = { 0 };
+    return __builtin_s390_vec_addc_u128 (a, a);
+ }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-1.c gcc-8.4.0/gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-1.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-1.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,45 ----
+ /* { dg-do compile { target { s390*-*-* } } } */
+ /* { dg-options "-O3 -mzarch -march=z14 -mzvector" } */
+ 
+ #include <vecintrin.h>
+ 
+ vector float
+ foo (float *a)
+ {
+   return vec_xl (0, a);
+ }
+ 
+ vector float
+ bar (const float *a)
+ {
+   return vec_xl (0, a);
+ }
+ 
+ void
+ baz (float *f, vector float a)
+ {
+   vec_xst (a, 0, f);
+ }
+ 
+ vector float
+ foo2 (float *a)
+ {
+   return vec_xlw4 (0, a);
+ }
+ 
+ vector float
+ bar2 (const float *a)
+ {
+   return vec_xlw4 (0, a);
+ }
+ 
+ void
+ baz2 (float *f, vector float a)
+ {
+   vec_xstw4 (a, 0, f);
+ }
+ 
+ /* Make sure no alignment hints are generated.  */
+ 
+ /* { dg-final { scan-assembler-not "vl.*,3" } } */
+ /* { dg-final { scan-assembler-not "vst.*,3" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-2.c gcc-8.4.0/gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-2.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-2.c	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,48 ----
+ /* { dg-do compile { target { s390*-*-* } } } */
+ /* { dg-options "-O3 -mzarch -march=z14 -mzvector" } */
+ 
+ #include <vecintrin.h>
+ 
+ typedef float __attribute__((aligned(8))) float_aligned;
+ 
+ vector float
+ foo (float_aligned *a)
+ {
+   return vec_xl (0, a);
+ }
+ 
+ vector float
+ bar (const float_aligned *a)
+ {
+   return vec_xl (0, a);
+ }
+ 
+ void
+ baz (float_aligned *f, vector float a)
+ {
+   vec_xst (a, 0, f);
+ }
+ 
+ vector float
+ foo2 (float_aligned *a)
+ {
+   return vec_xlw4 (0, a);
+ }
+ 
+ vector float
+ bar2 (const float_aligned *a)
+ {
+   return vec_xlw4 (0, a);
+ }
+ 
+ void
+ baz2 (float_aligned *f, vector float a)
+ {
+   vec_xstw4 (a, 0, f);
+ }
+ 
+ /* Make sure alignment hints are generated if the source or target
+    operand is properly aligned.  */
+ 
+ /* { dg-final { scan-assembler-times "vl\t%v\[0-9\]*,0\\(%r2\\),3" 4 } } */
+ /* { dg-final { scan-assembler-times "vst\t%v\[0-9\]*,0\\(%r2\\),3" 2 } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/sparc/20161111-1.c gcc-8.4.0/gcc/testsuite/gcc.target/sparc/20161111-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/sparc/20161111-1.c	Fri Nov 11 22:38:33 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/sparc/20161111-1.c	Wed Mar  4 08:30:02 2020
*************** unsigned char ee_isdigit2(unsigned int i
*** 14,17 ****
    return retval;
  }
  
! /* { dg-final { scan-assembler-not "and\t%" } } */
--- 14,17 ----
    return retval;
  }
  
! /* { dg-final { scan-assembler-not "and\t%" { xfail *-*-* } } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/sparc/overflow-1.c gcc-8.4.0/gcc/testsuite/gcc.target/sparc/overflow-1.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/sparc/overflow-1.c	Fri Oct 21 09:16:29 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/sparc/overflow-1.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O -mcpu=v8" } */
  /* { dg-require-effective-target ilp32 } */
  
  #include <stdbool.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O -fno-pie -mcpu=v8" } */
  /* { dg-require-effective-target ilp32 } */
  
  #include <stdbool.h>
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/sparc/overflow-2.c gcc-8.4.0/gcc/testsuite/gcc.target/sparc/overflow-2.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/sparc/overflow-2.c	Fri Oct 21 09:16:29 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/sparc/overflow-2.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O -mcpu=v8" } */
  /* { dg-require-effective-target ilp32 } */
  
  #include <stdbool.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O -fno-pie -mcpu=v8" } */
  /* { dg-require-effective-target ilp32 } */
  
  #include <stdbool.h>
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/sparc/overflow-3.c gcc-8.4.0/gcc/testsuite/gcc.target/sparc/overflow-3.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/sparc/overflow-3.c	Fri Oct 28 21:04:51 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/sparc/overflow-3.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O" } */
  /* { dg-require-effective-target lp64 } */
  
  #include <stdbool.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O -fno-pie" } */
  /* { dg-require-effective-target lp64 } */
  
  #include <stdbool.h>
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/sparc/overflow-4.c gcc-8.4.0/gcc/testsuite/gcc.target/sparc/overflow-4.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/sparc/overflow-4.c	Wed Jun 14 11:22:19 2017
--- gcc-8.4.0/gcc/testsuite/gcc.target/sparc/overflow-4.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O -mno-vis3" } */
  /* { dg-require-effective-target lp64 } */
  
  #include <stdbool.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O -fno-pie -mno-vis3" } */
  /* { dg-require-effective-target lp64 } */
  
  #include <stdbool.h>
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/sparc/overflow-5.c gcc-8.4.0/gcc/testsuite/gcc.target/sparc/overflow-5.c
*** gcc-8.3.0/gcc/testsuite/gcc.target/sparc/overflow-5.c	Fri Oct 28 21:04:51 2016
--- gcc-8.4.0/gcc/testsuite/gcc.target/sparc/overflow-5.c	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O -mvis3" } */
  /* { dg-require-effective-target lp64 } */
  
  #include <stdbool.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O -fno-pie -mvis3" } */
  /* { dg-require-effective-target lp64 } */
  
  #include <stdbool.h>
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp gcc-8.4.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp
*** gcc-8.3.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp	Wed Mar  4 08:30:02 2020
*************** set additional_flags "-W -Wall -mavx512f
*** 37,43 ****
  foreach src [lsort [glob -nocomplain $srcdir/$subdir/test_*.c]] {
      if {[runtest_file_p $runtests $src]} {
  	if { ([istarget *-*-darwin*]) } then {
- 	    # FIXME: Darwin isn't tested.
  	    c-torture-execute [list $src \
  				    $srcdir/$subdir/asm-support-darwin.s] \
  				    $additional_flags
--- 37,42 ----
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s gcc-8.4.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s
*** gcc-8.3.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,93 ----
+ 	.text
+ 	.p2align 4,,15
+ 	.globl _snapshot
+ _snapshot:
+ LFB3:
+ 	movq	%rax, _rax(%rip)
+ 	movq	%rbx, _rbx(%rip)
+ 	movq	%rcx, _rcx(%rip)
+ 	movq	%rdx, _rdx(%rip)
+ 	movq	%rdi, _rdi(%rip)
+ 	movq	%rsi, _rsi(%rip)
+ 	movq	%rbp, _rbp(%rip)
+ 	movq	%rsp, _rsp(%rip)
+ 	movq	%r8, _r8(%rip)
+ 	movq	%r9, _r9(%rip)
+ 	movq	%r10, _r10(%rip)
+ 	movq	%r11, _r11(%rip)
+ 	movq	%r12, _r12(%rip)
+ 	movq	%r13, _r13(%rip)
+ 	movq	%r14, _r14(%rip)
+ 	movq	%r15, _r15(%rip)
+ 	vmovdqu32 %zmm0, _zmm_regs+0(%rip)
+ 	vmovdqu32 %zmm1, _zmm_regs+64(%rip)
+ 	vmovdqu32 %zmm2, _zmm_regs+128(%rip)
+ 	vmovdqu32 %zmm3, _zmm_regs+192(%rip)
+ 	vmovdqu32 %zmm4, _zmm_regs+256(%rip)
+ 	vmovdqu32 %zmm5, _zmm_regs+320(%rip)
+ 	vmovdqu32 %zmm6, _zmm_regs+384(%rip)
+ 	vmovdqu32 %zmm7, _zmm_regs+448(%rip)
+ 	vmovdqu32 %zmm8, _zmm_regs+512(%rip)
+ 	vmovdqu32 %zmm9, _zmm_regs+576(%rip)
+ 	vmovdqu32 %zmm10, _zmm_regs+640(%rip)
+ 	vmovdqu32 %zmm11, _zmm_regs+704(%rip)
+ 	vmovdqu32 %zmm12, _zmm_regs+768(%rip)
+ 	vmovdqu32 %zmm13, _zmm_regs+832(%rip)
+ 	vmovdqu32 %zmm14, _zmm_regs+896(%rip)
+ 	vmovdqu32 %zmm15, _zmm_regs+960(%rip)
+ 	vmovdqu32 %zmm16, _zmm_regs+1024(%rip)
+ 	vmovdqu32 %zmm17, _zmm_regs+1088(%rip)
+ 	vmovdqu32 %zmm18, _zmm_regs+1152(%rip)
+ 	vmovdqu32 %zmm19, _zmm_regs+1216(%rip)
+ 	vmovdqu32 %zmm20, _zmm_regs+1280(%rip)
+ 	vmovdqu32 %zmm21, _zmm_regs+1344(%rip)
+ 	vmovdqu32 %zmm22, _zmm_regs+1408(%rip)
+ 	vmovdqu32 %zmm23, _zmm_regs+1472(%rip)
+ 	vmovdqu32 %zmm24, _zmm_regs+1536(%rip)
+ 	vmovdqu32 %zmm25, _zmm_regs+1600(%rip)
+ 	vmovdqu32 %zmm26, _zmm_regs+1664(%rip)
+ 	vmovdqu32 %zmm27, _zmm_regs+1728(%rip)
+ 	vmovdqu32 %zmm28, _zmm_regs+1792(%rip)
+ 	vmovdqu32 %zmm29, _zmm_regs+1856(%rip)
+ 	vmovdqu32 %zmm30, _zmm_regs+1920(%rip)
+ 	vmovdqu32 %zmm31, _zmm_regs+1984(%rip)
+ 	jmp	*_callthis(%rip)
+ LFE3:
+ 
+ 	.p2align 4,,15
+ 	.globl _snapshot_ret
+ _snapshot_ret:
+ 	movq	%rdi, _rdi(%rip)
+ 	subq	$8, %rsp
+ 	call	*_callthis(%rip)
+ 	addq	$8, %rsp
+ 	movq	%rax, _rax(%rip)
+ 	movq	%rdx, _rdx(%rip)
+ 	vmovdqu32	%zmm0, _zmm_regs+0(%rip)
+ 	vmovdqu32	%zmm1, _zmm_regs+64(%rip)
+ 	fstpt	_x87_regs(%rip)
+ 	fstpt	_x87_regs+16(%rip)
+ 	fldt	_x87_regs+16(%rip)
+ 	fldt	_x87_regs(%rip)
+ 	ret
+ 
+ 	.comm	_callthis,8,8
+ 	.comm	_rax,8,8
+ 	.comm	_rbx,8,8
+ 	.comm	_rcx,8,8
+ 	.comm	_rdx,8,8
+ 	.comm	_rsi,8,8
+ 	.comm	_rdi,8,8
+ 	.comm	_rsp,8,8
+ 	.comm	_rbp,8,8
+ 	.comm	_r8,8,8
+ 	.comm	_r9,8,8
+ 	.comm	_r10,8,8
+ 	.comm	_r11,8,8
+ 	.comm	_r12,8,8
+ 	.comm	_r13,8,8
+ 	.comm	_r14,8,8
+ 	.comm	_r15,8,8
+ 	.comm	_zmm_regs,2048,64
+ 	.comm	_x87_regs,128,32
+ 	.comm   _volatile_var,8,8
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/allocate_with_mold_3.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/allocate_with_mold_3.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/allocate_with_mold_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/allocate_with_mold_3.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,21 ----
+ ! { dg-do  run }
+ ! PR fortran/89174 - this used to segfault on execution.
+ ! Test case by Neil Carlson.
+ module mod
+   type :: array_data
+     class(*), allocatable :: mold
+   contains
+     procedure :: push
+   end type
+ contains
+   subroutine push(this, value)
+     class(array_data), intent(inout) :: this
+     class(*), intent(in) :: value
+     allocate(this%mold, mold=value) ! <== SEGFAULTS HERE
+   end subroutine
+ end module
+ 
+ use mod
+ type(array_data) :: foo
+ call foo%push(42)
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/altreturn_10.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/altreturn_10.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/altreturn_10.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/altreturn_10.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,19 ----
+ ! { dg-do compile }
+ ! { dg-options -Os }
+ ! PR 78865 - this used to ICE.
+ program p
+    call sub (3)
+ end
+ subroutine sub (x)
+    integer :: x, i, n
+    do i = 1, x
+       if ( n /= 0 ) stop
+       call sub2
+    end do
+    print *, x, n
+ end
+ subroutine sub2
+    call sub (*99) ! { dg-error "Unexpected alternate return specifier" }
+    call sub (99.) ! { dg-warning "Type mismatch in argument" }
+ 99 stop
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/altreturn_9_0.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/altreturn_9_0.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/altreturn_9_0.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/altreturn_9_0.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,10 ----
+ ! { dg-do  run }
+ ! { dg-options -std=gnu }
+ ! { dg-additional-sources altreturn_9_1.f90 }
+ ! PR 89496 - wrong type for alternate return was generated
+ 
+ program main
+   call sub(10, *10, 20)
+   stop 1
+ 10 continue
+ end program main
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/altreturn_9_1.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/altreturn_9_1.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/altreturn_9_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/altreturn_9_1.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=gnu" }
+ ! See altreturn_9_0.f90
+ subroutine sub(i, *, j)
+   if (i == 10 .and. j == 20) return 1
+   return
+ end subroutine sub
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/arith_divide_2.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/arith_divide_2.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/arith_divide_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/arith_divide_2.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! PR 92961 - this used to ICE. Original test case by Gerhard Steinmetz.
+ program p
+    integer :: a((0)/0)    ! { dg-error "Division by zero" }
+    integer :: b(0/(0))    ! { dg-error "Division by zero" }
+    integer :: c((0)/(0))  ! { dg-error "Division by zero" }
+    integer :: d(0/0)      ! { dg-error "Division by zero" }
+    integer :: x = ubound(a,1) ! { dg-error "must be an array" }
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/assign_10.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/assign_10.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/assign_10.f90	Fri Jan 25 20:08:58 2019
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/assign_10.f90	Wed Mar  4 08:30:02 2020
*************** end
*** 24,27 ****
  ! Note that it is the kind conversion that generates the temp.
  !
  ! { dg-final { scan-tree-dump-times "parm" 20 "original" } }
! ! { dg-final { scan-tree-dump-times "atmp" 18 "original" } }
--- 24,27 ----
  ! Note that it is the kind conversion that generates the temp.
  !
  ! { dg-final { scan-tree-dump-times "parm" 20 "original" } }
! ! { dg-final { scan-tree-dump-times "atmp" 20 "original" } }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/associate_48.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/associate_48.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/associate_48.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/associate_48.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,41 ----
+ ! { dg=do run }
+ !
+ ! Test the fix for PR90498.
+ !
+ ! Contributed by Vladimir Fuka  <vladimir.fuka@gmail.com>
+ !
+   type field_names_a
+     class(*), pointer :: var(:) =>null()
+   end type
+ 
+   type(field_names_a),pointer :: a(:)
+   allocate (a(2))
+ 
+   allocate (a(1)%var(2), source = ["hello"," vlad"])
+   allocate (a(2)%var(2), source = ["HELLO"," VLAD"])
+   call s(a)
+   deallocate (a(1)%var)
+   deallocate (a(2)%var)
+   deallocate (a)
+ contains
+   subroutine s(a)
+ 
+     type(field_names_a) :: a(:)
+ 
+     select type (var => a(1)%var)
+       type is (character(*))
+         if (any (var .ne. ["hello"," vlad"])) stop 1
+       class default
+         stop
+     end select
+ 
+     associate (var => a(2)%var)
+       select type (var)
+         type is (character(*))
+           if (any (var .ne. ["HELLO"," VLAD"])) stop 2
+         class default
+           stop
+       end select
+     end associate
+   end
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/associate_49.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/associate_49.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/associate_49.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/associate_49.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,34 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR91588, in which the declaration of 'a' caused
+ ! an ICE.
+ !
+ ! Contributed by Gerhardt Steinmetz  <gscfq@t-online.de>
+ !
+ program p
+    character(4), parameter :: parm = '7890'
+    associate (z => '1234')
+       block
+          integer(len(z)) :: a
+          if (kind(a) .ne. 4) stop 1
+       end block
+    end associate
+    associate (z => '123')
+       block
+          integer(len(z)+1) :: a
+          if (kind(a) .ne. 4) stop 2
+       end block
+    end associate
+    associate (z => 1_8)
+       block
+          integer(kind(z)) :: a
+          if (kind(a) .ne. 8) stop 3
+       end block
+    end associate
+    associate (z => parm)
+       block
+          integer(len(z)) :: a
+          if (kind(a) .ne. 4) stop 4
+       end block
+    end associate
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/assumed_type_2.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/assumed_type_2.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/assumed_type_2.f90	Sat Feb 17 14:05:34 2018
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/assumed_type_2.f90	Wed Mar  4 08:30:02 2020
*************** end
*** 157,163 ****
  ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) array_class_t1_alloc._data.data" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) \\(array_class_t1_ptr._data.dat" 1 "original" } }
  
! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 3 "original" } }
  ! { dg-final { scan-tree-dump-times " = _gfortran_internal_pack \\(&parm" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(&array_int\\)" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(real\\(kind=4\\).0:. . restrict\\) array_real_alloc.data" 1 "original" } }
--- 157,163 ----
  ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) array_class_t1_alloc._data.data" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) \\(array_class_t1_ptr._data.dat" 1 "original" } }
  
! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 4 "original" } }
  ! { dg-final { scan-tree-dump-times " = _gfortran_internal_pack \\(&parm" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(&array_int\\)" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(real\\(kind=4\\).0:. . restrict\\) array_real_alloc.data" 1 "original" } }
*************** end
*** 166,172 ****
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) parm" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t2.0:. . restrict\\) array_t2_alloc.data\\);" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. . restrict\\) array_class_t1_alloc._data.data\\);" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) array_class_t1_ptr._data.data\\);" 1 "original" } }
  
  ! { dg-final { scan-tree-dump-times "sub_array_shape \\(&array_real_alloc," 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_shape \\(&array_char_ptr," 1 "original" } }
--- 166,172 ----
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) parm" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t2.0:. . restrict\\) array_t2_alloc.data\\);" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. . restrict\\) array_class_t1_alloc._data.data\\);" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) array_class_t1_ptr._data.data\\);" 0 "original" } }
  
  ! { dg-final { scan-tree-dump-times "sub_array_shape \\(&array_real_alloc," 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_shape \\(&array_char_ptr," 1 "original" } }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/binding_label_tests_30.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_30.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/binding_label_tests_30.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_30.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do compile }
+ ! Make sure this error is flagged.
+ subroutine foo() ! { dg-error "is already being used as a SUBROUTINE" }
+ end subroutine foo
+ 
+ subroutine bar() bind(C,name="foo") ! { dg-error "is already being used as a SUBROUTINE" }
+ end subroutine bar
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/binding_label_tests_31.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_31.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/binding_label_tests_31.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_31.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,19 ----
+ ! { dg-do compile }
+ ! PR fortran/66695 - this used to ICE.
+ ! Original test case by Vladimir Fuka.
+ module mod
+   implicit none
+ contains
+     integer function F()
+     end function
+ end module
+     
+ module mod_C
+   use mod
+   implicit none
+ contains
+   subroutine s()  bind(C, name="f")
+     integer :: x
+       x = F()
+   end subroutine
+ end module
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/binding_label_tests_32.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_32.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/binding_label_tests_32.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_32.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,35 ----
+ ! { dg-do run }
+ ! PR 77746 - this used to crash during execution.
+ ! Original test case by Vladimir Fuka.
+ module first
+   private
+   public execute
+   
+   interface execute
+     module procedure random_name
+   end interface
+   
+ contains
+ 
+   subroutine random_name()
+   end subroutine
+ end module
+ 
+ module test
+   use first
+ 
+   implicit none
+ 
+ contains
+ 
+   subroutine p_execute(i)  bind(C, name="random_name")
+     integer :: i
+ 
+     call execute()
+   end subroutine
+   
+ end module
+ 
+   use test
+   call p_execute(1)
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/binding_label_tests_33.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_33.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/binding_label_tests_33.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_33.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,39 ----
+ ! { dg-do run }
+ ! PR 79485 - used to crash because the wrong routine was called.
+ module fmod1
+ 
+   contains
+ 
+   subroutine foo(i)
+     implicit none
+ 
+     integer, intent(inout) :: i
+ 
+     i=i+1
+ 
+   end subroutine foo
+ 
+ end module fmod1
+ 
+ module fmod2
+   use iso_c_binding
+   use fmod1, only : foo_first => foo
+ 
+   contains
+ 
+   subroutine foo(i) bind(c)
+     implicit none
+ 
+     integer, intent(inout) :: i
+ 
+     i=i+2
+     call foo_first(i)
+ 
+   end subroutine foo
+ 
+ end module fmod2
+ 
+   use fmod2
+   
+   call foo(i)
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/blockdata_11.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/blockdata_11.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/blockdata_11.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/blockdata_11.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,33 ----
+ ! { dg-do run }
+ ! PR 84394 - this used to complain about private procedures in
+ ! BLOCK data.
+ module mod1
+    implicit none
+    type :: type1
+       integer :: i1
+    end type type1
+ end module
+ 
+ module mod2
+    implicit none
+    contains
+       subroutine sub1
+          integer vals
+          common /block1/ vals(5)
+          if (any(vals /= [1, 2, 3, 4, 5])) stop 1
+       end subroutine
+ end module
+ 
+ block data blkdat
+   use mod1
+   integer vals
+   common /block1/ vals(5)
+   data vals/1, 2, 3, 4, 5/
+ end block data blkdat
+ 
+ program main
+   use mod2, only: sub1
+   implicit none
+   call sub1
+ end program
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/c_ptr_tests_19.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/c_ptr_tests_19.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/c_ptr_tests_19.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/c_ptr_tests_19.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,36 ----
+ ! { dg-do run }
+ 
+ ! PR 71544 - this failed with some optimization options due to a
+ ! pointer not being marked as escaping.
+ 
+ module store_cptr
+     use, intrinsic :: iso_c_binding
+     implicit none
+     public
+     type(c_ptr), save :: cptr
+ end module store_cptr
+ 
+ subroutine init()
+     use, intrinsic :: iso_c_binding
+     implicit none
+     integer(c_int), pointer :: a
+     allocate(a)
+     call save_cptr(c_loc(a))
+     a = 100
+ end subroutine init
+ 
+ subroutine save_cptr(cptr_in)
+     use store_cptr
+     implicit none
+     type(c_ptr), intent(in) :: cptr_in
+     cptr = cptr_in
+ end subroutine save_cptr
+ 
+ program init_fails
+     use store_cptr
+     implicit none
+     integer(c_int), pointer :: val
+     call init()
+     call c_f_pointer(cptr,val)
+     if (val /= 100) stop 1
+ end program init_fails
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/char_pointer_assign_6.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/char_pointer_assign_6.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/char_pointer_assign_6.f90	Fri Dec 24 08:42:04 2010
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/char_pointer_assign_6.f90	Wed Mar  4 08:30:02 2020
*************** program main
*** 6,11 ****
    character (len=4) :: c
    s1 = 'abcd'
    p1 => s1(2:3) ! { dg-error "Unequal character lengths \\(20/2\\)" }
!   p1 => c(1:) ! { dg-error "Unequal character lengths \\(20/4\\)" }
!   p1 => c(:4) ! { dg-error "Unequal character lengths \\(20/4\\)" }
  end
--- 6,11 ----
    character (len=4) :: c
    s1 = 'abcd'
    p1 => s1(2:3) ! { dg-error "Unequal character lengths \\(20/2\\)" }
!   p1 => c(1:) ! { dg-error "Pointer assignment target" }
!   p1 => c(:4) ! { dg-error "Pointer assignment target" }
  end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/char_result_19.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/char_result_19.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/char_result_19.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/char_result_19.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,24 ----
+ ! { dg-do preprocess }
+ ! { dg-additional-options "-cpp" }
+ !
+ ! Test the fix for PR86248
+ !
+ ! Contributed by Bill Long  <longb@cray.com>
+ !
+ program test
+   use test_module
+   implicit none
+   integer :: i
+   character(:), allocatable :: chr
+   do i = 0, 2
+     chr = func_1 (i)
+     select case (i)
+       case (0)
+         if (chr .ne. 'el0') stop i
+       case (1)
+         if (chr .ne. 'el11') stop i
+       case (2)
+         if (chr .ne. 'el2') stop i
+     end select
+   end do
+ end program test
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/char_result_mod_19.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/char_result_mod_19.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/char_result_mod_19.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/char_result_mod_19.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,18 ----
+ ! { dg-do  run }
+ ! { dg-additional-sources char_result_19.f90 }
+ !
+ ! Module for char_result_19.f90
+ ! Tests fix for PR86248
+ !
+ module test_module
+   implicit none
+   public :: func_1
+   private
+   character(len=*),dimension(0:2),parameter :: darray = (/"el0 ","el11","el2 "/)
+ contains
+   function func_1 (func_1_input) result(f)
+     integer, intent(in) :: func_1_input
+     character(len = len_trim (darray(func_1_input))) :: f
+     f = darray(func_1_input)
+   end function func_1
+ end module test_module
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/charlen_17.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/charlen_17.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/charlen_17.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/charlen_17.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,14 ----
+ ! { dg-do compile }
+ ! PR 87673 - used to cause errors about non-pure functions.
+ 
+ module x
+   implicit none
+ contains
+   pure function foo() result(res)
+     character(len=:), allocatable :: res
+     allocate (character(bar()) :: res)
+   end function foo
+   pure integer function bar()
+     bar = 1
+   end function bar
+ end module x
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/class_70.f03 gcc-8.4.0/gcc/testsuite/gfortran.dg/class_70.f03
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/class_70.f03	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/class_70.f03	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,38 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR57284 - [OOP] ICE with find_array_spec for polymorphic
+ ! arrays. Once thw ICE was fixed, work was needed to fix a segfault while
+ ! determining the size of 'z'.
+ !
+ ! Contributed by Lorenz Huedepohl  <bugs@stellardeath.org>
+ !
+ module testmod
+   type type_t
+     integer :: idx
+   end type type_t
+   type type_u
+      type(type_t), allocatable :: cmp(:)
+   end type
+ contains
+   function foo(a, b) result(add)
+     class(type_t), intent(in) :: a(:), b(size(a))
+     type(type_t) :: add(size(a))
+     add%idx = a%idx + b%idx
+   end function
+ end module testmod
+ program p
+   use testmod
+   class(type_t), allocatable, dimension(:) :: x, y, z
+   class(type_u), allocatable :: w
+   allocate (x, y, source = [type_t (1), type_t(2)])
+   z = foo (x, y)
+   if (any (z%idx .ne. [2, 4])) stop 1
+ 
+ ! Try something a bit more complicated than the original.
+ 
+   allocate (w)
+   allocate (w%cmp, source = [type_t (2), type_t(3)])
+   z = foo (w%cmp, y)
+   if (any (z%idx .ne. [3, 5])) stop 2
+   deallocate (w, x, y, z)
+ end program
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/coarray/caf.exp gcc-8.4.0/gcc/testsuite/gfortran.dg/coarray/caf.exp
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/coarray/caf.exp	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/coarray/caf.exp	Wed Mar  4 08:30:02 2020
*************** proc dg-compile-aux-modules { args } {
*** 51,61 ****
      global gfortran_test_path
      global gfortran_aux_module_flags
      if { [llength $args] != 2 } {
! 	error "dg-set-target-env-var: needs one argument"
  	return
      }
      dg-test $gfortran_test_path/[lindex $args 1] "" $gfortran_aux_module_flags
!     # cleanup-modules isn't intentionally invoked here.
  }
  
  # Add -latomic only where supported.  Assume built-in support elsewhere.
--- 51,71 ----
      global gfortran_test_path
      global gfortran_aux_module_flags
      if { [llength $args] != 2 } {
! 	error "dg-compile-aux-modules: needs one argument"
  	return
      }
+ 
+     set level [info level]
+     if { [info procs dg-save-unknown] != [list] } {
+ 	rename dg-save-unknown dg-save-unknown-level-$level
+     }
+ 
      dg-test $gfortran_test_path/[lindex $args 1] "" $gfortran_aux_module_flags
!     # cleanup-modules is intentionally not invoked here.
! 
!     if { [info procs dg-save-unknown-level-$level] != [list] } {
! 	rename dg-save-unknown-level-$level dg-save-unknown
!     }
  }
  
  # Add -latomic only where supported.  Assume built-in support elsewhere.
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/coarray/codimension_3.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/coarray/codimension_3.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/coarray/codimension_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/coarray/codimension_3.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,76 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/84135
+ !
+ ! Co-contributed by G. Steinmetz
+ !
+ ! Ensure that coarray shape remains correct
+ ! after merging the shape from 'dimension'
+ !
+ program p
+    integer :: i
+    integer, dimension(3) :: x[2,*]
+    data (x(i:i+2:i+1), i=1,2) /1,2,3/
+    integer, dimension(3) :: y[2,3,-3:4,5,7:*] = [1,2,3]
+    integer :: z, z2[2:4,7:9,-2:2,-7:8,-4:*]
+    codimension :: z[2:4,7:9,-2:2,-7:8,-4:*]
+    integer, codimension[1:*] :: z3[2:4,7:9,-2:2,-7:8,-4:*]
+    dimension :: z(1:2,-3:-2,7:7), z2(1:2,-3:-2,7:7), z3(1:2,-3:-2,7:7)
+    integer, codimension[2:4,7:9,-2:2,-7:8,-4:*], dimension(1:2,-3:-2,7:7) :: z4
+    integer, codimension[*], dimension(1:2,-3:-2,7:7) :: z5[2:4,7:9,-2:2,-7:8,-4:*]
+    integer, codimension[2:4,7:9,-2:2,-7:8,-4:*], dimension(3) :: z6(1:2,-3:-2,7:7)
+    integer, codimension[*], dimension(4) :: z7(1:2,-3:-2,7:7)[2:4,7:9,-2:2,-7:8,-4:*]
+ 
+    if (any (lcobound(x) /= [1, 1])) stop 1
+    if (any (lcobound(y) /= [1, 1, -3, 1, 7])) stop 3
+    if (any (lcobound(z) /= [2,7,-2,-7,-4])) stop 4
+    if (any (lcobound(z2) /= lcobound(z))) stop 4
+    if (any (lcobound(z3) /= lcobound(z))) stop 5
+    if (any (lcobound(z4) /= lcobound(z))) stop 6
+    if (any (lcobound(z5) /= lcobound(z))) stop 7
+    if (any (lcobound(z6) /= lcobound(z))) stop 8
+    if (any (lcobound(z7) /= lcobound(z))) stop 9
+ 
+    if (any (lbound(x) /= [1])) stop 11
+    if (any (lbound(y) /= [1])) stop 12
+    if (any (lbound(z) /= [1,-3,7])) stop 13
+    if (any (lbound(z2) /= lbound(z))) stop 14
+    if (any (lbound(z3) /= lbound(z))) stop 15
+    if (any (lbound(z4) /= lbound(z))) stop 16
+    if (any (lbound(z5) /= lbound(z))) stop 17
+    if (any (lbound(z6) /= lbound(z))) stop 18
+    if (any (lbound(z7) /= lbound(z))) stop 19
+ 
+    if (any (ubound(x) /= [3])) stop 21
+    if (any (ubound(y) /= [3])) stop 22
+    if (any (ubound(z) /= [2,-2,7])) stop 23
+    if (any (ubound(z2) /= ubound(z))) stop 24
+    if (any (ubound(z3) /= ubound(z))) stop 25
+    if (any (ubound(z4) /= ubound(z))) stop 26
+    if (any (ubound(z5) /= ubound(z))) stop 27
+    if (any (ubound(z6) /= ubound(z))) stop 28
+    if (any (ubound(z7) /= ubound(z))) stop 29
+ 
+    if (any (ucobound(z2) /= ucobound(z))) stop 31
+    if (any (ucobound(z3) /= ucobound(z))) stop 32
+    if (any (ucobound(z4) /= ucobound(z))) stop 33
+    if (any (ucobound(z5) /= ucobound(z))) stop 34
+    if (any (ucobound(z6) /= ucobound(z))) stop 35
+    if (any (ucobound(z7) /= ucobound(z))) stop 36
+ 
+    if (num_images() == 1) then
+      if (any (ucobound(x) /= [2, lbound(x,dim=1)])) stop 37
+      if (any (ucobound(y) /= [2, 3, 4, 5, 7])) stop 38
+      if (any (ucobound(z) /= [4,9,2,8,-4])) stop 39
+    else
+      if (ucobound(x, dim=1) /= 2) stop 41
+      if (ucobound(y, dim=1) /= 2) stop 42
+      if (ucobound(y, dim=2) /= 3) stop 43
+      if (ucobound(y, dim=3) /= 4) stop 44
+      if (ucobound(y, dim=4) /= 5) stop 45
+      if (ucobound(z, dim=1) /= 4) stop 46
+      if (ucobound(z, dim=2) /= 9) stop 47
+      if (ucobound(z, dim=3) /= 2) stop 48
+      if (ucobound(z, dim=4) /= 8) stop 49
+    endif
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/coarray_allocate_11.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/coarray_allocate_11.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/coarray_allocate_11.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/coarray_allocate_11.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,15 ----
+ ! { dg-do compile }
+ ! { dg-additional-options -fcoarray=single }
+ program p
+    integer, allocatable :: z[:,:]
+    integer :: i
+    allocate (z[1:,*]) ! { dg-error "Bad array specification in ALLOCATE statement" }
+    allocate (z[:2,*]) ! { dg-error "Bad array specification in ALLOCATE statement" }
+    allocate (z[2:1,*]) ! { dg-error "Upper cobound is less than lower cobound" }
+    allocate (z[:0,*]) ! { dg-error "Bad array specification in ALLOCATE statement" }
+    allocate (z[0,*]) ! { dg-error "Upper cobound is less than lower cobound" }
+    allocate (z[1,*]) ! This is OK
+    allocate (z[1:1,*]) ! This is OK
+    allocate (z[i:i,*]) ! This is OK
+    allocate (z[i:i-1,*]) ! { dg-error "Upper cobound is less than lower cobound" }
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/coarray_data_1.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/coarray_data_1.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/coarray_data_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/coarray_data_1.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do  run }
+ ! { dg-options "-fcoarray=lib -lcaf_single " }
+ ! PR 71066 - this used to ICE
+ program p
+    real :: a(2,2)[*]
+    integer :: b(2,2)[*]
+    data a /4*0.0/
+    data b /1234, 2345, 3456, 4567/
+    if (any (a /= 0.0)) stop 1
+    if (any (b /= reshape([1234, 2345, 3456, 4567],[2,2]))) stop 2
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/deferred_character_32.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/deferred_character_32.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/deferred_character_32.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/deferred_character_32.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,13 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR88117.
+ !
+ ! Contributed by Gerhard Steinmetz  <gscfq@t-online.de>
+ !
+ program p
+    character(:), pointer :: z(:)
+    allocate (z, source  = ['abcd', 'bcde'])
+    z = (z) ! gimplifier choked here.
+    if (any (z .ne. ['abcd', 'bcde'])) stop 1
+    deallocate (z)
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/deferred_character_33.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/deferred_character_33.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/deferred_character_33.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/deferred_character_33.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,35 ----
+ ! { dg-do run }
+ ! { dg-additional-sources deferred_character_33a.f90 }
+ ! PR fortran/90744 - this used to pass a wrong length
+ ! to an external function without a prototype.
+ ! Original test case by Tomáš Trnka.
+ module StringModule
+    implicit none
+ 
+ contains
+    function getstr()
+       character(:), allocatable :: getstr
+ 
+       getstr = 'OK'
+    end function
+ end module
+ module TestModule
+    use StringModule
+    implicit none
+ 
+ contains
+    subroutine DoTest()
+       if (.false.) then
+          call convrs('A',getstr())
+       else
+          call convrs('B',getstr())
+       end if
+    end subroutine
+ end module
+ program external_char_length
+    use TestModule
+ 
+    implicit none
+ 
+    call DoTest()
+ end program
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/deferred_character_33a.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/deferred_character_33a.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/deferred_character_33a.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/deferred_character_33a.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ subroutine convrs(quanty,fromto)
+    implicit none
+ 
+    character(*), intent(in) :: quanty,fromto
+ 
+    if (len(fromto) /= 2) stop 1
+    if (fromto /= 'OK') stop 2
+ end subroutine
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/dependency_53.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/dependency_53.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/dependency_53.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/dependency_53.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,25 ----
+ ! { dg-do run }
+ ! PR fortran/66089 - used to ICE and, after that ICE was fixed,
+ ! gave wrong results.
+   type :: t
+     integer :: c
+   end type t
+ 
+   class(t), dimension(:), allocatable :: b,c
+ 
+   allocate (b(5), source=t(7))
+   allocate(c(5), source=t(13))
+   c = plus(c(1), b)
+   if (any(c%c /= 20)) stop 1
+   c = t(13)
+   c = plus(b, c(1))
+   if (any(c%c /= 20)) stop 2
+ contains
+ 
+   elemental function plus(lhs, rhs)
+     class(t), intent(in) :: lhs, rhs
+     type(t)             :: plus
+     plus%c = lhs%c + rhs%c
+   end function plus
+ 
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/dg.exp gcc-8.4.0/gcc/testsuite/gfortran.dg/dg.exp
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/dg.exp	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/dg.exp	Wed Mar  4 08:30:02 2020
*************** proc dg-compile-aux-modules { args } {
*** 36,42 ****
      global gfortran_test_path
      global gfortran_aux_module_flags
      if { [llength $args] != 2 } {
! 	error "dg-set-target-env-var: needs one argument"
  	return
      }
  
--- 36,42 ----
      global gfortran_test_path
      global gfortran_aux_module_flags
      if { [llength $args] != 2 } {
! 	error "dg-compile-aux-modules: needs one argument"
  	return
      }
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/do_subscript_5.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/do_subscript_5.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/do_subscript_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/do_subscript_5.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,20 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-Wdo-subscript" }
+ ! PR 90563 - this used to be rejected, wrongly
+ ! Original test case by Tobias Neumann
+ program test
+       implicit none
+       integer, parameter :: swap(4) = [2,1,3,4]
+       real :: p(20)
+       integer :: j
+ 
+       p = 0.0
+ 
+       ! The following warnings are actually bogus, but we are not yet
+       ! clever enough to suppress them.
+       do j=1,6 ! { dg-warning "out of bounds" }
+           if (j<5) then
+               p(j) = p(swap(j)) ! { dg-warning "out of bounds" }
+           endif
+       enddo
+ end program
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/do_subscript_6.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/do_subscript_6.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/do_subscript_6.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/do_subscript_6.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=legacy" }
+ ! PR 91550 - this used to cause an ICE
+ ! Test case by Gerhard Steinmetz
+ program p
+    real :: a(3)
+    integer :: i
+    do i = 1, 3, .1 ! { dg-error "cannot be zero" }
+       a(i) = i
+    end do
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/dtio_34.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/dtio_34.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/dtio_34.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/dtio_34.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,32 ----
+ ! { dg-do run }
+ ! PR84387 Defined output does not work for a derived type that
+ ! has no components 
+ module m
+    type :: t
+       private
+       !integer :: m_i = 0  !<-- ***
+    contains
+       private
+       procedure, pass(this) :: write_t
+       generic, public :: write(formatted) => write_t
+    end type
+ contains
+    subroutine write_t(this, lun, iotype, vlist, istat, imsg)
+       ! argument definitions
+       class(t), intent(in)            :: this
+       integer, intent(in)             :: lun
+       character(len=*), intent(in)    :: iotype
+       integer, intent(in)             :: vlist(:)
+       integer, intent(out)            :: istat
+       character(len=*), intent(inout) :: imsg
+       write(lun, fmt=*, iostat=istat, iomsg=imsg) "Hello World!"
+       return
+    end subroutine write_t
+ 
+ end module
+ 
+ program p
+    use m, only : t
+    type(t) :: foo
+    print "(dt)", foo ! { dg-output " Hello World!" }
+ end program
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/entry_22.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/entry_22.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/entry_22.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/entry_22.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,12 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-pedantic" }
+ ! PR fortran/89981 - this used to give a wrong warning (error with
+ ! -pedantic)
+ program main
+   call bar(i)
+   call baz(i) ! { dg-error "Type mismatch in argument" }
+ end program main
+ subroutine foo(r)
+   entry bar(i)
+   entry baz(r)
+ end subroutine foo
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/eof_6.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/eof_6.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/eof_6.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/eof_6.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,23 ----
+ ! { dg-do run }
+ ! { dg-options "-ffrontend-optimize" }
+ ! PR 92569 - the EOF condition was not recognized with
+ ! -ffrontend-optimize.  Originjal test case by Bill Lipa.
+ program main
+   implicit none
+   real(kind=8) ::  tdat(1000,10)
+   real(kind=8) :: res (10, 3)
+   integer :: i, j, k, np
+ 
+   open (unit=20, status="scratch")
+   res = reshape([(real(i),i=1,30)], shape(res))
+   write (20,'(10G12.5)') res
+   rewind 20
+   do  j = 1,1000
+      read (20,*,end=1)(tdat(j,k),k=1,10)
+   end do
+       
+ 1 continue
+   np = j-1
+   if (np /= 3) stop 1
+   if (any(transpose(res) /= tdat(1:np,:))) stop 2
+ end program main
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/external_procedure_4.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/external_procedure_4.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/external_procedure_4.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/external_procedure_4.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,19 ----
+ ! { dg-do compile }
+ ! PR fortran/90937 - this used to cause an ICE.
+ ! Original test case by Toon Moene.
+ subroutine lfidiff
+ 
+    implicit none
+ 
+    contains 
+ 
+       subroutine grlfi(cdnom)
+ 
+          character(len=*) cdnom(:)
+          character(len=len(cdnom)) clnoma
+ 
+          call lficas(clnoma)
+ 
+       end subroutine grlfi
+ 
+ end subroutine lfidiff
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/external_procedures_4.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/external_procedures_4.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/external_procedures_4.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/external_procedures_4.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,28 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR87127 in which the references to exfunc cause
+ ! the error "‘exfunc’ at (1) is not a function".
+ !
+ ! Contributed by Gerhard Steinmetz  <gscfq@t-online.de>
+ !
+ function exfunc(i)
+   implicit none
+   integer :: exfunc,i
+   exfunc = 2*i
+ end function
+ 
+ ! contents of test.f90
+ program test
+   implicit none
+   integer :: exfunc,i
+   integer,parameter :: array(2)=[6,7]
+   associate(i=>array(2))            ! Original bug
+     if (exfunc(i) .ne. 2*i) stop 1
+   end associate
+   i = 99
+   call foo
+ contains
+   subroutine foo()                  ! Comment #3
+     if (exfunc(i) .ne. 2*i) stop 2
+   end subroutine foo
+ end program
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/finalize_28.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/finalize_28.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/finalize_28.f90	Sun Nov  5 12:38:42 2017
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/finalize_28.f90	Wed Mar  4 08:30:02 2020
*************** contains
*** 21,24 ****
      integer, intent(out) :: edges(:,:)
    end subroutine coo_dump_edges
  end module coo_graphs
! ! { dg-final { scan-tree-dump-times "__builtin_free" 6 "original" } }
--- 21,24 ----
      integer, intent(out) :: edges(:,:)
    end subroutine coo_dump_edges
  end module coo_graphs
! ! { dg-final { scan-tree-dump-times "__builtin_free" 5 "original" } }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/finalize_34.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/finalize_34.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/finalize_34.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/finalize_34.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,25 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-fdump-tree-original" }
+ ! PR 87352 - this used to cause an excessive number of deallocations.
+ module testmodule
+   implicit none
+   public
+ 
+   type :: evtlist_type
+      real,  allocatable, dimension(:) :: p1
+      real,  allocatable, dimension(:) :: p2
+      real,  allocatable, dimension(:) :: p3
+      real,  allocatable, dimension(:) :: p4
+   end type evtlist_type
+ 
+   type :: evtlistlist_type
+      type(evtlist_type)  :: evtlist(1:1)
+   end type evtlistlist_type
+ 
+ end module testmodule 
+ 
+ program main
+   use testmodule
+   type(evtlist_type), dimension(10) :: a
+ end program main
+ ! { dg-final  { scan-tree-dump-times "__builtin_free" 8 "original" } }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/goacc/pr84963.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/goacc/pr84963.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/goacc/pr84963.f90	Wed Mar 21 08:26:49 2018
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/goacc/pr84963.f90	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  ! PR ipa/84963
! ! { dg-options "-O2" }
  
  program p
     print *, sin([1.0, 2.0])
--- 1,5 ----
  ! PR ipa/84963
! ! { dg-additional-options "-O2" }
  
  program p
     print *, sin([1.0, 2.0])
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/goacc/pr93329.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/goacc/pr93329.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/goacc/pr93329.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/goacc/pr93329.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,223 ----
+ ! PR fortran/93329
+ ! { dg-do compile { target fopenmp } }
+ ! { dg-additional-options "-fopenmp" }
+ 
+   integer :: x, y, z
+   integer :: a(32)
+ !$acc kernels copyout(x)
+ !$omp target map(from:x)	! { dg-error "OMP TARGET directive cannot be specified within" }
+   x = 5
+ !$omp end target
+ !$acc end kernels
+   print *, x
+ !$acc kernels
+ !$omp atomic			! { dg-error "OMP ATOMIC directive cannot be specified within" }
+   x = x + 1
+ !$omp end atomic
+ !$acc end kernels
+ !$acc kernels
+ !$omp barrier			! { dg-error "OMP BARRIER directive cannot be specified within" }
+ !$acc end kernels
+ !$acc kernels
+ !$omp cancel parallel		! { dg-error "OMP CANCEL directive cannot be specified within" }
+ !$acc end kernels
+ !$acc kernels
+ !$omp cancellation point parallel	! { dg-error "OMP CANCELLATION POINT directive cannot be specified within" }
+ !$acc end kernels
+ !$acc kernels
+ !$omp flush			! { dg-error "OMP FLUSH directive cannot be specified within" }
+ !$acc end kernels
+ !$acc kernels
+ !$omp distribute		! { dg-error "OMP DISTRIBUTE directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp distribute parallel do	! { dg-error "OMP DISTRIBUTE PARALLEL DO directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp distribute parallel do simd	! { dg-error "OMP DISTRIBUTE PARALLEL DO SIMD directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp distribute simd		! { dg-error "OMP DISTRIBUTE SIMD directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp do simd			! { dg-error "OMP DO SIMD directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp simd			! { dg-error "OMP SIMD directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp target data map(from: x)	! { dg-error "OMP TARGET DATA directive cannot be specified within" }
+ !$omp end target data
+ !$acc end kernels
+ !$acc kernels
+ !$omp target enter data map(to: x)	! { dg-error "OMP TARGET ENTER DATA directive cannot be specified within" }
+ !$acc end kernels
+ !$acc kernels
+ !$omp target exit data map(from: x)	! { dg-error "OMP TARGET EXIT DATA directive cannot be specified within" }
+ !$acc end kernels
+ !$acc kernels
+ !$omp target parallel		! { dg-error "OMP TARGET PARALLEL directive cannot be specified within" }
+ !$omp end target parallel
+ !$acc end kernels
+ !$acc kernels
+ !$omp target parallel do	! { dg-error "OMP TARGET PARALLEL DO directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp target parallel do simd	! { dg-error "OMP TARGET PARALLEL DO SIMD directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !!$omp target simd
+ !  do x = 0, 2
+ !  end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp target teams		! { dg-error "OMP TARGET TEAMS directive cannot be specified within" }
+ !$omp end target teams
+ !$acc end kernels
+ !$acc kernels
+ !$omp target teams distribute	! { dg-error "OMP TARGET TEAMS DISTRIBUTE directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp target teams distribute parallel do	! { dg-error "OMP TARGET TEAMS DISTRIBUTE PARALLEL DO directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp target teams distribute parallel do simd	! { dg-error "OMP TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp target teams distribute simd	! { dg-error "OMP TARGET TEAMS DISTRIBUTE SIMD directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp target update to(x)	! { dg-error "OMP TARGET UPDATE directive cannot be specified within" }
+ !$acc end kernels
+ !$acc kernels
+ !$omp taskgroup			! { dg-error "OMP TASKGROUP directive cannot be specified within" }
+ !$omp end taskgroup
+ !$acc end kernels
+ !$acc kernels
+ !$omp taskloop			! { dg-error "OMP TASKLOOP directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp taskloop simd		! { dg-error "OMP TASKLOOP SIMD directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp taskwait			! { dg-error "OMP TASKWAIT directive cannot be specified within" }
+ !$acc end kernels
+ !$acc kernels
+ !$omp taskyield			! { dg-error "OMP TASKYIELD directive cannot be specified within" }
+ !$acc end kernels
+ !$acc kernels
+ !$omp teams			! { dg-error "OMP TEAMS directive cannot be specified within" }
+ !$omp end teams
+ !$acc end kernels
+ !$acc kernels
+ !$omp teams distribute		! { dg-error "OMP TEAMS DISTRIBUTE directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp teams distribute parallel do	! { dg-error "OMP TEAMS DISTRIBUTE PARALLEL DO directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp teams distribute parallel do simd	! { dg-error "OMP TEAMS DISTRIBUTE PARALLEL DO SIMD directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp teams distribute simd	! { dg-error "OMP TEAMS DISTRIBUTE SIMD directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp parallel do		! { dg-error "OMP PARALLEL DO directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp parallel do simd		! { dg-error "OMP PARALLEL DO SIMD directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ !$acc kernels
+ !$omp parallel			! { dg-error "OMP PARALLEL directive cannot be specified within" }
+ !$omp end parallel
+ !$acc end kernels
+ !$acc kernels
+ !$omp parallel sections		! { dg-error "OMP PARALLEL SECTIONS directive cannot be specified within" }
+   y = 1
+ !$omp section
+   z = 2
+ !$omp end parallel sections
+ !$acc end kernels
+ !$acc kernels
+ !$omp sections			! { dg-error "OMP SECTIONS directive cannot be specified within" }
+   y = 1
+ !$omp section
+   z = 2
+ !$omp end sections
+ !$acc end kernels
+ !$acc kernels
+ !$omp ordered			! { dg-error "OMP ORDERED directive cannot be specified within" }
+ !$omp end ordered
+ !$acc end kernels
+ !$acc kernels
+ !$omp critical			! { dg-error "OMP CRITICAL directive cannot be specified within" }
+ !$omp end critical
+ !$acc end kernels
+ !$acc kernels
+ !$omp master			! { dg-error "OMP MASTER directive cannot be specified within" }
+ !$omp end master
+ !$acc end kernels
+ !$acc kernels
+ !$omp single			! { dg-error "OMP SINGLE directive cannot be specified within" }
+ !$omp end single
+ !$acc end kernels
+ !$acc kernels
+ !$omp task			! { dg-error "OMP TASK directive cannot be specified within" }
+ !$omp end task
+ !$acc end kernels
+ !$acc kernels
+ !$omp workshare			! { dg-error "OMP WORKSHARE directive cannot be specified within" }
+   a(:) = 1
+ !$omp end workshare
+ !$acc end kernels
+ !$acc kernels
+ !$omp parallel workshare	! { dg-error "OMP PARALLEL WORKSHARE directive cannot be specified within" }
+   a(:) = 1
+ !$omp end parallel workshare
+ !$acc end kernels
+ !$acc kernels
+ !$omp do			! { dg-error "OMP DO directive cannot be specified within" }
+   do x = 0, 2
+   end do
+ !$acc end kernels
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/goacc/pr93463.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/goacc/pr93463.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/goacc/pr93463.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/goacc/pr93463.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,15 ----
+ ! PR fortran/93463
+ ! { dg-do compile { target fopenmp } }
+ ! { dg-additional-options "-fopenmp" }
+ 
+ program pr93463
+    integer :: i, x, y, z
+    !$omp parallel do
+    do i = 1, 4
+       !$acc enter data create(x)	! { dg-error "ACC ENTER DATA directive cannot be specified within" }
+       !$acc exit data copyout(x)	! { dg-error "ACC EXIT DATA directive cannot be specified within" }
+       !$acc cache(y)			! { dg-error "ACC CACHE directive cannot be specified within" }
+       !$acc wait(1)			! { dg-error "ACC WAIT directive cannot be specified within" }
+       !$acc update self(z)		! { dg-error "ACC UPDATE directive cannot be specified within" }
+    end do
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/gomp/pr89621.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/gomp/pr89621.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/gomp/pr89621.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/gomp/pr89621.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,18 ----
+ ! PR middle-end/89621
+ ! { dg-do compile }
+ 
+ subroutine sub(str)
+   character(*), intent(in) :: str
+ end subroutine sub
+ 
+ program pr89621
+   implicit none
+   integer i
+   character(len=:), allocatable :: str
+   str = "test"
+   !$omp parallel do
+   do i = 1, 10
+     call sub(str)
+   enddo
+   !$omp end parallel do
+ end program pr89621
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/gomp/pr89651.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/gomp/pr89651.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/gomp/pr89651.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/gomp/pr89651.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,21 ----
+ ! PR fortran/89651
+ ! { dg-do compile }
+ ! { dg-additional-options "-Wuninitialized" }
+ 
+ program pr89651
+   integer :: n
+   real, allocatable :: t(:)
+   n = 10
+   allocate (t(n), source = 0.0)
+ !$omp parallel firstprivate(t)
+   print *, sum (t) ! { dg-bogus "lbound' may be used uninitialized in this function" }
+                    ! { dg-bogus "ubound' may be used uninitialized in this function" "" { target *-*-* } .-1 }
+                    ! { dg-bogus "offset' may be used uninitialized in this function" "" { target *-*-* } .-2 }
+ !$omp end parallel
+ !$omp parallel private(t)
+   t = 0.0
+   print *, sum (t) ! { dg-bogus "lbound' may be used uninitialized in this function" }
+                    ! { dg-bogus "ubound' may be used uninitialized in this function" "" { target *-*-* } .-1 }
+                    ! { dg-bogus "offset' may be used uninitialized in this function" "" { target *-*-* } .-2 }
+ !$omp end parallel
+ end program pr89651
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/gomp/pr92977.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/gomp/pr92977.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/gomp/pr92977.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/gomp/pr92977.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,15 ----
+ ! PR fortran/92977
+ ! { dg-do compile }
+ ! { dg-additional-options "-O2" }
+ 
+ program pr92977
+   integer :: n = 1
+   integer :: a
+ !$omp atomic write
+   a = f(n) - f(n)
+ contains
+   integer function f(x)
+     integer, intent(in) :: x
+     f = x
+   end
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/gomp/pr93555.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/gomp/pr93555.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/gomp/pr93555.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/gomp/pr93555.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ ! PR middle-end/93555
+ ! { dg-do compile }
+ 
+ subroutine foo
+   !$omp declare simd(foo)
+   !$omp declare simd(foo) inbranch
+ end
+ subroutine bar
+   !$omp declare simd(bar) inbranch
+   !$omp declare simd(bar)
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/gomp/target-parallel1.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/gomp/target-parallel1.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/gomp/target-parallel1.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/gomp/target-parallel1.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,4 ----
+ !$omp target parallel
+   print *, 'Hello, world'
+ !$omp end target parallel
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/ieee/ieee.exp gcc-8.4.0/gcc/testsuite/gfortran.dg/ieee/ieee.exp
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/ieee/ieee.exp	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/ieee/ieee.exp	Wed Mar  4 08:30:02 2020
***************
*** 22,36 ****
  load_lib gfortran-dg.exp
  load_lib target-supports.exp
  
! # Initialize `dg'.
! dg-init
! 
! # Flags specified in each test
  global DEFAULT_FFLAGS
  if ![info exists DEFAULT_FFLAGS] then {
!     set DEFAULT_FFLAGS ""
  }
  
  # Flags for finding the IEEE modules
  if [info exists TOOL_OPTIONS] {
     set specpath [get_multilibs ${TOOL_OPTIONS}]
--- 22,36 ----
  load_lib gfortran-dg.exp
  load_lib target-supports.exp
  
! # If a testcase doesn't have special options, use these.
  global DEFAULT_FFLAGS
  if ![info exists DEFAULT_FFLAGS] then {
!     set DEFAULT_FFLAGS " -pedantic-errors"
  }
  
+ # Initialize `dg'.
+ dg-init
+ 
  # Flags for finding the IEEE modules
  if [info exists TOOL_OPTIONS] {
     set specpath [get_multilibs ${TOOL_OPTIONS}]
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/interface_abstract_5.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/interface_abstract_5.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/interface_abstract_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/interface_abstract_5.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,32 ----
+ ! { dg-do compile }
+ !
+ ! PR 71861: [7/8/9 Regression] [F03] ICE in write_symbol(): bad module symbol
+ !
+ ! Contributed by Gerhard Steinmetz <gerhard.steinmetz.fortran@t-online.de>
+ 
+ module m1
+    intrinsic abs
+    abstract interface
+       function abs(x)    ! { dg-error "ABSTRACT attribute conflicts with INTRINSIC attribute" }
+          real :: abs, x
+       end
+    end interface
+ end
+ 
+ module m2
+    abstract interface
+       function abs(x)
+          real :: abs, x
+       end
+    end interface
+    intrinsic abs    ! { dg-error "ABSTRACT attribute conflicts with INTRINSIC attribute" }
+ end
+ 
+ module m3
+    abstract interface
+       function f(x)
+          real :: f, x
+       end
+    end interface
+    intrinsic f    ! { dg-error "ABSTRACT attribute conflicts with INTRINSIC attribute" }
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90	Wed Oct 28 13:28:32 2009
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  ! { dg-lto-do link }
! ! { dg-extra-ld-options "-r -nostdlib -finline-functions" }
  
  SUBROUTINE int_gen_ti_header_char( hdrbuf, hdrbufsize, itypesize, &
                                DataHandle, Element, VarName, Data, code )
--- 1,5 ----
  ! { dg-lto-do link }
! ! { dg-extra-ld-options "-r -nostdlib -finline-functions -Wno-lto-type-mismatch" }
  
  SUBROUTINE int_gen_ti_header_char( hdrbuf, hdrbufsize, itypesize, &
                                DataHandle, Element, VarName, Data, code )
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90	Wed Oct 28 13:28:32 2009
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
  ! { dg-lto-do link }
! ! { dg-extra-ld-options "-r -nostdlib -finline-functions" }
  
  SUBROUTINE int_gen_ti_header_char( hdrbuf, hdrbufsize, itypesize, &
                                DataHandle, Element, VarName, Data, code )
--- 1,5 ----
  ! { dg-lto-do link }
! ! { dg-extra-ld-options "-r -nostdlib -finline-functions -Wno-lto-type-mismatch" }
  
  SUBROUTINE int_gen_ti_header_char( hdrbuf, hdrbufsize, itypesize, &
                                DataHandle, Element, VarName, Data, code )
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/lto/pr87689_0.f gcc-8.4.0/gcc/testsuite/gfortran.dg/lto/pr87689_0.f
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/lto/pr87689_0.f	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/lto/pr87689_0.f	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,13 ----
+ ! { dg-lto-run }
+ ! PR 87689 - this used to fail for POWER, plus it used to
+ ! give warnings about mismatches with LTO.
+ ! Original test case by Judicaël Grasset.
+       program main
+         implicit none
+         character :: c
+         character(len=20) :: res, doesntwork_p8
+         external doesntwork_p8
+         c = 'o'
+         res = doesntwork_p8(c,1,2,3,4,5,6)
+         if (res /= 'foo') stop 3
+       end program main
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/lto/pr87689_1.f gcc-8.4.0/gcc/testsuite/gfortran.dg/lto/pr87689_1.f
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/lto/pr87689_1.f	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/lto/pr87689_1.f	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+       function doesntwork_p8(c,a1,a2,a3,a4,a5,a6)
+         implicit none
+         character(len=20) :: doesntwork_p8
+         character :: c
+         integer :: a1,a2,a3,a4,a5,a6
+         if (a1 /= 1 .or. a2 /= 2 .or. a3 /= 3 .or. a4 /= 4 .or. a5 /= 5
+      &       .or. a6 /= 6) stop 1
+        if (c /= 'o ') stop 2
+        doesntwork_p8 = 'foo'
+        return
+        end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/no_arg_check_2.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/no_arg_check_2.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/no_arg_check_2.f90	Sat Feb 17 14:05:34 2018
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/no_arg_check_2.f90	Wed Mar  4 08:30:02 2020
*************** end
*** 139,145 ****
  ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) array_class_t1_alloc._data.data" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) \\(array_class_t1_ptr._data.dat" 1 "original" } }
  
! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 3 "original" } }
  ! { dg-final { scan-tree-dump-times " = _gfortran_internal_pack \\(&parm" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(&array_int\\)" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(real\\(kind=4\\).0:. . restrict\\) array_real_alloc.data" 1 "original" } }
--- 139,145 ----
  ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) array_class_t1_alloc._data.data" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) \\(array_class_t1_ptr._data.dat" 1 "original" } }
  
! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 4 "original" } }
  ! { dg-final { scan-tree-dump-times " = _gfortran_internal_pack \\(&parm" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(&array_int\\)" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(real\\(kind=4\\).0:. . restrict\\) array_real_alloc.data" 1 "original" } }
*************** end
*** 148,152 ****
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) parm" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t2.0:. . restrict\\) array_t2_alloc.data\\);" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. . restrict\\) array_class_t1_alloc._data.data\\);" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) array_class_t1_ptr._data.data\\);" 1 "original" } }
  
--- 148,152 ----
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) parm" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t2.0:. . restrict\\) array_t2_alloc.data\\);" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. . restrict\\) array_class_t1_alloc._data.data\\);" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) array_class_t1_ptr._data.data\\);" 0 "original" } }
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pdt_4.f03 gcc-8.4.0/gcc/testsuite/gfortran.dg/pdt_4.f03
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pdt_4.f03	Sat Feb 17 14:05:34 2018
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pdt_4.f03	Wed Mar  4 08:30:02 2020
*************** contains
*** 97,105 ****
      type (mytype(4, *)) :: arg      ! OK
    end subroutine
    subroutine bar(arg)               ! { dg-error "is neither allocatable nor a pointer" }
!     type (thytype(8, :, 4) :: arg
    end subroutine
    subroutine foobar(arg)            ! OK
!     type (thytype(8, *, 4) :: arg
    end subroutine
  end
--- 97,105 ----
      type (mytype(4, *)) :: arg      ! OK
    end subroutine
    subroutine bar(arg)               ! { dg-error "is neither allocatable nor a pointer" }
!     type (thytype(8, :, 4)) :: arg
    end subroutine
    subroutine foobar(arg)            ! OK
!     type (thytype(8, *, 4)) :: arg
    end subroutine
  end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pointer_array_11.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pointer_array_11.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pointer_array_11.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pointer_array_11.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,90 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR91077 - both the original test and that in comment #4 of the PR.
+ !
+ ! Contribute by Ygal Klein  <ygalklein@gmail.com>
+ !
+ program test
+   implicit none
+   call original
+   call comment_4
+ contains
+   subroutine original
+     integer, parameter :: length = 9
+     real(8), dimension(2) :: a, b
+     integer :: i
+     type point
+        real(8) :: x
+     end type point
+ 
+     type stored
+        type(point), dimension(:), allocatable :: np
+     end type stored
+     type(stored), dimension(:), pointer :: std =>null()
+     allocate(std(1))
+     allocate(std(1)%np(length))
+     std(1)%np(1)%x = 0.3d0
+     std(1)%np(2)%x = 0.3555d0
+     std(1)%np(3)%x = 0.26782d0
+     std(1)%np(4)%x = 0d0
+     std(1)%np(5)%x = 1.555d0
+     std(1)%np(6)%x = 7.3d0
+     std(1)%np(7)%x = 7.8d0
+     std(1)%np(8)%x = 6.3d0
+     std(1)%np(9)%x = 5.5d0
+ !    do i = 1, 2
+ !       write(*, "('std(1)%np(',i1,')%x = ',1e22.14)") i, std(1)%np(i)%x
+ !    end do
+ !    do i = 1, 2
+ !       write(*, "('std(1)%np(1:',i1,') = ',9e22.14)") i, std(1)%np(1:i)%x
+ !    end do
+     a = std(1)%np(1:2)%x
+     b = [std(1)%np(1)%x, std(1)%np(2)%x]
+ !    print *,a
+ !    print *,b
+     if (allocated (std(1)%np)) deallocate (std(1)%np)
+     if (associated (std)) deallocate (std)
+     if (norm2(a - b) .gt. 1d-3) stop 1
+   end subroutine
+ 
+   subroutine comment_4
+     integer, parameter :: length = 2
+     real(8), dimension(length) :: a, b
+     integer :: i
+ 
+     type point
+        real(8) :: x
+     end type point
+ 
+     type points
+        type(point), dimension(:), pointer :: np=>null()
+     end type points
+ 
+     type stored
+        integer :: l
+        type(points), pointer :: nfpoint=>null()
+     end type stored
+ 
+     type(stored), dimension(:), pointer :: std=>null()
+ 
+ 
+     allocate(std(1))
+     allocate(std(1)%nfpoint)
+     allocate(std(1)%nfpoint%np(length))
+     std(1)%nfpoint%np(1)%x = 0.3d0
+     std(1)%nfpoint%np(2)%x = 0.3555d0
+ 
+ !    do i = 1, length
+ !       write(*, "('std(1)%nfpoint%np(',i1,')%x = ',1e22.14)") i, std(1)%nfpoint%np(i)%x
+ !    end do
+ !    do i = 1, length
+ !       write(*, "('std(1)%nfpoint%np(1:',i1,')%x = ',2e22.14)") i, std(1)%nfpoint%np(1:i)%x
+ !    end do
+     a = std(1)%nfpoint%np(1:2)%x
+     b = [std(1)%nfpoint%np(1)%x, std(1)%nfpoint%np(2)%x]
+     if (associated (std(1)%nfpoint%np)) deallocate (std(1)%nfpoint%np)
+     if (associated (std(1)%nfpoint)) deallocate (std(1)%nfpoint)
+     if (associated (std)) deallocate (std)
+     if (norm2(a - b) .gt. 1d-3) stop 2
+     end subroutine
+ end program test
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pointer_intent_8.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pointer_intent_8.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pointer_intent_8.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pointer_intent_8.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,22 ----
+ ! { dg-do run }
+ ! PR 85797 - this used to get wrong results.
+ 
+ 
+ PROGRAM testfortran2
+   IMPLICIT NONE
+ 
+   INTEGER, DIMENSION(10), TARGET :: i4array
+ 
+   i4array = (/ 1,2,3,4,5,6,7,8,9,10 /)
+ 
+   call InRef(i4array)
+ 
+ CONTAINS
+ 
+   subroutine InRef(v)
+     INTEGER, DIMENSION(:), POINTER, INTENT(in) :: v
+     INTEGER :: i
+     if (any (v /= [(i,i=1,10)])) stop 1
+   END subroutine
+ 
+ END
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pr69455_1.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pr69455_1.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pr69455_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pr69455_1.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,14 ----
+ ! { dg-do run }
+ program foo
+    block
+       use, intrinsic :: iso_c_binding, only: wp => c_float, ik => c_int
+       if (ik /= 4) stop 1
+       if (wp /= 4) stop 2
+    end block
+    block
+       use, intrinsic :: iso_c_binding, only: wp => c_double, ik => c_int64_t
+       if (ik /= 8) stop 3
+       if (wp /= 8) stop 4
+    end block
+ end program foo
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pr69455_2.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pr69455_2.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pr69455_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pr69455_2.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,13 ----
+ ! { dg-do run }
+ program foo
+    block
+       use, intrinsic :: ISO_FORTRAN_ENV, only: wp => REAL32, ik => INT32
+       if (ik /= 4) stop 1
+       if (wp /= 4) stop 2
+    end block
+    block
+       use, intrinsic :: ISO_FORTRAN_ENV, only: wp => REAL64, ik => INT64
+       if (ik /= 8) stop 3
+       if (wp /= 8) stop 4
+    end block
+ end program foo
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pr77583.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pr77583.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pr77583.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pr77583.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,10 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/77583 - ICE in pp_quoted_string, at pretty-print.c:966
+ ! Contributed by Gerhard Steinmetz <gerhard.steinmetz.fortran@t-online.de>
+ 
+ pure subroutine sub(s)
+ contains
+    pure subroutine s  ! { dg-error "conflicts with DUMMY argument" }
+    end
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pr85797.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pr85797.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pr85797.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pr85797.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,31 ----
+ ! { dg-do compile }
+ ! PR fortran/83515 - ICE: Invalid expression in gfc_element_size 
+ ! PR fortran/85797 - ICE in gfc_element_size, at fortran/target-memory.c:126
+ ! PR fortran/89904 - ICE in gfortran starting with r270045
+ 
+ recursive subroutine a
+   c = transfer (a, b)           ! { dg-error "'SOURCE' argument of 'TRANSFER'" }
+ end
+ 
+ recursive subroutine d
+   c = transfer (b, d)           ! { dg-error "'MOLD' argument of 'TRANSFER'" }
+ end
+ 
+ subroutine f
+   use, intrinsic :: iso_c_binding
+   integer(c_intptr_t) :: b, c
+   procedure(), pointer :: a
+   c = transfer (a, b)
+   c = transfer (transfer (b, a), b)
+ end
+ 
+ module m
+ contains
+   function f () result (z)
+     class(*), pointer :: z
+   end function f
+   recursive subroutine s (q)
+     procedure(f) :: q
+     call s (q)
+   end subroutine s
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pr88326.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pr88326.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pr88326.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pr88326.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/88326 - ICE in gfc_conv_array_initializer
+ 
+ program p
+   character, parameter :: x(3) = ['a','b','c']
+   character    :: y(1) = transfer('', x) ! { dg-error "Different shape for array assignment" }
+   character(0) :: z(1) = transfer('', x) ! { dg-error "Different shape for array assignment" }
+   character    :: u(0) = transfer('', x)
+   print *, y, z, u
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pr89266.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pr89266.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pr89266.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pr89266.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,25 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/89266 - ICE with TRANSFER of len=0 character array constructor
+ 
+ program test
+   implicit none
+   character(*), parameter :: n = ''
+   character(*), parameter :: o = transfer ([''], n)
+   character(*), parameter :: p = transfer ( n , n)
+   character(*), parameter :: q = transfer ([n], n)
+   character(6), save      :: r = transfer ([''], n)
+   character(6), save      :: s = transfer ( n , n)
+   character(6), save      :: t = transfer ([n], n)
+   integer,      parameter :: a(0) = 0
+   integer,      parameter :: b(0) = transfer (a, a)
+   integer,      save      :: c(0) = transfer (a, a)
+   if (len (o) /= 0) stop 1
+   if (len (p) /= 0) stop 2
+   if (len (q) /= 0) stop 3
+   if (r /= "") stop 4
+   if (s /= "") stop 5
+   if (t /= "") stop 6
+   if (size (b) /= 0 .or. any (b /= 0)) stop 7
+   if (size (c) /= 0 .or. any (c /= 0)) stop 8
+ end program test
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pr89492.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pr89492.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pr89492.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pr89492.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,27 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/89492 - Endless compilation of an invalid TRANSFER after r269177
+ ! Test error recovery for invalid uses of TRANSFER
+ ! Test proper simplification for MOLD with size 0
+ !
+ ! Derived from original testcase by Dominique d'Humieres
+ 
+ program bug4a
+   implicit none
+   type bug4
+ ! Intentionally left empty
+   end type bug4
+   integer, parameter :: k = size(transfer('',['']))  ! k = 0
+   integer, parameter :: i = len (transfer('',['']))  ! i = 0
+   integer, parameter :: l = len (transfer('', '' ))  ! l = 0
+   integer, parameter :: m(k) = k
+   integer, parameter :: j(i) = i
+   integer, parameter :: n(l) = l
+   print *, k,i,l,m,j,n
+   print *,      transfer(1,[''])                ! { dg-error "shall not have storage size 0" }
+   print *,      transfer(1, '' )                ! No error
+   print *, size(transfer(1,['']))               ! { dg-error "shall not have storage size 0" }
+   print *, len (transfer(1, '' ))               ! No error
+   print *, size(transfer([1],[bug4()]))         ! { dg-error "shall not have storage size 0" }
+   print *, transfer(transfer([1],[bug4()]),[1]) ! { dg-error "shall not have storage size 0" }
+ end program bug4a
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pr89664.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pr89664.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pr89664.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pr89664.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,24 ----
+ ! { dg-do compile }
+ ! { dg-options "-Ofast" }
+ 
+ subroutine s (x)
+    real :: x
+    call sub (x)
+ end
+ subroutine sub (x)
+    real :: x, y
+    logical :: a, b
+    real :: f1, f2, f3, f4
+    y = f1()
+    a = .false.
+    if ( f2() > f3() ) a = .true.
+    b = .false.
+    if ( f2() > f4() ) b = .true.
+    if ( a ) then
+       x = 1.0
+    else if ( b ) then
+       x = 1.0/y**2
+    else
+       x = 1.0/y - y**2
+    end if
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pr91660_1.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pr91660_1.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pr91660_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pr91660_1.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! PR fortran/91660
+ ! Code contributed by Gerhard Steinmetz
+ program p
+    type t
+    end type
+    type (t x    ! { dg-error "Malformed type-spec" }
+    x = t()      ! { dg-error "Can't convert" }
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pr91660_2.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pr91660_2.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pr91660_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pr91660_2.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! PR fortran/91660
+ program foo
+    type(doubleprecision :: x   ! { dg-error "Malformed type-spec" }
+    type(double precision :: y  ! { dg-error "Malformed type-spec" }
+    type(character(len=3) :: a  ! { dg-error "Malformed type-spec" }
+    type(doublecomplex :: b     ! { dg-error "Malformed type-spec" }
+    type(double complex :: c    ! { dg-error "Malformed type-spec" }
+ end program foo
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pr92629.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pr92629.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pr92629.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pr92629.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do run }
+ ! { dg-options "-fno-range-check" }
+ !
+ ! Test the fix for PR92629.
+ program bge_tests
+   if (bge (huge (1_1), 128_1)) stop 1
+   if (bge (    128_1 , 255_1)) stop 2
+   if (bge (huge (1_2), 32768_2)) stop 3
+   if (bge (huge (1_4), 2147483648_4)) stop 4
+   if (bge (huge (1_8), 9223372036854775808_8)) stop 5
+ end program
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pr92781.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pr92781.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pr92781.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pr92781.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ ! PR fortran/92781
+ ! { dg-do compile }
+ 
+ function foo ()
+   character(:), allocatable :: foo
+   call bar ()
+   foo = 'abc'
+ contains
+   subroutine bar
+   end
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pr93714_1.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pr93714_1.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pr93714_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pr93714_1.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ ! PR 93714
+ ! Original test case from G. Steinmetz
+ 
+ program test
+    character((1.)) :: a
+    character, pointer :: b => a
+ end program
+ 
+ ! { dg-error "must be of INTEGER type" " " { target *-*-* } 6 }
+ ! { dg-error "does not have the TARGET attribute" " " { target *-*-* } 7 }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/pr93714_2.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/pr93714_2.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/pr93714_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/pr93714_2.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ ! PR 93714
+ ! Original test case from G. Steinmetz
+ 
+ program test
+    character((9.)) :: a
+    character(:), pointer :: b => a
+ end program
+ 
+ ! { dg-error "must be of INTEGER type" " " { target *-*-* } 6 }
+ ! { dg-error "does not have the TARGET attribute" " " { target *-*-* } 7 }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/proc_ptr_51.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/proc_ptr_51.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/proc_ptr_51.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/proc_ptr_51.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,38 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR90786.
+ !
+ ! Contributed by Andrew benson  <abensonca@gmail.com>
+ !
+ module f
+ procedure(c), pointer :: c_
+ 
+  type :: s
+    integer :: i = 42
+  end type s
+  class(s), pointer :: res, tgt
+ 
+ contains
+ 
+  function c()
+    implicit none
+    class(s), pointer ::  c
+    c => tgt
+    return
+  end function c
+ 
+  subroutine fs()
+    implicit none
+    c_ => c  ! This used to ICE
+    return
+  end subroutine fs
+ 
+ end module f
+ 
+   use f
+   allocate (tgt, source = s(99))
+   call fs()
+   res => c_()
+   if (res%i .ne. 99) stop 1
+   deallocate (tgt)
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/public_private_module_10.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/public_private_module_10.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/public_private_module_10.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/public_private_module_10.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,18 ----
+ ! { dg-do compile }
+ ! PR 87734 - this used to issue spurious errors.
+ 
+ module m_vstring
+   implicit none
+ 
+   public :: vstring_length
+ 
+ contains
+ 
+   subroutine vstring_cast()
+     character ( len = vstring_length() ) :: char_string
+   end subroutine
+ 
+   pure integer function vstring_length ()
+   end function
+ 
+ end module
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/spread_size_limit_2.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/spread_size_limit_2.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/spread_size_limit_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/spread_size_limit_2.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,11 ----
+ ! PR fortran/91944
+ ! { dg-do compile }
+ ! { dg-options "-fmax-array-constructor=65535" }
+ 
+ program pr91944
+   integer, parameter :: n = 10
+   integer, parameter :: m = 65536
+   integer :: i
+   integer :: x(n,m) = spread([(i,i=1,n)], dim=2, ncopies=m)	! { dg-error "requires an increase of the allowed 65535 upper limit" }
+   print *, x(n,m)
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/streamio_18.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/streamio_18.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/streamio_18.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/streamio_18.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,23 ----
+ ! { dg-do run }
+ ! PR91200
+ program foo
+   implicit none
+   integer fd
+   open(newunit=fd, file='test.dat', access='stream', form='formatted')
+   write(fd,'(A)') '$MeshFormat'
+   write(fd,'(A)') 'aabbccdd'
+   close(fd)
+   call readfile  ! Read test.dat
+ contains
+   subroutine readfile
+      character(len=20) buf1, buf2
+      integer fd, m, n
+      open(newunit=fd, file='test.dat', access='stream', form='formatted')
+      inquire(fd, pos=m)
+      if (m /= 1) stop 'm /= 1'
+      read(fd, *) buf1
+      read(fd, *, pos=m) buf2        ! Reread by using pos=1
+      close(fd, status='delete')
+      if (buf1 /= buf2) stop 'wrong'
+   end subroutine readfile
+ end program
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/substr_8.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/substr_8.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/substr_8.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/substr_8.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,15 ----
+ ! { dg-do run }
+ ! PR fortran/71203 - used to ICE on zero-length arrays or substrings
+ ! Derived from original test cases by Gerhard Steinmetz
+ 
+ program p
+   implicit none
+   character(3), parameter :: a(4) = ' '
+   character(*), parameter :: b(4) = 'abc'
+   character(*), parameter :: x(*) = a(2:2)(3:1)
+   character(*), parameter :: y(*) = a(2:1)(3:1)
+   character(*), parameter :: z(*) = b(2:1)(2:3)
+   if (size (x) /= 1 .or. len(x) /= 0) stop 1
+   if (size (y) /= 0 .or. len(y) /= 0) stop 2
+   if (size (z) /= 0 .or. len(z) /= 2) stop 3
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/substr_simplify.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/substr_simplify.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/substr_simplify.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/substr_simplify.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,20 ----
+ ! { dg-do run }
+ !
+ ! Test fixes for substring simplications derived from
+ ! PR fortran/89077 - ICE using * as len specifier for character parameter
+ 
+ program test
+   implicit none
+   integer :: i
+   character(*), parameter :: s = 'abcdef', y = 'efcdab'
+   character(6), save      :: t = transfer ([(s(i:i),  i=1,len(s)  )], s)
+   character(*), parameter :: u = transfer ([(s(i:i+2),i=1,len(s),3)], s)
+   character(6), save      :: v = transfer ([(s(i:i+2),i=1,len(s),3)], s)
+   character(*), parameter :: w = transfer ([(y(i:i+1),i=len(s)-1,1,-2)], s)
+   character(6), save      :: x = transfer ([(y(i:i+1),i=len(s)-1,1,-2)], s)
+   if (len (t) /= len (s) .or. t /= s) stop 1
+   if (len (u) /= len (s) .or. u /= s) stop 2
+   if (len (v) /= len (s) .or. v /= s) stop 3
+   if (len (w) /= len (s) .or. w /= s) stop 4
+   if (len (x) /= len (s) .or. x /= s) stop 5
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/transfer_check_5.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/transfer_check_5.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/transfer_check_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/transfer_check_5.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,14 ----
+ ! { dg-do compile }
+ ! { dg-options "-Wsurprising" }
+ !
+ ! PR fortran/89516 - ICE in gfc_calculate_transfer_sizes at gcc/fortran/check.c:5506
+ ! Found by Martin Liška
+ 
+ program test
+   character(*), parameter :: n = ''
+   character(*), parameter :: o = transfer ([''], n)
+   print *, transfer(1,'',size=0) ! No warning
+   print *, transfer(1,'',size=1) ! No warning
+   print *, transfer('',1,size=0) ! No warning
+   print *, transfer('',1,size=1) ! { dg-warning "has partly undefined result" }
+ end program test
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/transfer_simplify_12.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/transfer_simplify_12.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/transfer_simplify_12.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/transfer_simplify_12.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,27 ----
+ ! { dg-do run }
+ ! { dg-options "-O -std=legacy" }
+ !
+ ! Test fixes for some findings while resolving PR fortran/89077
+ 
+ program test
+   implicit none
+   integer :: i
+   character(*)  ,parameter :: s =  'abcdef'   ! Length will be 6
+   character(*)  ,parameter :: h = 6Habcdef    ! Length will be 8 (Hollerith!)
+   character(10) ,parameter :: k = 6Habcdef
+   character(10) ,parameter :: t = transfer (s, s)
+   character(10) ,save      :: u = transfer (s, s)
+   character(10) ,parameter :: v = transfer (h, h)
+   character(10) ,save      :: w = transfer (h, h)
+   character(10) ,parameter :: x = transfer ([(s(i:i),i=len(s),1,-1)], s)
+   character(10) ,save      :: y = transfer ([(s(i:i),i=len(s),1,-1)], s)
+   if (len (h) /= 8) stop 1
+   if (h /= s) stop 2
+   if (k /= s) stop 3
+   if (t /= s) stop 4
+   if (u /= s) stop 5
+   if (v /= s) stop 6
+   if (w /= s) stop 7
+   if (x /= "fedcba") stop 8
+   if (y /= x) stop 9
+ end program test
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/transpose_optimization_2.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/transpose_optimization_2.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/transpose_optimization_2.f90	Fri Jan 25 20:08:58 2019
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/transpose_optimization_2.f90	Wed Mar  4 08:30:02 2020
*************** end
*** 61,64 ****
  ! The check below for temporaries gave 14 and 33 for "parm" and "atmp".
  !
  ! { dg-final { scan-tree-dump-times "parm" 72 "original" } }
! ! { dg-final { scan-tree-dump-times "atmp" 12 "original" } }
--- 61,64 ----
  ! The check below for temporaries gave 14 and 33 for "parm" and "atmp".
  !
  ! { dg-final { scan-tree-dump-times "parm" 72 "original" } }
! ! { dg-final { scan-tree-dump-times "atmp" 13 "original" } }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/warn_conversion_11.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/warn_conversion_11.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/warn_conversion_11.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/warn_conversion_11.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,18 ----
+ ! { dg-do compile }
+ ! { dg-options "-Wconversion" }
+ ! PR 86119 - this used to warn.
+ program proglen
+ 
+ implicit none
+ 
+    class(*), allocatable :: s
+    integer :: l2
+ 
+    allocate(s, source = '123  ')
+ 
+    select type(s)
+    type is (character(len=*))
+       l2 = len(s)
+    end select
+ 
+ end program proglen
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,16 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-Wunused-dummy-argument" }
+ ! PR 91557 - this used to generate a bogus warning
+ ! Test case by Gerhard Steinmetz
+ program p
+    integer :: a, b
+    a = 1
+    call g
+ contains
+    subroutine g
+       integer :: x, y
+       call h (x, y)
+       if ( a > 0 )   y = y - 1
+       b = y - x + 1
+    end
+ end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gfortran.dg/whole_file_3.f90 gcc-8.4.0/gcc/testsuite/gfortran.dg/whole_file_3.f90
*** gcc-8.3.0/gcc/testsuite/gfortran.dg/whole_file_3.f90	Fri Feb 18 16:04:10 2011
--- gcc-8.4.0/gcc/testsuite/gfortran.dg/whole_file_3.f90	Wed Mar  4 08:30:02 2020
***************
*** 14,21 ****
  
        program test
        EXTERNAL R
!       call PHLOAD (R, 1) ! { dg-warning "Missing alternate return spec" }
!       CALL PHLOAD (R, 2) ! { dg-warning "Missing alternate return spec" }
        CALL PHLOAD (R, *999) ! This one is OK
   999  continue
        END program test
--- 14,21 ----
  
        program test
        EXTERNAL R
!       call PHLOAD (R, 1) ! { dg-error "Missing alternate return specifier" }
!       CALL PHLOAD (R, 2) ! { dg-error "Missing alternate return specifier" }
        CALL PHLOAD (R, *999) ! This one is OK
   999  continue
        END program test
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/lto24.adb gcc-8.4.0/gcc/testsuite/gnat.dg/lto24.adb
*** gcc-8.3.0/gcc/testsuite/gnat.dg/lto24.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/lto24.adb	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,10 ----
+ -- { dg-do link }
+ -- { dg-options "-O -g -flto" { target lto } }
+ 
+ with Lto24_Pkg1;
+ 
+ procedure Lto24 is
+   R : Lto24_Pkg1.Rec (False);
+ begin
+   R.Empty := True;
+ end;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/lto24_pkg1.ads gcc-8.4.0/gcc/testsuite/gnat.dg/lto24_pkg1.ads
*** gcc-8.3.0/gcc/testsuite/gnat.dg/lto24_pkg1.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/lto24_pkg1.ads	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,17 ----
+ with Lto24_Pkg2;
+ 
+ package Lto24_Pkg1 is
+ 
+   Max_Elem : constant Natural := Lto24_Pkg2.Get;
+ 
+   type Arr is array (Natural range <>) of Boolean;
+ 
+   type Rec (B : Boolean) is record
+      I : Integer;
+      case B is
+        when True => A : Arr (1 .. Max_Elem);
+        when False => Empty : Boolean;
+      end case;
+   end record;
+ 
+ end Lto24_Pkg1;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/lto24_pkg2.adb gcc-8.4.0/gcc/testsuite/gnat.dg/lto24_pkg2.adb
*** gcc-8.3.0/gcc/testsuite/gnat.dg/lto24_pkg2.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/lto24_pkg2.adb	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,8 ----
+ package body Lto24_Pkg2 is
+ 
+   function Get return Natural is
+   begin
+     return 16;
+   end;
+ 
+ end Lto24_Pkg2;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/lto24_pkg2.ads gcc-8.4.0/gcc/testsuite/gnat.dg/lto24_pkg2.ads
*** gcc-8.3.0/gcc/testsuite/gnat.dg/lto24_pkg2.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/lto24_pkg2.ads	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,5 ----
+ package Lto24_Pkg2 is
+ 
+   function Get return Natural;
+ 
+ end Lto24_Pkg2;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/opt77.adb gcc-8.4.0/gcc/testsuite/gnat.dg/opt77.adb
*** gcc-8.3.0/gcc/testsuite/gnat.dg/opt77.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/opt77.adb	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,14 ----
+ -- { dg-do run }
+ -- { dg-options "-O -fno-inline" }
+ 
+ with Opt77_Pkg; use Opt77_Pkg;
+ 
+ procedure Opt77 is
+   N : Natural := 0;
+   To_Add : Boolean;
+ begin
+   Proc ("One", N, To_Add);
+   if To_Add then
+     raise Program_Error;
+   end if;
+ end;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/opt77_pkg.adb gcc-8.4.0/gcc/testsuite/gnat.dg/opt77_pkg.adb
*** gcc-8.3.0/gcc/testsuite/gnat.dg/opt77_pkg.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/opt77_pkg.adb	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,28 ----
+ package body Opt77_Pkg is
+ 
+   function Compare (S : String) return Boolean is
+   begin
+     return S = "Two";
+   end;
+ 
+   procedure Proc (S : String; N : in out Natural; To_Add : out Boolean) is
+     To_Take : Boolean := False;
+     To_Read : Boolean := False;
+   begin
+     To_Add := False;
+ 
+     if S = "One" then
+       To_Read := True;
+       To_Take := Compare (S);
+     end if;
+ 
+     if To_Read and not To_Take then
+       N := N + 1;
+     end if;
+ 
+     if To_Take then
+       To_Add := True;
+     end if;
+   end;
+ 
+ end Opt77_Pkg;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/opt77_pkg.ads gcc-8.4.0/gcc/testsuite/gnat.dg/opt77_pkg.ads
*** gcc-8.3.0/gcc/testsuite/gnat.dg/opt77_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/opt77_pkg.ads	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,5 ----
+ package Opt77_Pkg is
+ 
+   procedure Proc (S : String; N : in out Natural; To_Add : out Boolean);
+ 
+ end Opt77_Pkg;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/opt78.adb gcc-8.4.0/gcc/testsuite/gnat.dg/opt78.adb
*** gcc-8.3.0/gcc/testsuite/gnat.dg/opt78.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/opt78.adb	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,16 ----
+ -- { dg-do compile }
+ -- { dg-options "-O" }
+ 
+ package body Opt78 is
+ 
+    procedure Proc (P : UC; Msg : String) is
+       Default : UC := (1, "!");
+    begin
+       if P = Default then
+          raise Program_Error;
+       else
+          raise Constraint_Error;
+       end if;
+    end;
+ 
+ end Opt78;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/opt78.ads gcc-8.4.0/gcc/testsuite/gnat.dg/opt78.ads
*** gcc-8.3.0/gcc/testsuite/gnat.dg/opt78.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/opt78.ads	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,13 ----
+ package Opt78 is
+ 
+    subtype Reasonable is Integer range 1..10;
+ 
+    type UC (D: Reasonable := 2) is record
+       S: String (1 .. D) := "Hi";
+    end record;
+ 
+    type AUC is access all UC;
+ 
+    procedure Proc (P : UC; Msg : String);
+ 
+ end Opt78;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/opt79.adb gcc-8.4.0/gcc/testsuite/gnat.dg/opt79.adb
*** gcc-8.3.0/gcc/testsuite/gnat.dg/opt79.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/opt79.adb	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,28 ----
+ -- { dg-do compile }
+ -- { dg-options "-O" }
+ 
+ package body Opt79 is
+ 
+   function F (I : Integer) return Arr is
+     A : Arr;
+ 
+     procedure Nested is
+ 
+       procedure Inner is
+       begin
+         A (1) := 0;
+       end;
+ 
+     begin
+        Inner;
+     end;
+ 
+   begin
+     Nested;
+     for J in A'Range loop
+       A (J) := I;
+     end loop;
+     return A;
+   end;
+ 
+ end Opt79;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/opt79.ads gcc-8.4.0/gcc/testsuite/gnat.dg/opt79.ads
*** gcc-8.3.0/gcc/testsuite/gnat.dg/opt79.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/opt79.ads	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,7 ----
+ package Opt79 is
+ 
+   type Arr is array (1 .. 8) of Integer;
+ 
+   function F (I : Integer) return Arr;
+ 
+ end Opt79;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/specs/array4.ads gcc-8.4.0/gcc/testsuite/gnat.dg/specs/array4.ads
*** gcc-8.3.0/gcc/testsuite/gnat.dg/specs/array4.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/specs/array4.ads	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,17 ----
+ -- { dg-do compile }
+ -- { dg-skip-if "missing -gsplit-dwarf support" { *-*-darwin* } }
+ -- { dg-options "-gsplit-dwarf" }
+ 
+ package Array4 is
+ 
+   type Arr1 is array (Positive range <>) of Boolean;
+ 
+   Size : Positive := 20;
+ 
+   type Rec is record
+     A : Arr1 (1 .. Size);
+   end record;
+ 
+   type Arr2 is array (Positive range <>) of Rec;
+ 
+ end Array4;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/specs/array5.ads gcc-8.4.0/gcc/testsuite/gnat.dg/specs/array5.ads
*** gcc-8.3.0/gcc/testsuite/gnat.dg/specs/array5.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/specs/array5.ads	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,9 ----
+ -- { dg-do compile }
+ 
+ with Array5_Pkg1; use Array5_Pkg1;
+ 
+ package Array5 is
+ 
+   C : constant Integer := Arr'Last;
+ 
+ end Array5;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/specs/array5_pkg1.ads gcc-8.4.0/gcc/testsuite/gnat.dg/specs/array5_pkg1.ads
*** gcc-8.3.0/gcc/testsuite/gnat.dg/specs/array5_pkg1.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/specs/array5_pkg1.ads	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,14 ----
+ with Array5_Pkg2; use Array5_Pkg2;
+ with Array5_Pkg2.G;
+ 
+ package Array5_Pkg1 is
+ 
+   type Derived is new Root with record
+     N : Integer;
+   end record;
+ 
+   package My_G is new Array5_Pkg2.G (Derived);
+ 
+   type Arr is array (1 .. My_G.Data.N) of Integer;
+ 
+ end Array5_Pkg1;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/specs/array5_pkg2-g.ads gcc-8.4.0/gcc/testsuite/gnat.dg/specs/array5_pkg2-g.ads
*** gcc-8.3.0/gcc/testsuite/gnat.dg/specs/array5_pkg2-g.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/specs/array5_pkg2-g.ads	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,13 ----
+ with System.Address_To_Access_Conversions;
+ 
+ generic
+ 
+   type T is new Root with private;
+ 
+ package Array5_Pkg2.G is
+ 
+   package Ptr is new System.Address_To_Access_Conversions (T);
+ 
+   Data : Ptr.Object_Pointer;
+ 
+ end Array5_Pkg2.G;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/specs/array5_pkg2.ads gcc-8.4.0/gcc/testsuite/gnat.dg/specs/array5_pkg2.ads
*** gcc-8.3.0/gcc/testsuite/gnat.dg/specs/array5_pkg2.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/specs/array5_pkg2.ads	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,5 ----
+ package Array5_Pkg2 is
+ 
+   type Root is tagged null record;
+ 
+ end Array5_Pkg2;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/gnat.dg/unchecked_convert13.adb gcc-8.4.0/gcc/testsuite/gnat.dg/unchecked_convert13.adb
*** gcc-8.3.0/gcc/testsuite/gnat.dg/unchecked_convert13.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/gnat.dg/unchecked_convert13.adb	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,30 ----
+ -- { dg-do compile }
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ procedure Unchecked_Convert13 is
+ 
+   type B16_T is mod 2 ** 16;
+   for B16_T'Size use 16;
+   for B16_T'Alignment use 1;
+ 
+   type Rec_T is record
+     A : Short_Integer;
+   end record;
+   for Rec_T use record
+     A at 0 range 0 .. 15;
+   end record;
+   for Rec_T'Size use 16;
+ 
+   Rec : constant Rec_T := (A => 0);
+ 
+   function Rec_To_B16 is new Ada.Unchecked_Conversion (Rec_T, B16_T);
+ 
+   procedure Nested (B16 : B16_T) is
+   begin
+     null;
+   end;
+ 
+ begin
+   Nested (Rec_To_B16 (Rec));
+ end;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/lib/scanasm.exp gcc-8.4.0/gcc/testsuite/lib/scanasm.exp
*** gcc-8.3.0/gcc/testsuite/lib/scanasm.exp	Wed Mar 14 10:47:32 2018
--- gcc-8.4.0/gcc/testsuite/lib/scanasm.exp	Wed Mar  4 08:30:02 2020
*************** proc dg-function-on-line { args } {
*** 504,510 ****
  	}
      }
  
!     if { [istarget hppa*-*-*] } {
  	set pattern [format {\t;[^:]+:%d(:[0-9]+)?\n(\t[^\t]+\n)+%s:\n\t.PROC} \
                       $line $symbol]
      } elseif { [istarget mips*-*-*] } {
--- 504,513 ----
  	}
      }
  
!     if { [istarget hppa*-*-linux*] } {
! 	set pattern [format {%s:\n\t.PROC\n\t.CALLINFO.*\n\t.ENTRY\n.L.*:\n(\t.file[^\t]*)*\t[^:]+:%d(:[0-9]+)?\n} \
!                      $symbol $line]
!     } elseif { [istarget hppa*-*-*] } {
  	set pattern [format {\t;[^:]+:%d(:[0-9]+)?\n(\t[^\t]+\n)+%s:\n\t.PROC} \
                       $line $symbol]
      } elseif { [istarget mips*-*-*] } {
diff -Nrcpad gcc-8.3.0/gcc/testsuite/lib/target-supports.exp gcc-8.4.0/gcc/testsuite/lib/target-supports.exp
*** gcc-8.3.0/gcc/testsuite/lib/target-supports.exp	Thu Jun 28 22:23:51 2018
--- gcc-8.4.0/gcc/testsuite/lib/target-supports.exp	Wed Mar  4 08:30:02 2020
*************** proc check_effective_target_powerpc_p8ve
*** 5018,5030 ****
  	     || [istarget powerpc*-*-aix5.2*] } {
  	    return 0
  	}
  	return [check_no_compiler_messages powerpc_p8vector_ok object {
  	    int main (void) {
- #ifdef __MACH__
- 		asm volatile ("xxlorc vs0,vs0,vs0");
- #else
  		asm volatile ("xxlorc 0,0,0");
- #endif
  		return 0;
  	    }
  	} "-mpower8-vector"]
--- 5018,5030 ----
  	     || [istarget powerpc*-*-aix5.2*] } {
  	    return 0
  	}
+ 	# Darwin doesn't run on power8, so far.
+ 	if { [istarget *-*-darwin*] } {
+ 	    return 0
+ 	}
  	return [check_no_compiler_messages powerpc_p8vector_ok object {
  	    int main (void) {
  		asm volatile ("xxlorc 0,0,0");
  		return 0;
  	    }
  	} "-mpower8-vector"]
*************** proc check_effective_target_powerpc_p9ve
*** 5045,5050 ****
--- 5045,5054 ----
  	     || [istarget powerpc*-*-aix5.2*] } {
  	    return 0
  	}
+ 	# Darwin doesn't run on power9, so far.
+ 	if { [istarget *-*-darwin*] } {
+ 	    return 0
+ 	}
  	return [check_no_compiler_messages powerpc_p9vector_ok object {
  	    int main (void) {
  		long e = -1;
*************** proc check_effective_target_powerpc_floa
*** 5095,5100 ****
--- 5099,5108 ----
  	     || [istarget powerpc*-*-aix5.2*] } {
  	    return 0
  	}
+ 	# Darwin doesn't have VSX, so no soft support for float128.
+ 	if { [istarget *-*-darwin*] } {
+ 	    return 0
+ 	}
  	return [check_no_compiler_messages powerpc_float128_sw_ok object {
  		volatile __float128 x = 1.0q;
  		volatile __float128 y = 2.0q;
*************** proc check_effective_target_powerpc_floa
*** 5121,5126 ****
--- 5129,5138 ----
  	     || [istarget powerpc*-*-aix5.2*] } {
  	    return 0
  	}
+ 	# Darwin doesn't run on any machine with float128 h/w so far.
+ 	if { [istarget *-*-darwin*] } {
+ 	    return 0
+ 	}
  	return [check_no_compiler_messages powerpc_float128_hw_ok object {
  		volatile __float128 x = 1.0q;
  		volatile __float128 y = 2.0q;
*************** proc check_effective_target_powerpc_vsx_
*** 5147,5159 ****
  	     || [istarget powerpc*-*-aix6*] } {
  	    return 0
  	}
  	return [check_no_compiler_messages powerpc_vsx_ok object {
  	    int main (void) {
- #ifdef __MACH__
- 		asm volatile ("xxlor vs0,vs0,vs0");
- #else
  		asm volatile ("xxlor 0,0,0");
- #endif
  		return 0;
  	    }
  	} "-mvsx"]
--- 5159,5172 ----
  	     || [istarget powerpc*-*-aix6*] } {
  	    return 0
  	}
+ 	# Darwin doesn't have VSX, even if it's used with an assembler
+ 	# which recognises the insns.
+ 	if { [istarget *-*-darwin*] } {
+ 	    return 0
+ 	}
  	return [check_no_compiler_messages powerpc_vsx_ok object {
  	    int main (void) {
  		asm volatile ("xxlor 0,0,0");
  		return 0;
  	    }
  	} "-mvsx"]
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm	Wed Mar  4 08:30:02 2020
***************
*** 2,14 ****
  
  // { dg-do run { target *-*-darwin* } }
  // { dg-skip-if "" { *-*-* } { "-fgnu-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" } { "" } }
  
  #include <objc/objc-runtime.h>
  #include <stdlib.h>
! #include <Foundation/NSObject.h>
  
  //extern "C" { int printf(const char *,...); }
  #define CHECK_IF(expr) if(!(expr)) abort()
--- 2,15 ----
  
  // { dg-do run { target *-*-darwin* } }
  // { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } }
+ // { dg-skip-if "Headers incompatible with 10.4 APIs" { *-*-darwin1[3-8]* } { "-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" } { "" } }
  
  #include <objc/objc-runtime.h>
  #include <stdlib.h>
! #include "../objc-obj-c++-shared/F-NSObject.h"
  
  //extern "C" { int printf(const char *,...); }
  #define CHECK_IF(expr) if(!(expr)) abort()
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/isa-field-1.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/isa-field-1.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/isa-field-1.mm	Mon Jun  6 22:46:58 2011
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/isa-field-1.mm	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,7 ----
  /* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects.  */
  /* { dg-do compile } */
+ /* The use of isa is deprecated, but we still want to test that is works. */
+ /* { dg-additional-options "-Wno-deprecated-declarations" } */
  
  #include "../objc-obj-c++-shared/TestsuiteObject.h"
  #include "../objc-obj-c++-shared/runtime.h"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/objc-gc-3.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/objc-gc-3.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/objc-gc-3.mm	Mon Jun  6 22:46:58 2011
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/objc-gc-3.mm	Wed Mar  4 08:30:02 2020
***************
*** 3,8 ****
--- 3,9 ----
  /* Contributed by Ziemowit Laski <zlaski@apple.com>  */
  
  /* { dg-do compile } */
+ /* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-8]* } { "-fnext-runtime" } { "" } } */
  /* { dg-options "-fobjc-gc" } */
  /* { dg-prune-output "cc1objplus: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm	Wed Mar  4 08:30:02 2020
***************
*** 1,9 ****
  /* Check that typedefs of ObjC classes preserve 
     any @protocol qualifiers.  */
  /* { dg-do compile } */
  
  #ifdef __NEXT_RUNTIME__
! #include <Foundation/NSObject.h>
  #define OBJECT NSObject
  #else
  #include <objc/Object.h>
--- 1,11 ----
  /* Check that typedefs of ObjC classes preserve 
     any @protocol qualifiers.  */
  /* { dg-do compile } */
+ /* Suppress warnings that the GNUStep headers introduce.  */
+ /* { dg-additional-options "-std=gnu++11 -Wno-expansion-to-defined -Wno-variadic-macros" { target *-*-darwin* } } */
  
  #ifdef __NEXT_RUNTIME__
! #include "../objc-obj-c++-shared/F-NSObject.h"
  #define OBJECT NSObject
  #else
  #include <objc/Object.h>
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/qual-types-1.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/qual-types-1.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/qual-types-1.mm	Mon Jun  6 22:46:58 2011
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/qual-types-1.mm	Wed Mar  4 08:30:02 2020
***************
*** 4,9 ****
--- 4,11 ----
  
  /* { dg-do run } */
  /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+ /* { dg-prune-output ".*ld: warning: direct access in.*" } */
+ 
  #include "../objc-obj-c++-shared/TestsuiteObject.m"
  #include <stdlib.h>
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm	Sat Oct 27 11:31:06 2012
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm	Wed Mar  4 08:30:02 2020
***************
*** 8,15 ****
  /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-ftrack-macro-expansion=0 -mconstant-cfstrings -Wnonportable-cfstrings" } */
  
! #import <Foundation/NSString.h>
! #import <CoreFoundation/CFString.h>
  
  #ifndef __CONSTANT_CFSTRINGS__
  #error The -fconstant-cfstrings option is not functioning properly
--- 8,15 ----
  /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-ftrack-macro-expansion=0 -mconstant-cfstrings -Wnonportable-cfstrings" } */
  
! #include "../../objc-obj-c++-shared/F-NSString.h"
! #include "../../objc-obj-c++-shared/CF-CFString.h"
  
  #ifndef __CONSTANT_CFSTRINGS__
  #error The -fconstant-cfstrings option is not functioning properly
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm	Wed Mar  4 08:30:02 2020
***************
*** 6,12 ****
  /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-mconstant-cfstrings" } */
  
! #include <Foundation/NSObject.h>
  
  @interface Foo: NSObject {
    char *cString;
--- 6,12 ----
  /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-mconstant-cfstrings" } */
  
! #include "../../objc-obj-c++-shared/F-NSObject.h"
  
  @interface Foo: NSObject {
    char *cString;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm	Wed Mar  4 08:30:02 2020
***************
*** 6,12 ****
  /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */
  
  #ifdef __NEXT_RUNTIME__
! #include <Foundation/NSObject.h>
  #define OBJECT NSObject
  #else
  #include <objc/Object.h>
--- 6,12 ----
  /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */
  
  #ifdef __NEXT_RUNTIME__
! #include "../../objc-obj-c++-shared/F-NSObject.h"
  #define OBJECT NSObject
  #else
  #include <objc/Object.h>
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/stubify-1.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/stubify-1.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/stubify-1.mm	Tue Apr 27 00:08:28 2010
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/stubify-1.mm	Wed Mar  4 08:30:02 2020
***************
*** 4,16 ****
  /* { dg-do compile { target *-*-darwin* } } */
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-require-effective-target ilp32 } */
! /* { dg-options "-Os -mdynamic-no-pic -fno-exceptions -mmacosx-version-min=10.4" } */
  
  typedef struct objc_object { } *id ;
  int x = 41 ;
  
  extern "C" {
!   extern id objc_msgSend(id self, char * op, ...);
    extern int bogonic (int, int, int);
  }
  
--- 4,16 ----
  /* { dg-do compile { target *-*-darwin* } } */
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-require-effective-target ilp32 } */
! /* { dg-options "-mdynamic-no-pic -fno-exceptions -mmacosx-version-min=10.4 -msymbol-stubs" } */
  
  typedef struct objc_object { } *id ;
  int x = 41 ;
  
  extern "C" {
!   extern id objc_msgSend(id self, objc_selector* op, ...);
    extern int bogonic (int, int, int);
  }
  
*************** extern "C" {
*** 20,28 ****
  - (Document *) close;
  @end
  @implementation Document
! - (Document *) class { }
! - (Document *) close { }
! - (Document *) window { }
  - (void)willEndCloseSheet:(void *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo {
    [[self window] close];
    ((void (*)(id, char *, int))objc_msgSend)([self class], (char *)contextInfo, 1);
--- 20,28 ----
  - (Document *) close;
  @end
  @implementation Document
! - (Document *) class { return (Document *)0; }
! - (Document *) close { return (Document *)0; }
! - (Document *) window { return (Document *)0; }
  - (void)willEndCloseSheet:(void *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo {
    [[self window] close];
    ((void (*)(id, char *, int))objc_msgSend)([self class], (char *)contextInfo, 1);
*************** extern "C" {
*** 32,39 ****
  }
  @end
  
! /* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_objc_msgSend\n" } } */
! /* { dg-final { scan-assembler     "\(bl|call\)\[ \t\]+L_objc_msgSend\\\$stub\n" } } */
! /* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_bogonic\n" } } */
! /* { dg-final { scan-assembler     "\(bl|call\)\[ \t\]+L_bogonic\\\$stub\n" } } */
! /* { dg-final { scan-assembler-not "\\\$non_lazy_ptr" } } */
--- 32,39 ----
  }
  @end
  
! /* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */
! /* { dg-final { scan-assembler     {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */
! /* { dg-final { scan-assembler-not {(bl|call)[ \t]+_bogonic\n} } } */
! /* { dg-final { scan-assembler     {(bl|call)[ \t]+L_bogonic\$stub\n} } } */
! /* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/stubify-2.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/stubify-2.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/stubify-2.mm	Tue Apr 27 00:08:28 2010
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/stubify-2.mm	Wed Mar  4 08:30:02 2020
***************
*** 4,10 ****
  /* { dg-do compile { target *-*-darwin* } } */
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-require-effective-target ilp32 } */
! /* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4" } */
  
  typedef struct objc_object { } *id ;
  int x = 41 ;
--- 4,10 ----
  /* { dg-do compile { target *-*-darwin* } } */
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-require-effective-target ilp32 } */
! /* { dg-options "-mdynamic-no-pic -mmacosx-version-min=10.4 -msymbol-stubs" } */
  
  typedef struct objc_object { } *id ;
  int x = 41 ;
*************** extern int bogonic (int, int, int) ;
*** 16,24 ****
  - (Document *) close;
  @end
  @implementation Document
! - (Document *) class { }
! - (Document *) close { }
! - (Document *) window { }
  - (void)willEndCloseSheet:(void *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo {
    [[self window] close];
    ((void (*)(id, char *, int))objc_msgSend)([self class], (char *)contextInfo, 1);
--- 16,24 ----
  - (Document *) close;
  @end
  @implementation Document
! - (Document *) class { return (Document *)0; }
! - (Document *) close { return (Document *)0; }
! - (Document *) window { return (Document *)0; }
  - (void)willEndCloseSheet:(void *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo {
    [[self window] close];
    ((void (*)(id, char *, int))objc_msgSend)([self class], (char *)contextInfo, 1);
*************** extern int bogonic (int, int, int) ;
*** 30,33 ****
  
  /* Any symbol_ref of an un-stubified objc_msgSend is an error; look
     for "objc_msgSend" in quotes, without the $stub suffix. */
! /* { dg-final {  scan-rtl-dump-not "symbol_ref.*\"objc_msgSend\"" "jump" } } */
--- 30,38 ----
  
  /* Any symbol_ref of an un-stubified objc_msgSend is an error; look
     for "objc_msgSend" in quotes, without the $stub suffix. */
! 
! /* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */
! /* { dg-final { scan-assembler     {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */
! /* { dg-final { scan-assembler-not {(bl|call)[ \t]+_Z7bogoniciii\n} } } */
! /* { dg-final { scan-assembler     {(bl|call)[ \t]+L__Z7bogoniciii\$stub\n} } } */
! /* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/syntax-error-1.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/syntax-error-1.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/syntax-error-1.mm	Fri Apr 28 21:24:00 2017
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/syntax-error-1.mm	Wed Mar  4 08:30:02 2020
***************
*** 1,8 ****
  /* Graceful handling of a syntax error.  */
  /* { dg-do compile } */
  
  #ifdef __NEXT_RUNTIME__
! #include <Foundation/NSObject.h>
  #define OBJECT NSObject
  #else
  #include <objc/Object.h>
--- 1,10 ----
  /* Graceful handling of a syntax error.  */
  /* { dg-do compile } */
+ /* Suppress warnings that the GNUStep headers introduce.  */
+ /* { dg-additional-options "-std=gnu++11 -Wno-expansion-to-defined -Wno-variadic-macros" { target *-*-darwin* } } */
  
  #ifdef __NEXT_RUNTIME__
! #include "../objc-obj-c++-shared/F-NSObject.h"
  #define OBJECT NSObject
  #else
  #include <objc/Object.h>
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm	Sat Nov  6 10:48:18 2010
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm	Wed Mar  4 08:30:02 2020
***************
*** 13,20 ****
     well, we don't implement writable ones at this juncture.  */
  /* { dg-options "-mconstant-cfstrings -framework Cocoa -Wl,-w" { target *-*-darwin[123]* } } */
  
! #import <Foundation/NSString.h>
! #import <CoreFoundation/CFString.h>
  #include <stdlib.h>
  
  void printOut(NSString *str) {
--- 13,20 ----
     well, we don't implement writable ones at this juncture.  */
  /* { dg-options "-mconstant-cfstrings -framework Cocoa -Wl,-w" { target *-*-darwin[123]* } } */
  
! #include "../../../objc-obj-c++-shared/F-NSString.h"
! #include "../../../objc-obj-c++-shared/CF-CFString.h"
  #include <stdlib.h>
  
  void printOut(NSString *str) {
*************** int main(void) {
*** 47,56 ****
    checkNSRange([@"Hello World" rangeOfString:(id)CFSTR("World")]);
    checkNSRange([(id)CFSTR("Hello World") rangeOfString:(id)CFSTR("World")]);
  
!   checkCFRange(CFStringFind((CFStringRef)@"Hello World", (CFStringRef)@"World", 0));
!   checkCFRange(CFStringFind(CFSTR("Hello World"), (CFStringRef)@"World", 0));
!   checkCFRange(CFStringFind((CFStringRef)@"Hello World", CFSTR("World"), 0));
!   checkCFRange(CFStringFind(CFSTR("Hello World"), CFSTR("World"), 0));
  
    /* Check for string uniquing.  */
    if (s0a != s0b || s0a != s2 || s1 != (id)s2) {
--- 47,56 ----
    checkNSRange([@"Hello World" rangeOfString:(id)CFSTR("World")]);
    checkNSRange([(id)CFSTR("Hello World") rangeOfString:(id)CFSTR("World")]);
  
!   checkCFRange(CFStringFind((CFStringRef)@"Hello World", (CFStringRef)@"World", (CFStringCompareFlags)0));
!   checkCFRange(CFStringFind(CFSTR("Hello World"), (CFStringRef)@"World", (CFStringCompareFlags)0));
!   checkCFRange(CFStringFind((CFStringRef)@"Hello World", CFSTR("World"), (CFStringCompareFlags)0));
!   checkCFRange(CFStringFind(CFSTR("Hello World"), CFSTR("World"), (CFStringCompareFlags)0));
  
    /* Check for string uniquing.  */
    if (s0a != s0b || s0a != s2 || s1 != (id)s2) {
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm	Wed Mar  4 08:30:02 2020
***************
*** 6,12 ****
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
  
! #include <Foundation/NSObject.h>
  #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
  
  @interface NSString: NSObject
--- 6,12 ----
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
  
! #include "../../../objc-obj-c++-shared/F-NSObject.h"
  #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
  
  @interface NSString: NSObject
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm	Wed Mar  4 08:30:02 2020
***************
*** 7,13 ****
  /* { dg-options "-fconstant-string-class=XStr" } */
  /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */
  
! #include <Foundation/NSObject.h>
  #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
  
  @interface XString: NSObject {
--- 7,13 ----
  /* { dg-options "-fconstant-string-class=XStr" } */
  /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */
  
! #include "../../../objc-obj-c++-shared/F-NSObject.h"
  #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
  
  @interface XString: NSObject {
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm	Wed Mar  4 08:30:02 2020
***************
*** 5,11 ****
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
  
! #include <Foundation/NSObject.h>
  #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
  
  @interface NSConstantString: NSObject {
--- 5,11 ----
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
  
! #include "../../../objc-obj-c++-shared/F-NSObject.h"
  #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
  
  @interface NSConstantString: NSObject {
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/try-catch-1.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/try-catch-1.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/try-catch-1.mm	Mon Jun  6 22:46:58 2011
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/try-catch-1.mm	Wed Mar  4 08:30:02 2020
*************** int foo()
*** 39,42 ****
--- 39,43 ----
    @finally {
      printf("In @finally block (%d)... ", exc_control);
    }
+   return -1;
  }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/obj-c++.dg/try-catch-3.mm gcc-8.4.0/gcc/testsuite/obj-c++.dg/try-catch-3.mm
*** gcc-8.3.0/gcc/testsuite/obj-c++.dg/try-catch-3.mm	Mon Jun  6 22:46:58 2011
--- gcc-8.4.0/gcc/testsuite/obj-c++.dg/try-catch-3.mm	Wed Mar  4 08:30:02 2020
*************** const char *foo(void)
*** 15,18 ****
--- 15,19 ----
    @catch (TestsuiteObject* theException) {
      return [theException name];
    }
+   return (const char *)0;
  }
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/CF-CFString.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/CF-CFString.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/CF-CFString.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/CF-CFString.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,33 ----
+ /* Copyright (C) 2019 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef _OBJC_CF_CFSTRING_H_
+ #define _OBJC_CF_CFSTRING_H_
+ 
+ /* This is a workaround to PR90709 for the NeXT runtime.
+    If we're on a system version that has headers with items we can't
+    consume, then use the GNUStep header instead.
+ */
+ 
+ #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090
+ #  import "GNUStep/CoreFoundation/CFString.h"
+ #else 
+ #  import <CoreFoundation/CFString.h>
+ #endif
+ 
+ #endif /* _OBJC_CF_CFSTRING_H_ */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/F-NSArray.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSArray.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/F-NSArray.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSArray.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,33 ----
+ /* Copyright (C) 2019 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef _OBJC_F_NSARRAY_H_
+ #define _OBJC_F_NSARRAY_H_
+ 
+ /* This is a workaround to PR90709 for the NeXT runtime.
+    If we're on a system version that has headers with items we can't
+    consume, then use the GNUStep header instead.
+ */
+ 
+ #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090
+ #  import "GNUStep/Foundation/NSArray.h"
+ #else 
+ #  import <Foundation/NSArray.h>
+ #endif
+ 
+ #endif /* _OBJC_F_NSARRAY_H_ */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,33 ----
+ /* Copyright (C) 2019 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef _OBJC_F_NSAUTORELEASEPOOL_H_
+ #define _OBJC_F_NSAUTORELEASEPOOL_H_
+ 
+ /* This is a workaround to PR90709 for the NeXT runtime.
+    If we're on a system version that has headers with items we can't
+    consume, then use the GNUStep header instead.
+ */
+ 
+ #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090
+ #  import "GNUStep/Foundation/NSAutoreleasePool.h"
+ #else 
+ #  import <Foundation/NSAutoreleasePool.h>
+ #endif
+ 
+ #endif /* _OBJC_F_NSAUTORELEASEPOOL_H_ */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/F-NSObject.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSObject.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/F-NSObject.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSObject.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,33 ----
+ /* Copyright (C) 2019 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef _OBJC_F_NSOBJECT_H_
+ #define _OBJC_F_NSOBJECT_H_
+ 
+ /* This is a workaround to PR90709 for the NeXT runtime.
+    If we're on a system version that has headers with items we can't
+    consume, then use the GNUStep header instead.
+ */
+ 
+ #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090
+ #  import "GNUStep/Foundation/NSObject.h"
+ #else 
+ #  import <Foundation/NSObject.h>
+ #endif
+ 
+ #endif /* _OBJC_F_NSOBJECT_H_ */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/F-NSString.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSString.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/F-NSString.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSString.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,33 ----
+ /* Copyright (C) 2019 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef _OBJC_F_NSSTRING_H_
+ #define _OBJC_F_NSSTRING_H_
+ 
+ /* This is a workaround to PR90709 for the NeXT runtime.
+    If we're on a system version that has headers with items we can't
+    consume, then use the GNUStep header instead.
+ */
+ 
+ #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090
+ #  import "GNUStep/Foundation/NSString.h"
+ #else 
+ #  import <Foundation/NSString.h>
+ #endif
+ 
+ #endif /* _OBJC_F_NSSTRING_H_ */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/F-NSValue.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSValue.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/F-NSValue.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSValue.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,33 ----
+ /* Copyright (C) 2019 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef _OBJC_F_NSSTRING_H_
+ #define _OBJC_F_NSSTRING_H_
+ 
+ /* This is a workaround to PR90709 for the NeXT runtime.
+    If we're on a system version that has headers with items we can't
+    consume, then use the GNUStep header instead.
+ */
+ 
+ #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090
+ #  import "GNUStep/Foundation/NSValue.h"
+ #else 
+ #  import <Foundation/NSValue.h>
+ #endif
+ 
+ #endif /* _OBJC_F_NSSTRING_H_ */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,191 ----
+ /* CFArray.h
+    
+    Copyright (C) 2010 Free Software Foundation, Inc.
+    
+    Written by: Stefan Bidigaray
+    Date: January, 2010
+    
+    This file is part of CoreBase.
+    
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, 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
+    Lesser General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; see the file COPYING.LIB.
+    If not, see <http://www.gnu.org/licenses/> or write to the 
+    Free Software Foundation, 51 Franklin Street, Fifth Floor, 
+    Boston, MA 02110-1301, USA.
+ */
+ 
+ 
+ #ifndef __COREFOUNDATION_CFARRAY_H__
+ #define __COREFOUNDATION_CFARRAY_H__
+ 
+ #include "CFBase.h"
+ 
+ CF_EXTERN_C_BEGIN
+ /** \ingroup CFArrayRef
+     \brief Reference to an immutable array object.
+  */
+ typedef const struct __CFArray *CFArrayRef;
+ /**
+     \ingroup CFMutableArrayRef
+     \brief Reference to a mutable array object.
+  */
+ typedef struct __CFArray *CFMutableArrayRef;
+ 
+ /** \defgroup CFArrayRef CFArray Reference
+     \brief A CFArray and its mutable type, \ref CFMutableArrayRef
+       "CFMutableArray", are simple, low overhead, ordered containers for
+       objects.
+     \details
+       <code>\#include <CoreFoundation/CFArray.h></code>
+     \{
+  */
+ 
+ /** \name Callbacks
+     \{
+  */
+ typedef void (*CFArrayApplierFunction) (const void *value, void *context);
+ typedef CFStringRef (*CFArrayCopyDescriptionCallBack) (const void *value);
+ typedef void (*CFArrayReleaseCallBack) (CFAllocatorRef allocator,
+                                         const void *value);
+ typedef const void *(*CFArrayRetainCallBack) (CFAllocatorRef allocator,
+                                               const void *value);
+ typedef Boolean (*CFArrayEqualCallBack) (const void *value1,
+                                          const void *value2);
+ /** \} */
+ 
+ /** \brief Structure with CFArray callbacks.
+  */
+ typedef struct _CFArrayCallBacks CFArrayCallBacks;
+ struct _CFArrayCallBacks
+ {
+   CFIndex version; /**< Structure's version number.  Current version is 0. */
+   CFArrayRetainCallBack retain;
+     /**< The callback used to retain values added to the array.  If NULL,
+ 	 values are not retained. */
+   CFArrayReleaseCallBack release;
+   CFArrayCopyDescriptionCallBack copyDescription;
+   CFArrayEqualCallBack equal;
+ };
+ 
+ /** \name Predefined Callback Structures
+     \{
+  */
+ CF_EXPORT const CFArrayCallBacks kCFTypeArrayCallBacks;
+ /** \} */
+ 
+ 
+ 
+ /** \name Creating an Array
+     \{
+  */
+ CF_EXPORT CFArrayRef
+ CFArrayCreate (CFAllocatorRef allocator, const void **values,
+                CFIndex numValues, const CFArrayCallBacks * callBacks);
+ 
+ CF_EXPORT CFArrayRef
+ CFArrayCreateCopy (CFAllocatorRef allocator, CFArrayRef theArray);
+ /** \} */
+ 
+ /** \name Examining an Array
+     \{
+  */
+ CF_EXPORT CFIndex
+ CFArrayBSearchValues (CFArrayRef theArray, CFRange range, const void *value,
+                       CFComparatorFunction comparator, void *context);
+ 
+ CF_EXPORT Boolean
+ CFArrayContainsValue (CFArrayRef theArray, CFRange range, const void *value);
+ 
+ CF_EXPORT CFIndex CFArrayGetCount (CFArrayRef theArray);
+ 
+ CF_EXPORT CFIndex
+ CFArrayGetCountOfValue (CFArrayRef theArray, CFRange range, const void *value);
+ 
+ CF_EXPORT CFIndex
+ CFArrayGetFirstIndexOfValue (CFArrayRef theArray, CFRange range,
+                              const void *value);
+ 
+ CF_EXPORT CFIndex
+ CFArrayGetLastIndexOfValue (CFArrayRef theArray, CFRange range,
+                             const void *value);
+ 
+ CF_EXPORT void
+ CFArrayGetValues (CFArrayRef theArray, CFRange range, const void **values);
+ 
+ CF_EXPORT const void *CFArrayGetValueAtIndex (CFArrayRef theArray, CFIndex idx);
+ /** \} */
+ 
+ /** \name Applying a Function to Elements
+     \{
+  */
+ CF_EXPORT void
+ CFArrayApplyFunction (CFArrayRef theArray, CFRange range,
+                       CFArrayApplierFunction applier, void *context);
+ /** \} */
+ 
+ /** \name Getting the CFArray Type ID
+     \{
+  */
+ CF_EXPORT CFTypeID CFArrayGetTypeID (void);
+ /** \} */
+ 
+ /** \} */
+ 
+ /** \defgroup CFMutableArrayRef CFMutableArray Reference
+     \details <code>\#include <CoreFoundation/CFArray.h></code>
+     \{
+  */
+ CF_EXPORT void
+ CFArrayAppendArray (CFMutableArrayRef theArray, CFArrayRef otherArray,
+                     CFRange otherRange);
+ 
+ CF_EXPORT void
+ CFArrayAppendValue (CFMutableArrayRef theArray, const void *value);
+ 
+ CF_EXPORT CFMutableArrayRef
+ CFArrayCreateMutable (CFAllocatorRef allocator, CFIndex capacity,
+                       const CFArrayCallBacks * callBacks);
+ 
+ CF_EXPORT CFMutableArrayRef
+ CFArrayCreateMutableCopy (CFAllocatorRef allocator, CFIndex capacity,
+                           CFArrayRef theArray);
+ 
+ CF_EXPORT void
+ CFArrayExchangeValuesAtIndices (CFMutableArrayRef theArray, CFIndex idx1,
+                                 CFIndex idx2);
+ 
+ CF_EXPORT void
+ CFArrayInsertValueAtIndex (CFMutableArrayRef theArray, CFIndex idx,
+                            const void *value);
+ 
+ CF_EXPORT void CFArrayRemoveAllValues (CFMutableArrayRef theArray);
+ 
+ CF_EXPORT void
+ CFArrayRemoveValueAtIndex (CFMutableArrayRef theArray, CFIndex idx);
+ 
+ CF_EXPORT void
+ CFArrayReplaceValues (CFMutableArrayRef theArray, CFRange range,
+                       const void **newValues, CFIndex newCount);
+ 
+ CF_EXPORT void
+ CFArraySetValueAtIndex (CFMutableArrayRef theArray, CFIndex idx,
+                         const void *value);
+ 
+ CF_EXPORT void
+ CFArraySortValues (CFMutableArrayRef theArray, CFRange range,
+                    CFComparatorFunction comparator, void *context);
+ 
+ /** \} */
+ 
+ CF_EXTERN_C_END
+ #endif /* __COREFOUNDATION_CFARRAY_H__ */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,52 ----
+ /* CFAvailability.h
+    
+    Copyright (C) 2017 Free Software Foundation, Inc.
+    
+    Written by: Stefan Bidigaray
+    Date: August, 2017
+    
+    This file is part of the GNUstep CoreBase Library.
+    
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, 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
+    Lesser General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; see the file COPYING.LIB.
+    If not, see <http://www.gnu.org/licenses/> or write to the 
+    Free Software Foundation, 51 Franklin Street, Fifth Floor, 
+    Boston, MA 02110-1301, USA.
+ */
+ 
+ 
+ #ifndef __COREFOUNDATION_CFAVAILABILITY_H__
+ #define __COREFOUNDATION_CFAVAILABILITY_H__
+ 
+ /* Compiler features */
+ #ifndef __has_feature
+ #define __has_feature(x) 0
+ #endif
+ #ifndef __has_attribute
+ #define __has_attribute(x) 0
+ #endif
+ #ifndef __has_extension
+ #define __has_extension(x) __has_feature
+ #endif
+ 
+ /* CFEnum macro for type definitions */
+ #if (__cplusplus && __cplusplus >= 201103L)
+ #define CF_ENUM(_type, _name) _type _name; enum : _type
+ #define CF_OPTIONS(_type, _name) _type _name; enum : _type
+ #else
+ #define CF_ENUM(_type, _name) _type _name; enum
+ #define CF_OPTIONS(_type, _name) _type _name; enum
+ #endif
+ 
+ #endif /* __COREFOUNDATION_CFAVAILABILITY_H__ */
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,464 ----
+ /* CFBase.h
+    
+    Copyright (C) 2010 Free Software Foundation, Inc.
+    
+    Written by: Stefan Bidigaray
+    Date: January, 2010
+    
+    This file is part of the GNUstep CoreBase Library.
+    
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, 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
+    Lesser General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; see the file COPYING.LIB.
+    If not, see <http://www.gnu.org/licenses/> or write to the 
+    Free Software Foundation, 51 Franklin Street, Fifth Floor, 
+    Boston, MA 02110-1301, USA.
+ */
+ 
+ 
+ #ifndef __COREFOUNDATION_CFBASE_H__
+ #define __COREFOUNDATION_CFBASE_H__
+ 
+ /* CoreFoundation defines __LITTLE_ENDIAN__ or __BIG_ENDIAN__ so we'll
+  * do the same here for compatibility.
+  */
+ #if !defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
+ #define __LITTLE_ENDIAN__ 1
+ #endif
+ 
+ #include "CFAvailability.h"
+ #include "../GNUstepBase/GSVersionMacros.h"
+ 
+ /*
+  * CoreFoundation types
+  */
+ typedef unsigned char Boolean;
+ typedef unsigned char UInt8;
+ typedef signed char SInt8;
+ typedef unsigned short UInt16;
+ typedef signed short SInt16;
+ typedef unsigned int UInt32;
+ typedef signed int SInt32;
+ typedef unsigned long long UInt64;
+ typedef signed long long SInt64;
+ typedef SInt32 OSStatus;
+ 
+ typedef float Float32;
+ typedef double Float64;
+ typedef UInt16 UniChar;
+ typedef UInt8 *StringPtr;
+ typedef const StringPtr *ConstStringPtr;
+ typedef UInt8 Str255[256];
+ typedef const Str255 *ConstStr255Param;
+ typedef SInt16 OSErr;
+ typedef SInt16 RegionCode;
+ typedef SInt16 LangCode;
+ typedef SInt16 ScriptCode;
+ typedef UInt32 FourCharCode;
+ #ifndef OSTYPE_DECLARED
+ typedef FourCharCode OSType;
+ #define OSTYPE_DECLARED
+ #endif
+ typedef UInt8 Byte;
+ typedef SInt8 SignedByte;
+ 
+ #ifndef UTF32Char               /* UTF32Char is also defined in GSConfig.h */
+ typedef UInt32 UTF32Char;
+ #endif
+ typedef UInt16 UTF16Char;
+ typedef UInt8 UTF8Char;
+ 
+ #if !defined(CF_EXTERN_C_BEGIN)
+ #if defined(__cplusplus)
+ #define CF_EXTERN_C_BEGIN extern "C" {
+ #define CF_EXTERN_C_END }
+ #else
+ #define CF_EXTERN_C_BEGIN
+ #define CF_EXTERN_C_END
+ #endif
+ #endif
+ 
+ #if defined(_WIN32)
+ #if defined(BUILDING_SELF)
+ #if defined(__cplusplus)
+ #define CF_EXPORT extern "C" __declspec(dllexport)
+ #else
+ #define CF_EXPORT extern __declspec(dllexport)
+ #endif
+ #else
+ #if defined(__cplusplus)
+ #define CF_EXPORT extern "C" __declspec(dllimport)
+ #else
+ #define CF_EXPORT extern __declspec(dllimport)
+ #endif
+ #endif
+ #else
+ #if defined(__cplusplus)
+ #define CF_EXPORT extern "C"
+ #else
+ #define CF_EXPORT extern
+ #endif
+ #endif
+ 
+ #if !defined(__bool_true_false_are_defined)
+ #define true 1
+ #define false 0
+ #endif
+ 
+ #ifndef TRUE
+ #define TRUE  1
+ #endif
+ #ifndef FALSE
+ #define FALSE 0
+ #endif
+ 
+ #if !defined(CF_INLINE)
+ #if defined(__GNUC__) && (__GNUC__ >= 4)
+ #define CF_INLINE static __inline__ __attribute__((always_inline))
+ #elif defined(__GNUC__)
+ #define CF_INLINE static __inline__
+ #elif defined(__MWERKS__) || defined(__cplusplus)
+ #define CF_INLINE static inline
+ #elif defined(_MSC_VER)
+ #define CF_INLINE static __inline
+ #elif _WIN32
+ #define CF_INLINE static __inline__
+ #else
+ #define CF_INLINE static inline
+ #endif
+ #endif
+ 
+ #if defined(__GNUC__) || defined(__llvm__)
+ #define GS_PURE_FUNCTION __attribute__((pure))
+ #else
+ #define GS_PURE_FUNCTION
+ #endif
+ 
+ CF_EXTERN_C_BEGIN
+ /** \defgroup CFTypeRef CFType Reference
+     \{
+  */
+ typedef unsigned long CFTypeID;
+ typedef const void *CFTypeRef;
+ /** @}
+  */
+ 
+ /** \defgroup BaseUtils Base Utilities
+     \{
+  */
+ /** An integer value to store a hash code. */
+ typedef unsigned long CFHashCode;
+ /** A bitfield for passing information to functions.  Can hold as many bits
+     as a word.
+  */
+ typedef unsigned long CFOptionFlags;
+ /** A signed integer representing an index, size, length or count. */
+ typedef signed long CFIndex;
+ 
+ /** A structure that represents a range of items in a container, such as
+     an array.
+  */
+ typedef struct CFRange CFRange;
+ struct CFRange
+ {
+   CFIndex location;
+     /**< An integer representing the start location of the range, inclusive. */
+   CFIndex length;
+     /**< An integer representing the total number of items in the range */
+ };
+ 
+ /** Creates a CFRange structure.
+     \param location The starting location.
+     \param length The length.
+     \return An initialized CFRange structure.
+  */
+ CF_INLINE CFRange
+ CFRangeMake (CFIndex location, CFIndex length)
+ {
+   CFRange range;
+ 
+   range.location = location;
+   range.length = length;
+   return range;
+ }
+ 
+ /* Returned by comparison functions */
+ typedef enum
+ {
+   kCFCompareLessThan = -1,
+   kCFCompareEqualTo = 0,
+   kCFCompareGreaterThan = 1
+ } CFComparisonResult;
+ 
+ /* Return when a value is not found */
+ enum
+ {
+   kCFNotFound = -1
+ };
+ 
+ /* Definition for standard comparison function callback. */
+ typedef CFComparisonResult (*CFComparatorFunction) (const void *val1,
+                                                     const void *val2,
+                                                     void *context);
+ 
+ /* CoreFoundation version numbers */
+ /** \name Library Version Numbers
+     \{
+  */
+ CF_EXPORT const double kCFCoreFoundationVersionNumber;
+ #define kCFCoreFoundationVersionNumber10_0    196.40
+ #define kCFCoreFoundationVersionNumber10_0_3  196.50
+ #define kCFCoreFoundationVersionNumber10_1    226.00
+ #define kCFCoreFoundationVersionNumber10_1_1  226.00
+ #define kCFCoreFoundationVersionNumber10_1_2  227.20
+ #define kCFCoreFoundationVersionNumber10_1_3  227.20
+ #define kCFCoreFoundationVersionNumber10_1_4  227.30
+ #define kCFCoreFoundationVersionNumber10_2    263.00
+ #define kCFCoreFoundationVersionNumber10_2_1  263.10
+ #define kCFCoreFoundationVersionNumber10_2_2  263.10
+ #define kCFCoreFoundationVersionNumber10_2_3  263.30
+ #define kCFCoreFoundationVersionNumber10_2_4  263.30
+ #define kCFCoreFoundationVersionNumber10_2_5  263.50
+ #define kCFCoreFoundationVersionNumber10_2_6  263.50
+ #define kCFCoreFoundationVersionNumber10_2_7  263.50
+ #define kCFCoreFoundationVersionNumber10_2_8  263.50
+ #define kCFCoreFoundationVersionNumber10_3    299.00
+ #define kCFCoreFoundationVersionNumber10_3_1  299.00
+ #define kCFCoreFoundationVersionNumber10_3_2  299.00
+ #define kCFCoreFoundationVersionNumber10_3_3  299.30
+ #define kCFCoreFoundationVersionNumber10_3_4  299.31
+ #define kCFCoreFoundationVersionNumber10_3_5  299.31
+ #define kCFCoreFoundationVersionNumber10_3_6  299.32
+ #define kCFCoreFoundationVersionNumber10_3_7  299.33
+ #define kCFCoreFoundationVersionNumber10_3_8  299.33
+ #define kCFCoreFoundationVersionNumber10_3_9  299.35
+ #define kCFCoreFoundationVersionNumber10_4    368.00
+ #define kCFCoreFoundationVersionNumber10_4_1  368.10
+ #define kCFCoreFoundationVersionNumber10_4_2  368.11
+ #define kCFCoreFoundationVersionNumber10_4_3  368.18
+ #define kCFCoreFoundationVersionNumber10_4_4_Intel   368.26
+ #define kCFCoreFoundationVersionNumber10_4_4_PowerPC 368.25
+ #define kCFCoreFoundationVersionNumber10_4_5_Intel   368.26
+ #define kCFCoreFoundationVersionNumber10_4_5_PowerPC 368.25
+ #define kCFCoreFoundationVersionNumber10_4_6_Intel   368.26
+ #define kCFCoreFoundationVersionNumber10_4_6_PowerPC 368.25
+ #define kCFCoreFoundationVersionNumber10_4_7  368.27
+ #define kCFCoreFoundationVersionNumber10_4_8  368.27
+ #define kCFCoreFoundationVersionNumber10_4_9  368.28
+ #define kCFCoreFoundationVersionNumber10_4_10 368.28
+ #define kCFCoreFoundationVersionNumber10_4_11 368.31
+ #define kCFCoreFoundationVersionNumber10_5    476.00
+ #define kCFCoreFoundationVersionNumber10_5_1  476.00
+ #define kCFCoreFoundationVersionNumber10_5_2  476.10
+ #define kCFCoreFoundationVersionNumber10_5_3  476.13
+ #define kCFCoreFoundationVersionNumber10_5_4  476.14
+ #define kCFCoreFoundationVersionNumber10_5_5  476.15
+ #define kCFCoreFoundationVersionNumber10_5_6  476.17
+ /** \} */
+ /** \} */
+ 
+ #if __has_feature(attribute_cf_returns_retained)
+ #define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
+ #else
+ #define CF_RETURNS_RETAINED
+ #endif
+ 
+ #if __has_feature(attribute_cf_returns_not_retained)
+ #define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained))
+ #else
+ #define CF_RETURNS_NOT_RETAINED
+ #endif
+ 
+ /** \ingroup CFPropertyListRef
+  */
+ typedef CFTypeRef CFPropertyListRef;
+ 
+ /** \ingroup CFStringRef
+  */
+ typedef const struct __CFString *CFStringRef;
+ /** \ingroup CFMutableStringRef
+  */
+ typedef struct __CFString *CFMutableStringRef;
+ 
+ 
+ 
+ /** \defgroup CFAllocatorRef CFAllocator Reference
+     \brief CFAllocator is an opaque type used to allocate and deallocate
+     memory.
+     \{
+  */
+ /** \brief A reference to a CFAllocator object.
+  */
+ typedef const struct __CFAllocator *CFAllocatorRef;
+ 
+ typedef void *(*CFAllocatorAllocateCallBack) (CFIndex allocSize,
+                                               CFOptionFlags hint, void *info);
+ typedef void (*CFAllocatorDeallocateCallBack) (void *ptr, void *info);
+ typedef void *(*CFAllocatorReallocateCallBack) (void *ptr,
+                                                 CFIndex newsize,
+                                                 CFOptionFlags hint, void *info);
+ typedef CFIndex (*CFAllocatorPreferredSizeCallBack) (CFIndex size,
+                                                      CFOptionFlags hint,
+                                                      void *info);
+ typedef const void *(*CFAllocatorRetainCallBack) (const void *info);
+ typedef void (*CFAllocatorReleaseCallBack) (const void *info);
+ typedef CFStringRef (*CFAllocatorCopyDescriptionCallBack) (const void *info);
+ 
+ struct _CFAllocatorContext
+ {
+   CFIndex version;
+   void *info;
+   CFAllocatorRetainCallBack retain;
+   CFAllocatorReleaseCallBack release;
+   CFAllocatorCopyDescriptionCallBack copyDescription;
+   CFAllocatorAllocateCallBack allocate;
+   CFAllocatorReallocateCallBack reallocate;
+   CFAllocatorDeallocateCallBack deallocate;
+   CFAllocatorPreferredSizeCallBack preferredSize;
+ };
+ typedef struct _CFAllocatorContext CFAllocatorContext;
+ 
+ /** The default allocator and is equivalent to NULL.
+     \see CFAllocatorGetDefault()
+     \see CFAllocatorSetDefault()
+  */
+ CF_EXPORT CFAllocatorRef kCFAllocatorDefault;
+ /** The default system allocator is used internally by GNUstep and is the
+     default allocator if none is been defined.
+     \see CFAllocatorSetDefault()
+  */
+ CF_EXPORT CFAllocatorRef kCFAllocatorSystemDefault;
+ /** An allocator that uses the system's malloc, realloc and free functions.
+  */
+ CF_EXPORT CFAllocatorRef kCFAllocatorMalloc;
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ /** Equivalent to kCFAllocatorSystemDefault
+  */
+ CF_EXPORT CFAllocatorRef kCFAllocatorMallocZone;
+ #endif
+ /** The NULL allocator does perform any operations.  Can be passed as
+     a deallocator if you do not want GNUstep to deallocate the data.
+  */
+ CF_EXPORT CFAllocatorRef kCFAllocatorNull;
+ /** This is a special case allocator directing CFAllocatorCreate() to use
+     the given CFAllocatorContext structure to allocate the new allocator.
+  */
+ CF_EXPORT CFAllocatorRef kCFAllocatorUseContext;
+ 
+ /** Create a new CFAllocator.
+     \param allocator The allocator used to create this allocator or
+       kCFAllocatorUseContext to use the functions in \b context.
+     \param context The new allocator's context functions.
+     \return A new CFAllocator or NULL in case of failure.
+     \see CFAllocatorContext
+  */
+ CF_EXPORT CFAllocatorRef
+ CFAllocatorCreate (CFAllocatorRef allocator, CFAllocatorContext * context);
+ 
+ /** Allocate new memory.
+     \param allocator The CFAllocator to use.
+     \param size The number of bytes to allocate.
+     \param hint Option flags.  Currently unused and should be 0.
+     \return Newly allocated memory of NULL in case of failure.
+     \see CFAllocatorDeallocate()
+  */
+ CF_EXPORT void *CFAllocatorAllocate (CFAllocatorRef allocator, CFIndex size,
+                                      CFOptionFlags hint);
+ 
+ /** Deallocate the memory pointed to by \b ptr.
+     \param allocator The CFAllocator to use.
+     \param ptr A pointer previously allocated by CFAllocatorAllocate().
+     \see CFAllocatorAllocate()
+  */
+ CF_EXPORT void CFAllocatorDeallocate (CFAllocatorRef allocator, void *ptr);
+ 
+ CF_EXPORT CFIndex
+ CFAllocatorGetPreferredSizeForSize (CFAllocatorRef allocator, CFIndex size,
+                                     CFOptionFlags hint);
+ 
+ CF_EXPORT void *CFAllocatorReallocate (CFAllocatorRef allocator, void *ptr,
+                                        CFIndex newsize, CFOptionFlags hint);
+ 
+ CF_EXPORT CFAllocatorRef CFAllocatorGetDefault (void);
+ 
+ CF_EXPORT void CFAllocatorSetDefault (CFAllocatorRef allocator);
+ 
+ CF_EXPORT void
+ CFAllocatorGetContext (CFAllocatorRef allocator, CFAllocatorContext * context);
+ 
+ CF_EXPORT CFTypeID CFAllocatorGetTypeID (void);
+ /** \} */
+ 
+ 
+ 
+ /** \ingroup CFTypeRef
+     \{
+  */
+ /* These function will be implemented in CFRuntime.c since they 
+    require runtime support. */
+ CF_EXPORT CFStringRef CFCopyDescription (CFTypeRef cf);
+ 
+ CF_EXPORT CFStringRef CFCopyTypeIDDescription (CFTypeID typeID);
+ 
+ CF_EXPORT Boolean CFEqual (CFTypeRef cf1, CFTypeRef cf2);
+ 
+ CF_EXPORT CFAllocatorRef CFGetAllocator (CFTypeRef cf);
+ 
+ CF_EXPORT CFIndex CFGetRetainCount (CFTypeRef cf);
+ 
+ CF_EXPORT CFTypeID CFGetTypeID (CFTypeRef cf);
+ 
+ CF_EXPORT CFHashCode CFHash (CFTypeRef cf);
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ CF_EXPORT CFTypeRef CFMakeCollectable (CFTypeRef cf);
+ #endif
+ 
+ CF_EXPORT void CFRelease (CFTypeRef cf);
+ 
+ CF_EXPORT CFTypeRef CFRetain (CFTypeRef cf);
+ 
+ CF_EXPORT CFTypeRef CFAutorelease(CFTypeRef arg);
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_7, GS_API_LATEST)
+ CF_EXPORT void *_CFBridgingRelease (CFTypeRef cf);
+ CF_EXPORT CFTypeRef _CFBridgingRetain (void *obj);
+ 
+ #if __has_feature(objc_arc)
+ #define CFBridgingRetain(x) (__bridge_retained CFTypeRef)(x)
+ #define CFBridgingRelease(x) (__bridge_transfer id)(x)
+ #elif __OBJC__
+ #define CFBridgingRetain(x) _CFBridgingRetain((void *)(x))
+ #define CFBridgingRelease(x) (id)_CFBridgingRelease((x))
+ #else
+ #define CFBridgingRetain(x) _CFBridgingRetain((void *)(x))
+ #define CFBridgingRelease(x) _CFBridgingRelease((x))
+ #endif
+ #endif
+ /** \} */
+ 
+ 
+ 
+ /** \defgroup CFNullRef CFNull Reference
+     \{
+  */
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
+ typedef struct __CFNull *CFNullRef;
+ 
+ CF_EXPORT CFNullRef kCFNull;
+ 
+ CFTypeID CFNullGetTypeID (void);
+ #endif
+ /** \} */
+ 
+ CF_EXTERN_C_END
+ #endif /* __COREFOUNDATION_CFBASE_H__ */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,173 ----
+ /* CFCharacterSet.h
+    
+    Copyright (C) 2012 Free Software Foundation, Inc.
+    
+    Written by: Stefan Bidigaray
+    Date: January, 2012
+    
+    This file is part of the GNUstep CoreBase Library.
+    
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, 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
+    Lesser General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; see the file COPYING.LIB.
+    If not, see <http://www.gnu.org/licenses/> or write to the 
+    Free Software Foundation, 51 Franklin Street, Fifth Floor, 
+    Boston, MA 02110-1301, USA.
+ */
+ 
+ #ifndef __COREFOUNDATION_CFCHARACTERSET_H__
+ #define __COREFOUNDATION_CFCHARACTERSET_H__
+ 
+ #include "CFBase.h"
+ #include "CFData.h"
+ 
+ CF_EXTERN_C_BEGIN
+ 
+ /** \ingroup CFCharacterSetRef */
+ typedef const struct __CFCharacterSet * CFCharacterSetRef;
+ /** \ingroup CFMutableCharacterSetRef */
+ typedef struct __CFCharacterSet * CFMutableCharacterSetRef;
+ 
+ /** \defgroup CFCharacterSetRef CFCharacterSet Reference
+     \{
+  */
+ typedef enum
+ {
+   kCFCharacterSetControl = 1,
+   kCFCharacterSetWhitespace,
+   kCFCharacterSetWhitespaceAndNewline,
+   kCFCharacterSetDecimalDigit,
+   kCFCharacterSetLetter,
+   kCFCharacterSetLowercaseLetter,
+   kCFCharacterSetUppercaseLetter,
+   kCFCharacterSetNonBase,
+   kCFCharacterSetDecomposable,
+   kCFCharacterSetAlphaNumeric,
+   kCFCharacterSetPunctuation,
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
+   kCFCharacterSetCapitalizedLetter = 13,
+ #endif
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_3, GS_API_LATEST)
+   kCFCharacterSetSymbol = 14,
+ #endif
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
+   kCFCharacterSetNewline = 15,
+ #endif
+   kCFCharacterSetIllegal = 12
+ } CFCharacterSetPredefinedSet;
+ 
+ 
+ 
+ /** \name Creating Character Sets
+     \{
+  */
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_3, GS_API_LATEST)
+ CF_EXPORT CFCharacterSetRef
+ CFCharacterSetCreateCopy (CFAllocatorRef alloc, CFCharacterSetRef set);
+ #endif
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
+ CF_EXPORT CFCharacterSetRef
+ CFCharacterSetCreateInvertedSet (CFAllocatorRef alloc, CFCharacterSetRef set);
+ #endif
+ 
+ CF_EXPORT CFCharacterSetRef
+ CFCharacterSetCreateWithCharactersInRange (CFAllocatorRef alloc,
+   CFRange range);
+ 
+ CF_EXPORT CFCharacterSetRef
+ CFCharacterSetCreateWithCharactersInString (CFAllocatorRef alloc,
+   CFStringRef string);
+ 
+ CF_EXPORT CFCharacterSetRef
+ CFCharacterSetCreateWithBitmapRepresentation (CFAllocatorRef alloc,
+   CFDataRef data);
+ /** \} */
+ 
+ /** \name Getting Predefined Character Sets
+     \{
+  */
+ CF_EXPORT CFCharacterSetRef
+ CFCharacterSetGetPredefined (CFCharacterSetPredefinedSet setIdentifier);
+ /** \} */
+ 
+ /** \name Querying Character Sets
+     \{
+  */
+ CF_EXPORT CFDataRef
+ CFCharacterSetCreateBitmapRepresentation (CFAllocatorRef alloc,
+   CFCharacterSetRef set);
+ 
+ CF_EXPORT Boolean
+ CFCharacterSetIsCharacterMember (CFCharacterSetRef set, UniChar c);
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
+ CF_EXPORT Boolean
+ CFCharacterSetHasMemberInPlane (CFCharacterSetRef set, CFIndex plane);
+ 
+ CF_EXPORT Boolean
+ CFCharacterSetIsLongCharacterMember (CFCharacterSetRef set, UTF32Char c);
+ 
+ CF_EXPORT Boolean
+ CFCharacterSetIsSupersetOfSet (CFCharacterSetRef set,
+   CFCharacterSetRef otherSet);
+ #endif
+ /** \} */
+ 
+ /** \name Getting the Character Set Type Identifier
+     \{
+  */
+ CF_EXPORT CFTypeID
+ CFCharacterSetGetTypeID (void);
+ /** \} */
+ /** \} */
+ 
+ /** \defgroup CFMutableCharacterSetRef CFMutableCharacterSet Reference
+     \{
+  */
+ CF_EXPORT CFMutableCharacterSetRef
+ CFCharacterSetCreateMutable (CFAllocatorRef alloc);
+ 
+ CF_EXPORT CFMutableCharacterSetRef
+ CFCharacterSetCreateMutableCopy (CFAllocatorRef alloc, CFCharacterSetRef set);
+ 
+ CF_EXPORT void
+ CFCharacterSetAddCharactersInRange (CFMutableCharacterSetRef set,
+   CFRange range);
+ 
+ CF_EXPORT void
+ CFCharacterSetAddCharactersInString (CFMutableCharacterSetRef set,
+   CFStringRef string);
+ 
+ CF_EXPORT void
+ CFCharacterSetRemoveCharactersInRange (CFMutableCharacterSetRef set,
+   CFRange range);
+ 
+ CF_EXPORT void
+ CFCharacterSetRemoveCharactersInString (CFMutableCharacterSetRef set,
+   CFStringRef string);
+ 
+ CF_EXPORT void
+ CFCharacterSetIntersect (CFMutableCharacterSetRef set,
+   CFCharacterSetRef otherSet);
+ 
+ CF_EXPORT void
+ CFCharacterSetInvert (CFMutableCharacterSetRef set);
+ 
+ CF_EXPORT void
+ CFCharacterSetUnion (CFMutableCharacterSetRef set, CFCharacterSetRef otherSet);
+ /** \} */
+ 
+ CF_EXTERN_C_END
+ 
+ #endif /* __COREFOUNDATION_CFCHARACTERSET_H__ */
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,114 ----
+ /* CFData.h
+ 
+    Copyright (C) 2010 Free Software Foundation, Inc.
+ 
+    Written by: Stefan Bidigaray
+    Date: January, 2010
+ 
+    This file is part of CoreBase.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, 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
+    Lesser General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; see the file COPYING.LIB.
+    If not, see <http://www.gnu.org/licenses/> or write to the 
+    Free Software Foundation, 51 Franklin Street, Fifth Floor, 
+    Boston, MA 02110-1301, USA.
+ */
+ 
+ #ifndef __COREFOUNDATION_CFDATA_H__
+ #define __COREFOUNDATION_CFDATA_H__
+ 
+ #include "CFBase.h"
+ 
+ CF_EXTERN_C_BEGIN
+ /** \ingroup CFDataRef */
+ typedef const struct __CFData *CFDataRef;
+ /** \ingroup CFMutableDataRef */
+ typedef struct __CFData *CFMutableDataRef;
+ 
+ /** \defgroup CFDataRef CFData Reference
+     \{
+  */
+ /** \name Creating a CFData Object
+     \{
+  */
+ CF_EXPORT CFDataRef
+ CFDataCreate (CFAllocatorRef allocator, const UInt8 * bytes, CFIndex length);
+ 
+ CF_EXPORT CFDataRef
+ CFDataCreateCopy (CFAllocatorRef allocator, CFDataRef theData);
+ 
+ CF_EXPORT CFDataRef
+ CFDataCreateWithBytesNoCopy (CFAllocatorRef allocator, const UInt8 * bytes,
+                              CFIndex length, CFAllocatorRef bytesDeallocator);
+ /** \} */
+ 
+ /** \name Examining a CFData Object
+     \{
+  */
+ CF_EXPORT const UInt8 *CFDataGetBytePtr (CFDataRef theData);
+ 
+ CF_EXPORT void
+ CFDataGetBytes (CFDataRef theData, CFRange range, UInt8 * buffer);
+ 
+ CF_EXPORT CFIndex CFDataGetLength (CFDataRef theData);
+ /** \} */
+ 
+ /** \name Getting the CFData Type ID
+     \{
+  */
+ CF_EXPORT CFTypeID CFDataGetTypeID (void);
+ /** \} */
+ /** \} */
+ 
+ /** \defgroup CFMutableDataRef CFMutableData Reference
+     \{
+  */
+ /** \name Creating a Mutable Data Object
+     \{
+  */
+ CF_EXPORT CFMutableDataRef
+ CFDataCreateMutable (CFAllocatorRef allocator, CFIndex capacity);
+ 
+ CF_EXPORT CFMutableDataRef
+ CFDataCreateMutableCopy (CFAllocatorRef allocator, CFIndex capacity,
+                          CFDataRef theData);
+ /** \} */
+ 
+ /** \name Accessing Mutable Data
+     \{
+  */
+ CF_EXPORT UInt8 *CFDataGetMutableBytePtr (CFMutableDataRef theData);
+ /** \} */
+ 
+ /** \name Modifying a Mutable Data Object
+     \{
+  */
+ CF_EXPORT void
+ CFDataAppendBytes (CFMutableDataRef theData, const UInt8 * bytes,
+                    CFIndex length);
+ 
+ CF_EXPORT void CFDataDeleteBytes (CFMutableDataRef theData, CFRange range);
+ 
+ CF_EXPORT void
+ CFDataReplaceBytes (CFMutableDataRef theData, CFRange range,
+                     const UInt8 * newBytes, CFIndex newLength);
+ 
+ CF_EXPORT void
+ CFDataIncreaseLength (CFMutableDataRef theData, CFIndex extraLength);
+ 
+ CF_EXPORT void CFDataSetLength (CFMutableDataRef theData, CFIndex length);
+ /** \} */
+ /** \} */
+ 
+ CF_EXTERN_C_END
+ #endif /* __COREFOUNDATION_CFDATA_H__ */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,174 ----
+ /* CFDictionary.h
+ 
+    Copyright (C) 2010 Free Software Foundation, Inc.
+ 
+    Written by: Stefan Bidigaray
+    Date: January, 2010
+ 
+    This file is part of the GNUstep CoreBase Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, 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
+    Lesser General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; see the file COPYING.LIB.
+    If not, see <http://www.gnu.org/licenses/> or write to the 
+    Free Software Foundation, 51 Franklin Street, Fifth Floor, 
+    Boston, MA 02110-1301, USA.
+ */
+ 
+ #ifndef __COREFOUNDATION_CFDICTIONARY_H__
+ #define __COREFOUNDATION_CFDICTIONARY_H__ 1
+ 
+ #include "CFBase.h"
+ 
+ CF_EXTERN_C_BEGIN
+ /** \ingroup CFDictionaryRef */
+ typedef const struct __CFDictionary *CFDictionaryRef;
+ /** \ingroup CFMutableDictionaryRef */
+ typedef struct __CFDictionary *CFMutableDictionaryRef;
+ 
+ /** \defgroup CFDictionaryRef CFDictionary Reference
+     \{
+  */
+ typedef void (*CFDictionaryApplierFunction) (const void *key,
+                                              const void *value, void *context);
+ 
+ typedef CFStringRef (*CFDictionaryCopyDescriptionCallBack) (const void *value);
+ typedef Boolean (*CFDictionaryEqualCallBack) (const void *value1,
+                                               const void *value2);
+ typedef CFHashCode (*CFDictionaryHashCallBack) (const void *value);
+ typedef void (*CFDictionaryReleaseCallBack) (CFAllocatorRef allocator,
+                                              const void *value);
+ typedef const void *(*CFDictionaryRetainCallBack) (CFAllocatorRef allocator,
+                                                    const void *value);
+ 
+ typedef struct _CFDictionaryKeyCallBacks CFDictionaryKeyCallBacks;
+ struct _CFDictionaryKeyCallBacks
+ {
+   CFIndex version;
+   CFDictionaryRetainCallBack retain;
+   CFDictionaryReleaseCallBack release;
+   CFDictionaryCopyDescriptionCallBack copyDescription;
+   CFDictionaryEqualCallBack equal;
+   CFDictionaryHashCallBack hash;
+ };
+ 
+ typedef struct _CFDictionaryValueCallBacks CFDictionaryValueCallBacks;
+ struct _CFDictionaryValueCallBacks
+ {
+   CFIndex version;
+   CFDictionaryRetainCallBack retain;
+   CFDictionaryReleaseCallBack release;
+   CFDictionaryCopyDescriptionCallBack copyDescription;
+   CFDictionaryEqualCallBack equal;
+ };
+ 
+ CF_EXPORT const CFDictionaryKeyCallBacks kCFCopyStringDictionaryKeyCallBacks;
+ CF_EXPORT const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;
+ CF_EXPORT const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
+ 
+ /** \name Creating a dictionary
+     \{
+  */
+ CF_EXPORT CFDictionaryRef
+ CFDictionaryCreate (CFAllocatorRef allocator, const void **keys,
+                     const void **values, CFIndex numValues,
+                     const CFDictionaryKeyCallBacks * keyCallBacks,
+                     const CFDictionaryValueCallBacks * valueCallBacks);
+ 
+ CF_EXPORT CFDictionaryRef
+ CFDictionaryCreateCopy (CFAllocatorRef allocator, CFDictionaryRef theDict);
+ /** \} */
+ 
+ /** \name Examining a dictionary
+     \{
+  */
+ CF_EXPORT Boolean
+ CFDictionaryContainsKey (CFDictionaryRef theDict, const void *key);
+ 
+ CF_EXPORT Boolean
+ CFDictionaryContainsValue (CFDictionaryRef theDict, const void *value);
+ 
+ CF_EXPORT CFIndex CFDictionaryGetCount (CFDictionaryRef theDict);
+ 
+ CF_EXPORT CFIndex
+ CFDictionaryGetCountOfKey (CFDictionaryRef theDict, const void *key);
+ 
+ CF_EXPORT CFIndex
+ CFDictionaryGetCountOfValue (CFDictionaryRef theDict, const void *value);
+ 
+ CF_EXPORT void
+ CFDictionaryGetKeysAndValues (CFDictionaryRef theDict, const void **keys,
+                               const void **values);
+ 
+ CF_EXPORT const void *CFDictionaryGetValue (CFDictionaryRef theDict,
+                                             const void *key);
+ 
+ CF_EXPORT Boolean
+ CFDictionaryGetValueIfPresent (CFDictionaryRef theDict, const void *key,
+                                const void **value);
+ /** \} */
+ 
+ /** \name Applying a funcation to a dictionary
+     \{
+  */
+ CF_EXPORT void
+ CFDictionaryApplyFunction (CFDictionaryRef theDict,
+                            CFDictionaryApplierFunction applier, void *context);
+ /** \} */
+ 
+ /** \name Getting the CFDictionary type ID
+     \{
+  */
+ CF_EXPORT CFTypeID CFDictionaryGetTypeID (void);
+ /** \} */
+ /** \} */
+ 
+ /** \defgroup CFMutableDictionaryRef CFMutableDictionary Reference
+     \{
+  */
+ /** \name Creating a Mutable Dictionary
+     \{
+  */
+ CF_EXPORT CFMutableDictionaryRef
+ CFDictionaryCreateMutable (CFAllocatorRef allocator, CFIndex capacity,
+                            const CFDictionaryKeyCallBacks * keyCallBacks,
+                            const CFDictionaryValueCallBacks * valueCallBacks);
+ 
+ CF_EXPORT CFMutableDictionaryRef
+ CFDictionaryCreateMutableCopy (CFAllocatorRef allocator, CFIndex capacity,
+                                CFDictionaryRef theDict);
+ /** \} */
+ 
+ /** \name Modifying a Dictionary
+     \{
+  */
+ CF_EXPORT void
+ CFDictionaryAddValue (CFMutableDictionaryRef theDict, const void *key,
+                       const void *value);
+ 
+ CF_EXPORT void CFDictionaryRemoveAllValues (CFMutableDictionaryRef theDict);
+ 
+ CF_EXPORT void
+ CFDictionaryRemoveValue (CFMutableDictionaryRef theDict, const void *key);
+ 
+ CF_EXPORT void
+ CFDictionaryReplaceValue (CFMutableDictionaryRef theDict, const void *key,
+                           const void *value);
+ 
+ CF_EXPORT void
+ CFDictionarySetValue (CFMutableDictionaryRef theDict, const void *key,
+                       const void *value);
+ /** \} */
+ /** \} */
+ 
+ CF_EXTERN_C_END
+ #endif /* __COREFOUNDATION_CFDICTIONARY_H__ */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,249 ----
+ /* CFLocale.h
+    
+    Copyright (C) 2010 Free Software Foundation, Inc.
+    
+    Written by: Stefan Bidigaray
+    Date: March, 2011
+    
+    This file is part of the GNUstep CoreBase Library.
+    
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, 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
+    Lesser General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; see the file COPYING.LIB.
+    If not, see <http://www.gnu.org/licenses/> or write to the 
+    Free Software Foundation, 51 Franklin Street, Fifth Floor, 
+    Boston, MA 02110-1301, USA.
+ */
+ 
+ #ifndef __COREFOUNDATION_CFLOCALE__
+ #define __COREFOUNDATION_CFLOCALE__ 1
+ 
+ #include "CFBase.h"
+ 
+ #include "CFArray.h"
+ #include "CFDictionary.h"
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_3, GS_API_LATEST)
+ 
+ CF_EXTERN_C_BEGIN
+ 
+ /** \defgroup CFLocaleRef CFLocale Reference
+     \brief CFLocale provides basic functionality for language and/or region
+     specific operations.
+     
+     Locale-sensitive operations, such as collation, calendars and
+     capitalization, may use CFLocale objects to provide language and/or region
+     specific functionality.
+   
+     CFLocale is "toll-free bridged" to NSLocale.
+     
+     \{
+  */
+ typedef const struct __CFLocale *CFLocaleRef;
+ 
+ /** 
+  */
+ enum
+ {
+   kCFLocaleLanguageDirectionUnknown     = 0,
+   kCFLocaleLanguageDirectionLeftToRight = 1,
+   kCFLocaleLanguageDirectionRightToLeft = 2,
+   kCFLocaleLanguageDirectionTopToBottom = 3,
+   kCFLocaleLanguageDirectionBottomToTop = 4
+ };
+ typedef CFIndex CFLocaleLanguageDirection;
+ 
+ /** \name CFLocale Property Keys
+     \{
+  */
+ CF_EXPORT const CFStringRef kCFLocaleMeasurementSystem; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleDecimalSeparator; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleGroupingSeparator; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleCurrencySymbol; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleCurrencyCode; /* CFString */
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ CF_EXPORT const CFStringRef kCFLocaleIdentifier; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleLanguageCode; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleCountryCode; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleScriptCode; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleVariantCode; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleExemplarCharacterSet; /* CFCharacterSet */
+ CF_EXPORT const CFStringRef kCFLocaleCalendarIdentifier; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleCalendar; /* CFCalendar */
+ CF_EXPORT const CFStringRef kCFLocaleCollationIdentifier; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleUsesMetricSystem; /* CFBoolean */
+ #endif
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
+ CF_EXPORT const CFStringRef kCFLocaleCollatorIdentifier; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleQuotationBeginDelimiterKey; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleQuotationEndDelimiterKey; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleAlternateQuotationBeginDelimiterKey; /* CFString */
+ CF_EXPORT const CFStringRef kCFLocaleAlternateQuotationEndDelimiterKey; /* CFString */
+ #endif
+ /** \} */
+ 
+ /** \name CFCalendar Identifiers
+     \{
+  */
+ CF_EXPORT const CFStringRef kCFGregorianCalendar;
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ CF_EXPORT const CFStringRef kCFBuddhistCalendar;
+ CF_EXPORT const CFStringRef kCFChineseCalendar;
+ CF_EXPORT const CFStringRef kCFHebrewCalendar;
+ CF_EXPORT const CFStringRef kCFIslamicCalendar;
+ CF_EXPORT const CFStringRef kCFIslamicCivilCalendar;
+ CF_EXPORT const CFStringRef kCFJapaneseCalendar;
+ #endif
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
+ CF_EXPORT const CFStringRef kCFRepublicOfChinaCalendar;
+ CF_EXPORT const CFStringRef kCFPersianCalendar;
+ CF_EXPORT const CFStringRef kCFIndianCalendar;
+ CF_EXPORT const CFStringRef kCFISO8601Calendar;
+ #endif
+ /** \} */
+ 
+ /** CFLocale Change Notification
+  */
+ CF_EXPORT const CFStringRef kCFLocaleCurrentLocaleDidChangeNotification;
+ 
+ 
+ 
+ /** \name Creating a Locale
+     \{
+  */
+ CF_EXPORT CFLocaleRef
+ CFLocaleCopyCurrent (void);
+ 
+ CF_EXPORT CFLocaleRef
+ CFLocaleCreate (CFAllocatorRef allocator,
+                 CFStringRef localeIdent);
+ 
+ CF_EXPORT CFLocaleRef
+ CFLocaleCreateCopy (CFAllocatorRef allocator,
+                     CFLocaleRef locale);
+ 
+ CF_EXPORT CFLocaleRef
+ CFLocaleGetSystem (void);
+ /** \} */
+ 
+ /** \name Getting System Locale Information
+     \{
+  */
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ CF_EXPORT CFArrayRef
+ CFLocaleCopyAvailableLocaleIdentifiers (void);
+ #endif
+ /** \} */
+ 
+ /** \name Getting ISO Information
+     \{
+  */
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ CF_EXPORT CFArrayRef
+ CFLocaleCopyISOCountryCodes (void);
+ 
+ CF_EXPORT CFArrayRef
+ CFLocaleCopyISOLanguageCodes (void);
+ 
+ CF_EXPORT CFArrayRef
+ CFLocaleCopyISOCurrencyCodes (void);
+ #endif
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
+ CF_EXPORT CFArrayRef
+ CFLocaleCopyCommonISOCurrencyCodes (void);
+ #endif
+ /** \{ */
+ 
+ /** \name Accessing Language Information
+     \{
+  */
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
+ CF_EXPORT CFArrayRef
+ CFLocaleCopyPreferredLanguages (void);
+ #endif
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
+ CF_EXPORT CFLocaleLanguageDirection
+ CFLocaleGetLanguageCharacterDirection (CFStringRef isoLangCode);
+ 
+ CF_EXPORT CFLocaleLanguageDirection
+ CFLocaleGetLanguageLineDirection (CFStringRef isoLangCode);
+ #endif
+ /** \} */
+ 
+ /** \name Getting Information About a Locale
+     \{
+  */
+ CF_EXPORT CFStringRef
+ CFLocaleCopyDisplayNameForPropertyValue (CFLocaleRef displayLocale,
+                                          CFStringRef key,
+                                          CFStringRef value);
+ 
+ CF_EXPORT CFTypeRef
+ CFLocaleGetValue (CFLocaleRef locale,
+                   CFStringRef key);
+ 
+ CF_EXPORT CFStringRef
+ CFLocaleGetIdentifier (CFLocaleRef locale);
+ /** \} */
+ 
+ /** \name Getting and Creating Locale Identifiers
+     \{
+  */
+ CF_EXPORT CFStringRef
+ CFLocaleCreateCanonicalLocaleIdentifierFromString (CFAllocatorRef allocator,
+                                                    CFStringRef localeIdent);
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ CF_EXPORT CFStringRef
+ CFLocaleCreateCanonicalLanguageIdentifierFromString (CFAllocatorRef allocator,
+                                                      CFStringRef localeIdent);
+ 
+ CF_EXPORT CFDictionaryRef
+ CFLocaleCreateComponentsFromLocaleIdentifier (CFAllocatorRef allocator,
+                                               CFStringRef localeIdent);
+ 
+ CF_EXPORT CFStringRef
+ CFLocaleCreateLocaleIdentifierFromComponents (CFAllocatorRef allocator,
+                                               CFDictionaryRef dictionary);
+ #endif
+ /** \} */
+ 
+ /** \name Windows Locale Codes
+     \{
+  */
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
+ CF_EXPORT CFStringRef
+ CFLocaleCreateLocaleIdentifierFromWindowsLocaleCode (CFAllocatorRef allocator,
+                                                      UInt32 lcid);
+ 
+ CF_EXPORT UInt32
+ CFLocaleGetWindowsLocaleCodeFromLocaleIdentifier (CFStringRef localeIdent);
+ #endif
+ /** \} */
+ 
+ /** \name Getting the CFLocale Type ID
+     \{
+  */
+ CF_EXPORT CFTypeID
+ CFLocaleGetTypeID (void);
+ /** \} */
+ 
+ /** \} */
+ 
+ CF_EXTERN_C_END
+ 
+ #endif /* OS_API_VERSION >= MAC_OS_X_VERSION_10_3 */
+ 
+ #endif /* __COREFOUNDATION_CFLOCALE__ */
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,593 ----
+ /* CFString.h
+    
+    Copyright (C) 2010 Free Software Foundation, Inc.
+    
+    Written by: Stefan Bidigaray
+    Date: January, 2010
+    
+    This file is part of CoreBase.
+    
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, 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
+    Lesser General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; see the file COPYING.LIB.
+    If not, see <http://www.gnu.org/licenses/> or write to the 
+    Free Software Foundation, 51 Franklin Street, Fifth Floor, 
+    Boston, MA 02110-1301, USA.
+ */ 
+ 
+ #ifndef __COREFOUNDATION_CFSTRING_H__
+ #define __COREFOUNDATION_CFSTRING_H__
+ 
+ #include "CFBase.h"
+ #include "CFArray.h"
+ #include "CFCharacterSet.h"
+ #include "CFData.h"
+ #include "CFDictionary.h"
+ #include "CFLocale.h"
+ 
+ #include <stdarg.h>
+ 
+ CF_EXTERN_C_BEGIN
+ 
+ /** \defgroup CFStringRef CFString Reference
+     \brief The CFString type defines opaque objects representing strings.
+ 
+     CFString is "toll-free bridged" to NSString.
+ 
+     \{
+  */
+ 
+ /*
+  * Data Types
+  */
+ typedef UInt32 CFStringEncoding;
+ 
+ /*
+  * Constants
+  */
+ typedef enum
+ {
+   kCFCompareCaseInsensitive = 1,
+   kCFCompareBackwards = 4,
+   kCFCompareAnchored = 8,
+   kCFCompareNonliteral = 16,
+   kCFCompareLocalized = 32,
+   kCFCompareNumerically = 64,
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
+   kCFCompareDiacriticInsensitive = 128,
+   kCFCompareWidthInsensitive = 256,
+   kCFCompareForcedOrdering = 512
+ #endif
+ } CFStringCompareFlags;
+ 
+ enum CFStringBuiltInEncodings
+ {
+   kCFStringEncodingMacRoman = 0,
+   kCFStringEncodingWindowsLatin1 = 0x0500,
+   kCFStringEncodingISOLatin1 = 0x0201,
+   kCFStringEncodingNextStepLatin = 0x0B01,
+   kCFStringEncodingASCII = 0x0600,
+   kCFStringEncodingUnicode = 0x0100,
+   kCFStringEncodingUTF8 = 0x08000100,
+   kCFStringEncodingNonLossyASCII = 0x0BFF,
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+   kCFStringEncodingUTF16 = 0x0100,
+   kCFStringEncodingUTF16BE = 0x10000100,
+   kCFStringEncodingUTF16LE = 0x14000100,
+   kCFStringEncodingUTF32 = 0x0c000100,
+   kCFStringEncodingUTF32BE = 0x18000100,
+   kCFStringEncodingUTF32LE = 0x1c000100
+ #endif
+ };
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
+ # define kCFStringEncodingInvalidId (0xffffffffU)
+ #endif
+ 
+ /** \def CFSTR(x)
+     \brief Creates a constant string object.
+     
+     \note This macro will create the constant string at runtime.
+  */
+ /* The 'pure' attribute tells the compiler that this function will always
+    return the same result with the same input.  If it has any skill, then
+    constant propagation passes will magically make sure that this function is
+    called as few times as possible. */
+ CF_EXPORT CFStringRef
+ __CFStringMakeConstantString (const char *str) GS_PURE_FUNCTION;
+ //#define CFSTR(x) __CFStringMakeConstantString("" x "")
+ 
+ #ifdef __CONSTANT_CFSTRINGS__
+ #define CFSTR(x)  ((CFStringRef) __builtin___CFStringMakeConstantString ("" x ""))
+ #else
+ #define CFSTR(x)  __CFStringMakeConstantString("" x "")
+ #endif
+ 
+ /** \name Creating a CFString
+     \{
+  */
+ CF_EXPORT CFArrayRef
+ CFStringCreateArrayBySeparatingStrings (CFAllocatorRef alloc,
+   CFStringRef theString, CFStringRef separatorString);
+ 
+ CF_EXPORT CFStringRef
+ CFStringCreateByCombiningStrings (CFAllocatorRef alloc, CFArrayRef theArray,
+   CFStringRef separatorString);
+ 
+ CF_EXPORT CFStringRef
+ CFStringCreateCopy (CFAllocatorRef alloc, CFStringRef theString);
+ 
+ CF_EXPORT CFStringRef
+ CFStringCreateFromExternalRepresentation (CFAllocatorRef alloc, CFDataRef data,
+   CFStringEncoding encoding);
+ 
+ CF_EXPORT CFStringRef
+ CFStringCreateWithBytes (CFAllocatorRef alloc, const UInt8 *bytes,
+   CFIndex numBytes, CFStringEncoding encoding, Boolean isExternalRepresentation);
+ 
+ CF_EXPORT CFStringRef
+ CFStringCreateWithCharacters (CFAllocatorRef alloc, const UniChar *chars,
+   CFIndex numChars);
+ 
+ CF_EXPORT CFStringRef
+ CFStringCreateWithCharactersNoCopy (CFAllocatorRef alloc, const UniChar *chars,
+   CFIndex numChars, CFAllocatorRef contentsDeallocator);
+ 
+ CF_EXPORT CFStringRef
+ CFStringCreateWithCString (CFAllocatorRef alloc, const char *cStr,
+   CFStringEncoding encoding);
+ 
+ CF_EXPORT CFStringRef
+ CFStringCreateWithCStringNoCopy (CFAllocatorRef alloc, const char *cStr,
+   CFStringEncoding encoding, CFAllocatorRef contentsDeallocator);
+ 
+ CF_EXPORT CFStringRef
+ CFStringCreateWithFormat (CFAllocatorRef alloc, CFDictionaryRef formatOptions,
+   CFStringRef format, ...);
+ 
+ CF_EXPORT CFStringRef
+ CFStringCreateWithFormatAndArguments (CFAllocatorRef alloc,
+   CFDictionaryRef formatOptions, CFStringRef format, va_list arguments);
+ 
+ CF_EXPORT CFStringRef
+ CFStringCreateWithSubstring (CFAllocatorRef alloc, CFStringRef str,
+   CFRange range);
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ CF_EXPORT CFStringRef
+ CFStringCreateWithFileSystemRepresentation (CFAllocatorRef alloc,
+   const char *buffer);
+ #endif
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
+ CF_EXPORT CFStringRef
+ CFStringCreateWithBytesNoCopy (CFAllocatorRef alloc, const UInt8 *bytes,
+   CFIndex numBytes, CFStringEncoding encoding, Boolean isExternalReprentation,
+   CFAllocatorRef contentsDeallocator);
+ #endif
+ /** \} */
+ 
+ /** \name Searching CFStrings
+     \{
+  */
+ CF_EXPORT CFArrayRef
+ CFStringCreateArrayWithFindResults (CFAllocatorRef alloc, CFStringRef theString,
+   CFStringRef stringToFind, CFRange rangeToSearch,
+   CFStringCompareFlags compareOptions);
+ 
+ CF_EXPORT CFRange
+ CFStringFind (CFStringRef theString, CFStringRef stringToFind,
+   CFStringCompareFlags compareOptions);
+ 
+ CF_EXPORT Boolean
+ CFStringFindWithOptions (CFStringRef theString, CFStringRef stringToFind,
+   CFRange rangeToSearch, CFStringCompareFlags searchOptions, CFRange *result);
+ 
+ CF_EXPORT Boolean
+ CFStringFindWithOptionsAndLocale (CFStringRef theString,CFStringRef stringToFind,
+   CFRange rangeToSearch, CFStringCompareFlags searchOptions,
+   CFLocaleRef locale, CFRange *result);
+ 
+ CF_EXPORT void
+ CFStringGetLineBounds (CFStringRef theString, CFRange range,
+   CFIndex *lineBeginIndex, CFIndex *lineEndIndex, CFIndex *contentsEndIndex);
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
+ CF_EXPORT Boolean
+ CFStringFindCharacterFromSet (CFStringRef theString, CFCharacterSetRef theSet,
+   CFRange rangeToSearch, CFStringCompareFlags searchOptions, CFRange *result);
+ #endif
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
+ CF_EXPORT void
+ CFStringGetParagraphBounds (CFStringRef string, CFRange range,
+   CFIndex *parBeginIndex, CFIndex *parEndIndex, CFIndex *contentsEndIndex);
+ #endif
+ /** \} */
+ 
+ /** \name Comparing String
+     \{
+  */
+ CF_EXPORT CFComparisonResult
+ CFStringCompare (CFStringRef theString1, CFStringRef theString2,
+   CFStringCompareFlags compareOptions);
+ 
+ CF_EXPORT CFComparisonResult
+ CFStringCompareWithOptions (CFStringRef theString1, CFStringRef theString2,
+   CFRange rangeToCOmpare, CFStringCompareFlags compareOptions);
+ 
+ CF_EXPORT Boolean
+ CFStringHasPrefix (CFStringRef theString, CFStringRef prefix);
+ 
+ CF_EXPORT Boolean
+ CFStringHasSuffix (CFStringRef theString, CFStringRef suffix);
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
+ CF_EXPORT CFComparisonResult
+ CFStringCompareWithOptionsAndLocale (CFStringRef theString1,
+   CFStringRef theString2, CFRange rangeToCOmpare,
+   CFStringCompareFlags compareOptions, CFLocaleRef locale);
+ #endif
+ /** \} */
+ 
+ /** \name Accessing Characters
+     \{
+  */
+ CF_EXPORT CFDataRef
+ CFStringCreateExternalRepresentation (CFAllocatorRef alloc,
+   CFStringRef theString, CFStringEncoding encoding, UInt8 lossByte);
+ 
+ CF_EXPORT CFIndex
+ CFStringGetBytes (CFStringRef theString, CFRange range,
+   CFStringEncoding encoding, UInt8 lossByte, Boolean isExternalRepresentation,
+   UInt8 *buffer, CFIndex maxBufLen, CFIndex *usedBufLen);
+ 
+ CF_EXPORT UniChar
+ CFStringGetCharacterAtIndex (CFStringRef theString, CFIndex idx);
+ 
+ CF_EXPORT void
+ CFStringGetCharacters (CFStringRef theString, CFRange range, UniChar *buffer);
+ 
+ CF_EXPORT const UniChar *
+ CFStringGetCharactersPtr (CFStringRef theString);
+ 
+ CF_EXPORT Boolean
+ CFStringGetCString (CFStringRef theString, char *buffer, CFIndex bufferSize,
+   CFStringEncoding encoding);
+ 
+ CF_EXPORT const char *
+ CFStringGetCStringPtr (CFStringRef theString, CFStringEncoding encoding);
+ 
+ CF_EXPORT CFIndex
+ CFStringGetLength (CFStringRef str);
+ 
+ CF_EXPORT CFRange
+ CFStringGetRangeOfComposedCharactersAtIndex (CFStringRef theString,
+   CFIndex theIndex);
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
+ CF_EXPORT UTF32Char
+ CFStringGetLongCharacterForSurrogatePair (UniChar surrogateHigh,
+   UniChar surrogateLow);
+ 
+ CF_EXPORT Boolean
+ CFStringGetSurrogatePairForLongCharacter (UTF32Char character,
+   UniChar *surrogates);
+ 
+ CF_EXPORT Boolean
+ CFStringIsSurrogateHighCharacter (UniChar character);
+ 
+ CF_EXPORT Boolean
+ CFStringIsSurrogateLowCharacter (UniChar character);
+ #endif
+ /** \} */
+ 
+ /** \name Working with Encodings
+     \{
+  */
+ CF_EXPORT CFStringRef
+ CFStringConvertEncodingToIANACharSetName (CFStringEncoding encoding);
+ 
+ CF_EXPORT unsigned long
+ CFStringConvertEncodingToNSStringEncoding (CFStringEncoding encoding);
+ 
+ UInt32
+ CFStringConvertEncodingToWindowsCodepage (CFStringEncoding encoding);
+ 
+ CF_EXPORT CFStringEncoding
+ CFStringConvertIANACharSetNameToEncoding (CFStringRef theString);
+ 
+ CF_EXPORT CFStringEncoding
+ CFStringConvertNSStringEncodingToEncoding (unsigned long encoding);
+ 
+ CF_EXPORT CFStringEncoding
+ CFStringConvertWindowsCodepageToEncoding (UInt32 codepage);
+ 
+ CF_EXPORT CFStringEncoding
+ CFStringGetFastestEncoding (CFStringRef theString);
+ 
+ CF_EXPORT const CFStringEncoding *
+ CFStringGetListOfAvailableEncodings (void);
+ 
+ CF_EXPORT CFIndex
+ CFStringGetMaximumSizeForEncoding (CFIndex length, CFStringEncoding encoding);
+ 
+ CF_EXPORT CFStringEncoding
+ CFStringGetMostCompatibleMacStringEncoding (CFStringEncoding encoding);
+ 
+ CF_EXPORT CFStringRef
+ CFStringGetNameOfEncoding (CFStringEncoding encoding);
+ 
+ CF_EXPORT CFStringEncoding
+ CFStringGetSmallestEncoding (CFStringRef theString);
+ 
+ CF_EXPORT CFStringEncoding
+ CFStringGetSystemEncoding (void);
+ 
+ CF_EXPORT Boolean
+ CFStringIsEncodingAvailable (CFStringEncoding encoding);
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ CF_EXPORT Boolean
+ CFStringGetFileSystemRepresentation (CFStringRef string, char *buffer,
+   CFIndex maxBufLen);
+ 
+ CF_EXPORT CFIndex
+ CFStringGetMaximumSizeOfFileSystemRepresentation (CFStringRef string);
+ #endif
+ /** \} */
+ 
+ /** \name Getting Numeric Values
+     \{
+  */
+ CF_EXPORT double
+ CFStringGetDoubleValue (CFStringRef str);
+ 
+ CF_EXPORT SInt32
+ CFStringGetIntValue (CFStringRef str);
+ /** \} */
+ 
+ /** \name Getting String Properties
+     \{
+  */
+ CF_EXPORT void
+ CFShow (CFTypeRef obj);
+ 
+ CF_EXPORT void
+ CFShowStr (CFStringRef str);
+ 
+ CF_EXPORT CFTypeID
+ CFStringGetTypeID (void);
+ /** \} */
+ 
+ 
+ 
+ /** \name Pascal Strings
+     \{
+  */
+ CF_EXPORT CFStringRef
+ CFStringCreateWithPascalString (CFAllocatorRef alloc, ConstStr255Param pStr,
+   CFStringEncoding encoding);
+ 
+ CF_EXPORT CFStringRef
+ CFStringCreateWithPascalStringNoCopy (CFAllocatorRef alloc,
+   ConstStr255Param pStr, CFStringEncoding encoding,
+   CFAllocatorRef contentsDeallocate);
+ 
+ CF_EXPORT Boolean
+ CFStringGetPascalString (CFStringRef theString, StringPtr buffer,
+   CFIndex bufferSize, CFStringEncoding encoding);
+ 
+ CF_EXPORT ConstStringPtr
+ CFStringGetPascalStringPtr (CFStringRef theString, CFStringEncoding encoding);
+ /** \} */
+ /** \} */
+ 
+ 
+ 
+ /** \defgroup CFMutableStringRef CFMutableString Reference
+  *  \{
+  */
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
+ typedef enum
+ {
+   kCFStringNormalizationFormD = 0,
+   kCFStringNormalizationFormKD = 1,
+   kCFStringNormalizationFormC = 2,
+   kCFStringNormalizationFormKC = 3
+ } CFStringNormalizationForm;
+ #endif
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ CF_EXPORT const CFStringRef kCFStringTransformStripCombiningMarks;
+ CF_EXPORT const CFStringRef kCFStringTransformToLatin;
+ CF_EXPORT const CFStringRef kCFStringTransformFullwidthHalfwidth;
+ CF_EXPORT const CFStringRef kCFStringTransformLatinKatakana;
+ CF_EXPORT const CFStringRef kCFStringTransformLatinHiragana;
+ CF_EXPORT const CFStringRef kCFStringTransformHiraganaKatakana;
+ CF_EXPORT const CFStringRef kCFStringTransformMandarinLatin;
+ CF_EXPORT const CFStringRef kCFStringTransformLatinHangul;
+ CF_EXPORT const CFStringRef kCFStringTransformLatinArabic;
+ CF_EXPORT const CFStringRef kCFStringTransformLatinHebrew;
+ CF_EXPORT const CFStringRef kCFStringTransformLatinThai;
+ CF_EXPORT const CFStringRef kCFStringTransformLatinCyrillic;
+ CF_EXPORT const CFStringRef kCFStringTransformLatinGreek;
+ CF_EXPORT const CFStringRef kCFStringTransformToXMLHex;
+ CF_EXPORT const CFStringRef kCFStringTransformToUnicodeName;
+ #endif
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
+ CF_EXPORT const CFStringRef kCFStringTransformStripDiacritics;
+ #endif
+ 
+ CF_EXPORT void
+ CFStringAppend (CFMutableStringRef theString, CFStringRef appendedString);
+ 
+ CF_EXPORT void
+ CFStringAppendCharacters (CFMutableStringRef theString,
+   const UniChar *chars, CFIndex numChars);
+ 
+ CF_EXPORT void
+ CFStringAppendCString (CFMutableStringRef theString, const char *cStr,
+   CFStringEncoding encoding);
+ 
+ CF_EXPORT void
+ CFStringAppendFormat (CFMutableStringRef theString,
+   CFDictionaryRef formatOptions, CFStringRef format, ...);
+ 
+ CF_EXPORT void
+ CFStringAppendFormatAndArguments (CFMutableStringRef theString,
+   CFDictionaryRef formatOptions, CFStringRef format, va_list arguments);
+ 
+ CF_EXPORT void
+ CFStringAppendPascalString (CFMutableStringRef theString,
+   ConstStr255Param pStr, CFStringEncoding encoding);
+ 
+ CF_EXPORT void
+ CFStringCapitalize (CFMutableStringRef theString, CFLocaleRef locale);
+ 
+ CF_EXPORT CFMutableStringRef
+ CFStringCreateMutable (CFAllocatorRef alloc, CFIndex maxLength);
+ 
+ CF_EXPORT CFMutableStringRef
+ CFStringCreateMutableCopy (CFAllocatorRef alloc, CFIndex maxLength,
+   CFStringRef theString);
+ 
+ CF_EXPORT CFMutableStringRef
+ CFStringCreateMutableWithExternalCharactersNoCopy (CFAllocatorRef alloc,
+   UniChar *chars, CFIndex numChars, CFIndex capacity,
+   CFAllocatorRef externalCharactersAllocator);
+ 
+ CF_EXPORT void
+ CFStringDelete (CFMutableStringRef theString, CFRange range);
+ 
+ CF_EXPORT void
+ CFStringInsert (CFMutableStringRef str, CFIndex idx, CFStringRef insertedStr);
+ 
+ CF_EXPORT void
+ CFStringLowercase (CFMutableStringRef theString, CFLocaleRef locale);
+ 
+ CF_EXPORT void
+ CFStringPad (CFMutableStringRef theString, CFStringRef padString,
+   CFIndex length, CFIndex indexIntoPad);
+ 
+ CF_EXPORT void
+ CFStringReplace (CFMutableStringRef theString, CFRange range,
+   CFStringRef replacement);
+ 
+ CF_EXPORT void
+ CFStringReplaceAll (CFMutableStringRef theString, CFStringRef replacement);
+ 
+ CF_EXPORT void
+ CFStringSetExternalCharactersNoCopy (CFMutableStringRef theString,
+   UniChar *chars, CFIndex length, CFIndex capacity);
+ 
+ CF_EXPORT void
+ CFStringTrim (CFMutableStringRef theString, CFStringRef trimString);
+ 
+ CF_EXPORT void
+ CFStringTrimWhitespace (CFMutableStringRef theString);
+ 
+ CF_EXPORT void
+ CFStringUppercase (CFMutableStringRef theString, CFLocaleRef locale);
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
+ CF_EXPORT CFIndex
+ CFStringFindAndReplace (CFMutableStringRef theString,
+   CFStringRef stringToFind, CFStringRef replacementString,
+   CFRange rangeToSearch, CFOptionFlags compareOptions);
+ 
+ CF_EXPORT void
+ CFStringNormalize (CFMutableStringRef theString,
+   CFStringNormalizationForm theForm);
+ #endif
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ CF_EXPORT Boolean
+ CFStringTransform (CFMutableStringRef string, CFRange *range,
+   CFStringRef transform, Boolean reverse);
+ #endif
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
+ CF_EXPORT void
+ CFStringFold (CFMutableStringRef theString, CFOptionFlags theFlags,
+   CFLocaleRef theLocale);
+ #endif
+ /** \} */
+ 
+ 
+ 
+ /** \ingroup CFStringRef
+     \name CFStringInlineBuffer
+     \{
+  */
+ #define __kCFStringInlineBufferLength 64
+ struct CFStringInlineBuffer
+ {
+   UniChar buffer[__kCFStringInlineBufferLength];
+   CFStringRef theString;
+   const UniChar *directBuffer;
+   CFRange rangeToBuffer;
+   CFIndex bufferedRangeStart;
+   CFIndex bufferedRangeEnd;
+ };
+ typedef struct CFStringInlineBuffer CFStringInlineBuffer;
+ 
+ CF_INLINE void
+ CFStringInitInlineBuffer (CFStringRef str, CFStringInlineBuffer *buf,
+   CFRange range)
+ {
+   buf->theString = str;
+   buf->rangeToBuffer = range;
+   buf->directBuffer = CFStringGetCharactersPtr (str);
+   buf->bufferedRangeStart = 0;
+   buf->bufferedRangeEnd = 0;
+ }
+ 
+ CF_INLINE UniChar
+ CFStringGetCharacterFromInlineBuffer (CFStringInlineBuffer *buf, CFIndex idx)
+ {
+   if (buf->directBuffer)
+     {
+       if (idx < 0 || idx >= buf->rangeToBuffer.length)
+         return 0;
+       return buf->directBuffer[idx + buf->rangeToBuffer.location];
+     }
+   else if (idx >= buf->bufferedRangeEnd || idx < buf->bufferedRangeStart)
+     {
+       CFRange range;
+       
+       if (idx < 0 || idx >= buf->rangeToBuffer.length)
+         return 0;
+       
+       /* Use 16 here so it's efficient to go backwards, too */
+       buf->bufferedRangeStart = idx - 16;
+       if (buf->bufferedRangeStart < 0)
+         buf->bufferedRangeStart = 0;
+       buf->bufferedRangeEnd =
+         buf->bufferedRangeStart + __kCFStringInlineBufferLength;
+       if (buf->bufferedRangeEnd > buf->rangeToBuffer.length)
+         buf->bufferedRangeEnd = buf->rangeToBuffer.length;
+       
+       range = CFRangeMake (buf->rangeToBuffer.location + buf->bufferedRangeStart,
+         buf->bufferedRangeEnd - buf->bufferedRangeStart);
+       
+       CFStringGetCharacters (buf->theString, range, buf->buffer);
+     }
+   
+   return buf->buffer[(idx - buf->bufferedRangeStart)];
+ }
+ /** \} */
+ 
+ CF_EXTERN_C_END
+ 
+ #endif /* __COREFOUNDATION_CFSTRING_H__ */
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,430 ----
+ /* Interface for NSArray for GNUStep
+    Copyright (C) 1995-2015 Free Software Foundation, Inc.
+ 
+    Written by:  Andrew Kachites McCallum <mccallum@gnu.ai.mit.edu>
+    Created: 1995
+ 
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+    */
+ 
+ #ifndef __NSArray_h_GNUSTEP_BASE_INCLUDE
+ #define __NSArray_h_GNUSTEP_BASE_INCLUDE
+ #import	"../GNUstepBase/GSVersionMacros.h"
+ 
+ #import	"NSObject.h"
+ #import	"NSRange.h"
+ #import "NSEnumerator.h"
+ #if __BLOCKS__
+ #import "../GNUstepBase/GSBlocks.h"
+ #endif
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ @class NSString;
+ @class NSURL;
+ @class NSIndexSet;
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
+ enum
+ {
+   NSBinarySearchingFirstEqual = (1UL << 8), /** Specifies that the binary
+    * search should find the first object equal in the array.
+    */
+   NSBinarySearchingLastEqual = (1UL << 9), /** Specifies that the binary
+    * search should find the last object equal in the array.
+    */
+   NSBinarySearchingInsertionIndex = (1UL << 10), /** Specifies that the binary
+    * search should find the index at which an equal object should be inserted
+    * in order to keep the array sorted
+    */
+ };
+ 
+ typedef NSUInteger NSBinarySearchingOptions;
+ #endif
+ 
+ @interface GS_GENERIC_CLASS(NSArray, __covariant ElementT) : NSObject
+   <NSCoding, NSCopying, NSMutableCopying, NSFastEnumeration>
+ 
+ + (instancetype) array;
+ + (instancetype) arrayWithArray: (GS_GENERIC_CLASS(NSArray, ElementT) *)array;
+ + (instancetype) arrayWithContentsOfFile: (NSString*)file;
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ + (instancetype) arrayWithContentsOfURL: (NSURL*)aURL;
+ #endif
+ + (instancetype) arrayWithObject: (id)anObject;
+ + (instancetype) arrayWithObjects: (id)firstObject, ...;
+ + (instancetype) arrayWithObjects: (const id[])objects count: (NSUInteger)count;
+ 
+ - (GS_GENERIC_CLASS(NSArray, ElementT) *) arrayByAddingObject:
+   (GS_GENERIC_TYPE(ElementT))anObject;
+ - (GS_GENERIC_CLASS(NSArray, ElementT) *) arrayByAddingObjectsFromArray:
+   (GS_GENERIC_CLASS(NSArray, ElementT)*)anotherArray;
+ - (BOOL) containsObject: (GS_GENERIC_TYPE(ElementT))anObject;
+ 
+ /** <override-subclass />
+  * Returns the number of elements contained in the receiver.
+  */
+ - (NSUInteger) count;
+ - (void) getObjects: (__unsafe_unretained GS_GENERIC_TYPE(ElementT)[])aBuffer;
+ - (void) getObjects: (__unsafe_unretained GS_GENERIC_TYPE(ElementT)[])aBuffer
+               range: (NSRange)aRange;
+ - (NSUInteger) indexOfObject: (GS_GENERIC_TYPE(ElementT))anObject;
+ - (NSUInteger) indexOfObject: (GS_GENERIC_TYPE(ElementT))anObject
+                      inRange: (NSRange)aRange;
+ - (NSUInteger) indexOfObjectIdenticalTo: (GS_GENERIC_TYPE(ElementT))anObject;
+ - (NSUInteger) indexOfObjectIdenticalTo: (GS_GENERIC_TYPE(ElementT))anObject
+                                 inRange: (NSRange)aRange;
+ - (instancetype) init;
+ - (instancetype) initWithArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)array;
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ - (instancetype) initWithArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)array
+                      copyItems: (BOOL)shouldCopy;
+ #endif
+ - (instancetype) initWithContentsOfFile: (NSString*)file;
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ - (instancetype) initWithContentsOfURL: (NSURL*)aURL;
+ #endif
+ - (instancetype) initWithObjects: (GS_GENERIC_TYPE(ElementT)) firstObject, ...;
+ 
+ /** <init /> <override-subclass />
+  * This should initialize the array with count (may be zero) objects.<br />
+  * Retains each object placed in the array.<br />
+  * Calls -init (which does nothing but maintain MacOS-X compatibility),
+  * and needs to be re-implemented in subclasses in order to have all
+  * other initialisers work.
+  */
+ - (instancetype) initWithObjects: (const GS_GENERIC_TYPE(ElementT)[])objects
+                            count: (NSUInteger)count;
+ - (GS_GENERIC_TYPE(ElementT)) lastObject;
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
+ - (GS_GENERIC_TYPE(ElementT)) firstObject;
+ #endif
+ 
+ /** <override-subclass />
+  * Returns the object at the specified index.
+  * Raises an exception of the index is beyond the array.
+  */
+ - (GS_GENERIC_TYPE(ElementT)) objectAtIndex: (NSUInteger)index;
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ - (GS_GENERIC_CLASS(NSArray, ElementT) *) objectsAtIndexes:
+   (NSIndexSet *)indexes;
+ #endif
+ 
+ - (GS_GENERIC_TYPE(ElementT)) firstObjectCommonWithArray:
+     (GS_GENERIC_CLASS(NSArray, ElementT) *)otherArray;
+ - (BOOL) isEqualToArray: (NSArray*)otherArray;
+ 
+ #if OS_API_VERSION(GS_API_OPENSTEP, GS_API_MACOSX)
+ - (void) makeObjectsPerform: (SEL)aSelector;
+ - (void) makeObjectsPerform: (SEL)aSelector withObject: (id)argument;
+ #endif
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ - (void) makeObjectsPerformSelector: (SEL)aSelector;
+ - (void) makeObjectsPerformSelector: (SEL)aSelector withObject: (id)arg;
+ #endif
+ 
+ - (NSData*) sortedArrayHint;
+ - (GS_GENERIC_CLASS(NSArray, ElementT)*) sortedArrayUsingFunction:
+     (NSComparisonResult (*)(id, id, void*))comparator
+ 			        context: (void*)context;
+ - (GS_GENERIC_CLASS(NSArray, ElementT)*) sortedArrayUsingFunction:
+     (NSComparisonResult (*)(id, id, void*))comparator
+ 			      context: (void*)context
+ 				     hint: (NSData*)hint;
+ - (GS_GENERIC_CLASS(NSArray, ElementT)*) sortedArrayUsingSelector:
+   (SEL)comparator;
+ - (GS_GENERIC_CLASS(NSArray, ElementT)*) subarrayWithRange: (NSRange)aRange;
+ 
+ - (NSString*) componentsJoinedByString: (NSString*)separator;
+ - (GS_GENERIC_CLASS(NSArray, NSString*)*) pathsMatchingExtensions:
+     (GS_GENERIC_CLASS(NSArray, NSString*)*)extensions;
+ 
+ - (GS_GENERIC_CLASS(NSEnumerator, ElementT)*) objectEnumerator;
+ - (GS_GENERIC_CLASS(NSEnumerator, ElementT)*) reverseObjectEnumerator;
+ 
+ - (NSString*) description;
+ - (NSString*) descriptionWithLocale: (id)locale;
+ - (NSString*) descriptionWithLocale: (id)locale
+ 			     indent: (NSUInteger)level;
+ 
+ - (BOOL) writeToFile: (NSString*)path atomically: (BOOL)useAuxiliaryFile;
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ - (BOOL) writeToURL: (NSURL*)url atomically: (BOOL)useAuxiliaryFile;
+ - (GS_GENERIC_TYPE(ElementT)) valueForKey: (NSString*)key;
+ - (void) setValue: (GS_GENERIC_TYPE(ElementT))value forKey: (NSString*)key;
+ #endif
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
+ 
+ #if __BLOCKS__
+ DEFINE_BLOCK_TYPE(GSEnumeratorBlock, void, GS_GENERIC_TYPE(ElementT),
+   NSUInteger, BOOL*);
+ DEFINE_BLOCK_TYPE(GSPredicateBlock, BOOL, GS_GENERIC_TYPE(ElementT),
+   NSUInteger, BOOL*);
+ /**
+  * Enumerate over the collection using the given block.  The first argument is
+  * the object and the second is the index in the array.  The final argument is
+  * a pointer to a BOOL indicating whether the enumeration should stop.  Setting
+  * this to YES will interrupt the enumeration.
+  */
+ - (void) enumerateObjectsUsingBlock: (GSEnumeratorBlock)aBlock;
+ 
+ /**
+  * Enumerate over the collection using the given block.  The first argument is
+  * the object and the second is the index in the array.  The final argument is
+  * a pointer to a BOOL indicating whether the enumeration should stop.  Setting
+  * this to YES will interrupt the enumeration.
+  *
+  * The opts argument is a bitfield.  Setting the NSNSEnumerationConcurrent flag
+  * specifies that it is thread-safe.  The NSEnumerationReverse bit specifies
+  * that it should be enumerated in reverse order.
+  */
+ - (void) enumerateObjectsWithOptions: (NSEnumerationOptions)opts
+ 			  usingBlock: (GSEnumeratorBlock)aBlock;
+ /**
+  * Enumerate over the specified indexes in the collection using the given
+  * block.  The first argument is the object and the second is the index in the
+  * array.  The final argument is a pointer to a BOOL indicating whether the
+  * enumeration should stop.  Setting this to YES will interrupt the
+  * enumeration.
+  *
+  * The opts argument is a bitfield.  Setting the NSNSEnumerationConcurrent flag
+  * specifies that it is thread-safe.  The NSEnumerationReverse bit specifies
+  * that it should be enumerated in reverse order.
+  */
+ - (void) enumerateObjectsAtIndexes: (NSIndexSet*)indexSet
+ 			   options: (NSEnumerationOptions)opts
+ 			usingBlock: (GSEnumeratorBlock)block;
+ /**
+  * Returns the indexes of the objects in a collection that match the condition
+  * specified by the block.
+  *
+  * The opts argument is a bitfield.  Setting the NSNSEnumerationConcurrent flag
+  * specifies that it is thread-safe.  The NSEnumerationReverse bit specifies
+  * that it should be enumerated in reverse order.
+  */
+ - (NSIndexSet *) indexesOfObjectsWithOptions: (NSEnumerationOptions)opts
+ 				 passingTest: (GSPredicateBlock)predicate;
+ 
+ /**
+  * Returns the indexes of the objects in a collection that match the condition
+  * specified by the block.
+  */
+ - (NSIndexSet*) indexesOfObjectsPassingTest: (GSPredicateBlock)predicate;
+ 
+ /**
+  * Returns the indexes of the objects in a collection that match the condition
+  * specified by the block and are in the range specified by the index set.
+  *
+  * The opts argument is a bitfield.  Setting the NSNSEnumerationConcurrent flag
+  * specifies that it is thread-safe.  The NSEnumerationReverse bit specifies
+  * that it should be enumerated in reverse order.
+  */
+ - (NSIndexSet*) indexesOfObjectsAtIndexes: (NSIndexSet*)indexSet
+ 				  options: (NSEnumerationOptions)opts
+ 			      passingTest: (GSPredicateBlock)predicate;
+ 
+ /**
+  * Returns the index of the first object in the array that matches the
+  * condition specified by the block.
+  *
+  * The opts argument is a bitfield.  Setting the NSNSEnumerationConcurrent flag
+  * specifies that it is thread-safe.  The NSEnumerationReverse bit specifies
+  * that it should be enumerated in reverse order.
+  */
+ - (NSUInteger) indexOfObjectWithOptions: (NSEnumerationOptions)opts
+ 			    passingTest: (GSPredicateBlock)predicate;
+ 
+ /**
+  * Returns the index of the first object in the array that matches the
+  * condition specified by the block.
+  */
+ - (NSUInteger) indexOfObjectPassingTest: (GSPredicateBlock)predicate;
+ 
+ /**
+  * Returns the index of the first object in the specified range in a collection
+  * that matches the condition specified by the block.
+  *
+  * The opts argument is a bitfield.  Setting the NSNSEnumerationConcurrent flag
+  * specifies that it is thread-safe.  The NSEnumerationReverse bit specifies
+  * that it should be enumerated in reverse order.
+  */
+ - (NSUInteger) indexOfObjectAtIndexes: (NSIndexSet*)indexSet
+ 			      options: (NSEnumerationOptions)opts
+ 			  passingTest: (GSPredicateBlock)predicate;
+ 
+ /** Returns a sorted array using the comparator to determine the
+  * order of objects.
+  */
+ - (GS_GENERIC_CLASS(NSArray, ElementT) *) sortedArrayUsingComparator:
+     (NSComparator)comparator;
+ 
+ /** Returns a sorted array using the block to determine the order of objects.
+  *
+  * The opts argument is a bitfield.  Setting the NSSortConcurrent flag
+  * specifies that it is thread-safe.  The NSSortStable bit specifies that
+  * it should keep equal objects in the same order.
+  */
+ - (GS_GENERIC_CLASS(NSArray, ElementT) *)
+     sortedArrayWithOptions: (NSSortOptions)options
+            usingComparator: (NSComparator)comparator;
+ 
+ /**
+  * Performs a binary search of the array within the specified range for the
+  * index of an object equal to obj according to cmp.
+  * If NSBinarySearchingInsertionIndex is specified, searches for the index
+  * at which such an object should be inserted.
+  */
+ - (NSUInteger) indexOfObject: (id)key
+                inSortedRange: (NSRange)range
+                      options: (NSBinarySearchingOptions)options
+              usingComparator: (NSComparator)comparator;
+ #endif
+ #endif
+ /**
+  * Accessor for subscripting.  This is called by the compiler when you write
+  * code like anArray[12].  It should not be called directly.
+  */
+ - (GS_GENERIC_TYPE(ElementT)) objectAtIndexedSubscript: (NSUInteger)anIndex;
+ @end
+ 
+ 
+ @interface GS_GENERIC_CLASS(NSMutableArray, ElementT) : NSArray
+ 
+ + (instancetype) arrayWithCapacity: (NSUInteger)numItems;
+ 
+ /** <override-subclass />
+  * Adds anObject at the end of the array, thus increasing the size of
+  * the array.  The object is retained upon addition.
+  */
+ - (void) addObject: (GS_GENERIC_TYPE(ElementT))anObject;
+ - (void) addObjectsFromArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)otherArray;
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ - (void) exchangeObjectAtIndex: (NSUInteger)i1
+ 	     withObjectAtIndex: (NSUInteger)i2;
+ #endif
+ 
+ /** <init /> <override-subclass />
+  * Initialise the array with the specified capacity ... this
+  * should ensure that the array can have numItems added efficiently.<br />
+  * Calls -init (which does nothing but maintain MacOS-X compatibility),
+  * and needs to be re-implemented in subclasses in order to have all
+  * other initialisers work.
+  */
+ - (instancetype) initWithCapacity: (NSUInteger)numItems;
+ 
+ /** <override-subclass />
+  * Inserts an object into the receiver at the specified location.<br />
+  * Raises an exception if given an array index which is too large.<br />
+  * The size of the array increases by one.<br />
+  * The object is retained by the array.
+  */
+ - (void) insertObject: (GS_GENERIC_TYPE(ElementT))anObject
+               atIndex: (NSUInteger)index;
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ - (void) insertObjects: (GS_GENERIC_CLASS(NSArray, ElementT) *)objects
+              atIndexes: (NSIndexSet *)indexes;
+ #endif
+ 
+ /** <override-subclass />
+  * Removes an object from the receiver at the specified location.<br />
+  * The size of the array decreases by one.<br />
+  * Raises an exception if given an array index which is too large.<br />
+  */
+ - (void) removeObjectAtIndex: (NSUInteger)index;
+ 
+ - (void) removeObjectsAtIndexes: (NSIndexSet *)indexes;
+ 
+ /** <override-subclass />
+  * Places an object into the receiver at the specified location.<br />
+  * Raises an exception if given an array index which is too large.<br />
+  * The object is retained by the array.
+  */
+ - (void) replaceObjectAtIndex: (NSUInteger)index
+ 		   withObject: (GS_GENERIC_TYPE(ElementT))anObject;
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ - (void) replaceObjectsAtIndexes: (NSIndexSet *)indexes
+                      withObjects: (GS_GENERIC_CLASS(NSArray, ElementT)*)objects;
+ #endif
+ 
+ - (void) replaceObjectsInRange: (NSRange)aRange
+           withObjectsFromArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)anArray;
+ 
+ - (void) replaceObjectsInRange: (NSRange)aRange
+           withObjectsFromArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)anArray
+                          range: (NSRange)anotherRange;
+ 
+ - (void) setArray: (GS_GENERIC_CLASS(NSArray, ElementT) *)otherArray;
+ 
+ - (void) removeAllObjects;
+ - (void) removeLastObject;
+ - (void) removeObject: (GS_GENERIC_TYPE(ElementT))anObject;
+ - (void) removeObject: (GS_GENERIC_TYPE(ElementT))anObject
+               inRange: (NSRange)aRange;
+ - (void) removeObjectIdenticalTo: (GS_GENERIC_TYPE(ElementT))anObject;
+ - (void) removeObjectIdenticalTo: (GS_GENERIC_TYPE(ElementT))anObject
+                          inRange: (NSRange)aRange;
+ - (void) removeObjectsInArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)otherArray;
+ - (void) removeObjectsInRange: (NSRange)aRange;
+ - (void) removeObjectsFromIndices: (NSUInteger*)indices
+ 		       numIndices: (NSUInteger)count;
+ 
+ - (void) sortUsingFunction:
+     (NSComparisonResult (*)(GS_GENERIC_TYPE(ElementT),
+        GS_GENERIC_TYPE(ElementT),void*))compare
+ 		           context: (void*)context;
+ - (void) sortUsingSelector: (SEL)comparator;
+ 
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
+ #if __BLOCKS__
+ /**
+  * Sorts the array using the specified comparator block.
+  */
+ - (void) sortUsingComparator: (NSComparator)comparator;
+ 
+ /**
+  * Sorts the array using the specified comparator block and options.
+  */
+ - (void) sortWithOptions: (NSSortOptions)options
+          usingComparator: (NSComparator)comparator;
+ #endif
+ #endif
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_8, GS_API_LATEST)
+ /** Set method called by the compiler with array subscripting.<br />
+  * Replaces the object at anIndex or, if anIndex is the length of the array,
+  * this method appends abObject to the array.
+  */
+ - (void) setObject: (GS_GENERIC_TYPE(ElementT))anObject
+ atIndexedSubscript: (NSUInteger)anIndex;
+ #endif
+ @end
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #if	!NO_GNUSTEP && !defined(GNUSTEP_BASE_INTERNAL)
+ #import	"../GNUstepBase/NSArray+GNUstepBase.h"
+ #endif
+ 
+ #endif /* __NSArray_h_GNUSTEP_BASE_INCLUDE */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,333 ----
+ /* Interface for NSAutoreleasePool for GNUStep
+    Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ 
+    Written by:  Andrew Kachites McCallum <mccallum@gnu.ai.mit.edu>
+    Date: 1995
+    
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+    
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+    */ 
+ 
+ #ifndef __NSAutoreleasePool_h_GNUSTEP_BASE_INCLUDE
+ #define __NSAutoreleasePool_h_GNUSTEP_BASE_INCLUDE
+ #import	"../GNUstepBase/GSVersionMacros.h"
+ 
+ #import	"NSObject.h"
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ @class NSAutoreleasePool;
+ @class NSThread;
+ 
+ 
+ /**
+  * Each thread has its own copy of these variables.
+  <example>
+ {
+   NSAutoreleasePool *current_pool; // current pool for thread
+   unsigned total_objects_count;    // total #/autoreleased objects over thread's lifetime
+   id *pool_cache;                  // cache of previously-allocated pools,
+   int pool_cache_size;             //  used internally for recycling
+   int pool_cache_count;
+ }
+  </example>
+ */
+ typedef struct autorelease_thread_vars
+ {
+   /* The current, default NSAutoreleasePool for the calling thread;
+      the one that will hold objects that are arguments to
+      [NSAutoreleasePool +addObject:]. */
+   __unsafe_unretained NSAutoreleasePool *current_pool;
+ 
+   /* The total number of objects autoreleased since the thread was
+      started, or since -resetTotalAutoreleasedObjects was called
+      in this thread. (if compiled in) */
+   unsigned total_objects_count;
+ 
+   /* A cache of NSAutoreleasePool's already alloc'ed.  Caching old pools
+      instead of deallocating and re-allocating them will save time. */
+   __unsafe_unretained id *pool_cache;
+   int pool_cache_size;
+   int pool_cache_count;
+ } thread_vars_struct;
+ 
+ /* Initialize an autorelease_thread_vars structure for a new thread.
+    This function is called in NSThread each time an NSThread is created.
+    TV should be of type `struct autorelease_thread_vars *' */
+ #define init_autorelease_thread_vars(TV) \
+ memset (TV, 0, sizeof (__typeof__ (*TV)))
+ 
+ 
+ 
+ /**
+  *  Each pool holds its objects-to-be-released in a linked-list of 
+     these structures.
+     <example>
+ {
+   struct autorelease_array_list *next;
+   unsigned size;
+   unsigned count;
+   id objects[0];
+ }
+     </example>
+  */
+ typedef struct autorelease_array_list
+ {
+   struct autorelease_array_list *next;
+   unsigned size;
+   unsigned count;
+   __unsafe_unretained id objects[0];
+ } array_list_struct;
+ 
+ 
+ 
+ /**
+  * <p>
+  *   The standard OpenStep system of memory management employs retain counts.
+  *   When an object is created, it has a retain count of 1.  When an object
+  *   is retained, the retain count is incremented.  When it is released the
+  *   retain count is decremented, and when the retain count goes to zero the
+  *   object gets deallocated.
+  * </p>
+  * <p>
+  *   A simple retain/release mechanism has problems with passing objects
+  *   from one scope to another,
+  *   so it's augmented with autorelease pools.  You can use the
+  *   AUTORELEASE() macro to call the [NSObject-autorelease]
+  *   method, which adds an object to the current autorelease pool by
+  *   calling [NSAutoreleasePool+addObject:].<br />
+  *   An autorelease pool simply maintains a reference to each object
+  *   added to it, and for each addition, the autorelease pool will
+  *   call the [NSObject-release] method of the object when the pool
+  *   is released.  So doing an AUTORELEASE() is just the same as
+  *   doing a RELEASE(), but deferred until the current autorelease
+  *   pool is deallocated.
+  * </p>
+  * <p>
+  *   The NSAutoreleasePool class maintains a separate stack of
+  *   autorelease pools objects in each thread.
+  * </p>
+  * <p>
+  *   When an autorelease pool is created, it is automatically
+  *   added to the stack of pools in the thread.
+  * </p>
+  * <p>
+  *   When a pool is destroyed, it (and any pool later in
+  *   the stack) is removed from the stack.
+  * </p>
+  * <p>
+  *   This mechanism provides a simple but controllable and reasonably
+  *   efficient way of managing temporary objects.  An object can be
+  *   autoreleased and then passed around and used until the topmost 
+  *   pool in the stack is destroyed.
+  * </p>   
+  * <p>
+  *   Most methods return objects which are either owned by autorelease
+  *   pools or by the receiver of the method, so the lifetime of the
+  *   returned object can be assumed to be the shorter of the lifetime
+  *   of the current autorelease pool, or that of the receiver on which
+  *   the method was called.<br />
+  *   The exceptions to this are those object returned by -
+  * </p>
+  * <deflist>
+  *   <term>[NSObject+alloc], [NSObject+allocWithZone:]</term>
+  *   <desc>
+  *     Methods whose names begin with alloc return an uninitialised
+  *     object, owned by the caller.
+  *   </desc>
+  *   <term>[NSObject-init]</term>
+  *   <desc>
+  *     Methods whose names begin with init return an initialised
+  *     version of the receiving object, owned by the caller.<br />
+  *     NB. The returned object may not actually be the same as the
+  *     receiver ... sometimes an init method releases the original
+  *     receiver and returns an alternative.
+  *   </desc>
+  *   <term>[NSObject+new]</term>
+  *   <desc>
+  *     Methods whose names begin with new combine the effects of
+  *     allocation and initialisation.
+  *   </desc>
+  *   <term>[NSObject-copy], [(NSCopying)-copyWithZone:]</term>
+  *   <desc>
+  *     Methods whose names begin with copy create a copy of the receiver
+  *     which is owned by the caller.
+  *   </desc>
+  *   <term>
+  *     [NSObject-mutableCopy], [(NSMutableCopying)-mutableCopyWithZone:]
+  *   </term>
+  *   <desc>
+  *     Methods whose names begin with mutableCopy create a copy of the receiver
+  *     which is owned by the caller.
+  *   </desc>
+  * </deflist>
+  */
+ NS_AUTOMATED_REFCOUNT_UNAVAILABLE
+ @interface NSAutoreleasePool : NSObject 
+ {
+ #if	GS_EXPOSE(NSAutoreleasePool) && !__has_feature(objc_arc)
+   /* For re-setting the current pool when we are dealloc'ed. */
+   NSAutoreleasePool *_parent;
+   /* This pointer to our child pool is  necessary for co-existing
+      with exceptions. */
+   NSAutoreleasePool *_child;
+   /* A collection of the objects to be released. */
+   struct autorelease_array_list *_released;
+   struct autorelease_array_list *_released_head;
+   /* The total number of objects autoreleased in this pool. */
+   unsigned _released_count;
+   /* The method to add an object to this pool */
+   void 	(*_addImp)(id, SEL, id);
+ #endif
+ #if     GS_NONFRAGILE
+ #else
+   /* Pointer to private additional data used to avoid breaking ABI
+    * when we don't have the non-fragile ABI available.
+    * Use this mechanism rather than changing the instance variable
+    * layout (see Source/GSInternal.h for details).
+    */
+   @private id _internal GS_UNUSED_IVAR;
+ #endif
+ }
+ 
+ /**
+  * Adds anObj to the current autorelease pool.<br />
+  * If there is no autorelease pool in the thread,
+  * a warning is logged and the object is leaked (ie it will not be released).
+  */
+ + (void) addObject: (id)anObj;
+ 
+ /**
+  * Allocate and return an autorelease pool instance.<br />
+  * If there is an already-allocated NSAutoreleasePool available,
+  * save time by just returning that, rather than allocating a new one.<br />
+  * The pool instance becomes the current autorelease pool for this thread.
+  */
+ + (id) allocWithZone: (NSZone*)zone;
+ 
+ /**
+  * Adds anObj to this autorelease pool.
+  */
+ - (void) addObject: (id)anObj;
+ 
+ /**
+  * Raises an exception - pools should not be autoreleased.
+  */
+ - (id) autorelease;
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
+ /**
+  * Intended to trigger a garbage collection run (if needed) when called in
+  * a garbage collected environment.<br />
+  * In a non-garbage collected environment, this method implements the
+  * undocumented MacOS-X behavior, and releases the receiver.
+  */
+ - (void) drain;
+ #endif
+ 
+ /**
+  * Destroys the receiver (calls -dealloc).
+  */
+ - (oneway void) release;
+ 
+ /**
+  * Raises an exception ... pools should not be retained.
+  */
+ - (id) retain;
+ 
+ #if OS_API_VERSION(GS_API_NONE, GS_API_NONE)
+ /**
+  * <p>
+  *   Counts the number of times that the specified object occurs
+  *   in autorelease pools in the current thread.
+  * </p>
+  * <p>
+  *   This method is <em>slow</em> and should probably only be
+  *   used for debugging purposes.
+  * </p>
+  */
+ + (unsigned) autoreleaseCountForObject: (id)anObject;
+ 
+ /** 
+  * Return the currently active autorelease pool.
+  */
+ + (id) currentPool;
+ 
+ /**
+  * <p>
+  *   Specifies whether objects contained in autorelease pools are to
+  *   be released when the pools are deallocated (by default YES).
+  * </p>
+  * <p>
+  *   You can set this to NO for debugging purposes.
+  * </p>
+  */
+ + (void) enableRelease: (BOOL)enable;
+ 
+ /**
+  * <p>
+  *   When autorelease pools are deallocated, the memory they used
+  *   is retained in a cache for re-use so that new polls can be
+  *   created very quickly.
+  * </p>
+  * <p>
+  *   This method may be used to empty that cache, ensuring that
+  *   the minimum memory is used by the application.
+  * </p>
+  */
+ + (void) freeCache;
+ 
+ /**
+  * <p>
+  *   Specifies a limit to the number of objects that may be added to
+  *   an autorelease pool.  When this limit is reached an exception is
+  *   raised.
+  * </p>
+  * <p>
+  *   You can set this to a smallish value to catch problems with code
+  *   that autoreleases too many objects to operate efficiently.
+  * </p>
+  * <p>
+  *   Default value is maxint.
+  * </p>
+  */
+ + (void) setPoolCountThreshold: (unsigned)c;
+ 
+ /**
+  * Return the number of objects in this pool.
+  */
+ - (unsigned) autoreleaseCount;
+ 
+ /**
+  * Empties the current pool by releasing all the autoreleased objects
+  * in it.  Also destroys any child pools (ones created after
+  * the receiver in the same thread) causing any objects in those pools
+  * to be released.<br />
+  * This is a low cost (efficient) method which may be used to get rid of
+  * autoreleased objects in the pool, but carry on using the pool.
+  */
+ - (void) emptyPool;
+ #endif
+ @end
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #endif /* __NSAutoreleasePool_h_GNUSTEP_BASE_INCLUDE */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,300 ----
+ /* Interface for NSDate for GNUStep
+    Copyright (C) 1994, 1996, 1999 Free Software Foundation, Inc.
+ 
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+   */
+ 
+ #ifndef __NSDate_h_GNUSTEP_BASE_INCLUDE
+ #define __NSDate_h_GNUSTEP_BASE_INCLUDE
+ #import	"../GNUstepBase/GSVersionMacros.h"
+ 
+ #import	"NSObjCRuntime.h"
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ GS_EXPORT NSString * const NSSystemClockDidChangeNotification;
+ 
+ /**
+  * Time interval difference between two dates, in seconds.
+  */
+ typedef double NSTimeInterval;
+ 
+ /**
+  * Time interval between the unix standard reference date of 1 January 1970
+  * and the OpenStep reference date of 1 January 2001<br />
+  * This number comes from:<br />
+  * (((31 years * 365 days) + 8 days for leap years) = total number of days<br />
+  * 24 hours * 60 minutes * 60 seconds)<br />
+  * This ignores leap-seconds.
+  */
+ GS_EXPORT const NSTimeInterval NSTimeIntervalSince1970;
+ 
+ #import	"NSObject.h"
+ 
+ @class NSArray;
+ @class NSCalendarDate;
+ @class NSData;
+ @class NSDictionary;
+ @class NSString;
+ @class NSTimeZone;
+ @class NSTimeZoneDetail;
+ 
+ @interface NSDate : NSObject <NSCoding,NSCopying>
+ {
+ }
+ 
+ /** Returns an autoreleased instance with the current date/time.
+  */
+ + (id) date;
+ 
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ /** Returns an autoreleased instance representing the date and time given
+  * by string. The value of string may be a 'natural' specification as
+  * specified by the preferences in the user defaults database, allowing
+  * phrases like 'last tuesday'
+  */
+ + (id) dateWithNaturalLanguageString: (NSString*)string;
+ 
+ /**
+  * <p>Returns an autoreleased instance representing the date and time given
+  * by string. The value of string may be a 'natural' specification as
+  * specified by the preferences in the user defaults database, allowing
+  * phrases like 'last tuesday'
+  * </p>
+  * The locale contains keys such as -
+  * <deflist>
+  *   <term>NSDateTimeOrdering</term>
+  *   <desc>Controls the use of ambiguous numbers. This is done as a
+  *   sequence of the letters D(ay), M(onth), Y(ear), and H(our).
+  *   YMDH means that the first number encountered is assumed to be a
+  *   year, the second a month, the third a day, and the last an hour.
+  *   </desc>
+  *   <term>NSEarlierTimeDesignations</term>
+  *   <desc>An array of strings for times in the past.<br />
+  *   Defaults are <em>ago</em>, <em>last</em>, <em>past</em>, <em>prior</em>
+  *   </desc>
+  *   <term>NSHourNameDesignations</term>
+  *   <desc>An array of arrays of strings identifying the time of day.
+  *   Each array has an hour as its first value, and one or more words
+  *   as subsequent values.<br />
+  *   Defaults are: (0, midnight), (10, morning), (12, noon, lunch),
+  *   (14, afternoon), (19, dinner).
+  *   </desc>
+  *   <term>NSLaterTimeDesignations</term>
+  *   <desc>An array of strings for times in the future.<br />
+  *   Default is <em>next</em>
+  *   </desc>
+  *   <term>NSNextDayDesignations</term>
+  *   <desc>The day after today. Default is <em>tomorrow.</em>
+  *   </desc>
+  *   <term>NSNextNextDayDesignations</term>
+  *   <desc>The day after tomorrow. Default is <em>nextday.</em>
+  *   </desc>
+  *   <term>NSPriorDayDesignations</term>
+  *   <desc>The day before today. Default is <em>yesterday.</em>
+  *   </desc>
+  *   <term>NSThisDayDesignations</term>
+  *   <desc>Identifies the current day. Default is <em>today.</em>
+  *   </desc>
+  *   <term>NSYearMonthWeekDesignations</term>
+  *   <desc>An array giving the word for year, month, and week.<br />
+  *   Defaults are <em>year</em>, <em>month</em> and <em>week</em>.
+  *   </desc>
+  * </deflist>
+  */
+ + (id) dateWithNaturalLanguageString: (NSString*)string
+                               locale: (NSDictionary*)locale;
+ #endif
+ 
+ /** Returns an autoreleased instance with the date and time value given
+  * by the string using the ISO standard format YYYY-MM-DD HH:MM:SS +/-HHHMM
+  * (all the fields of which must be present).
+  */
+ + (id) dateWithString: (NSString*)description;
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_6,GS_API_LATEST)
+ /** Returns an autoreleased NSDate instance whose value is offset from
+  * that of the given date by the specified interval in seconds.
+  */
+ + (id) dateWithTimeInterval: (NSTimeInterval)seconds sinceDate: (NSDate*)date;
+ #endif
+ 
+ /** Returns an autoreleased instance with the offset from the unix system
+  * reference date of 1 January 1970, GMT.
+  */
+ + (id) dateWithTimeIntervalSince1970: (NSTimeInterval)seconds;
+ 
+ /** Returns an autoreleased instance with the offset from the current
+  * date/time given by seconds (which may be fractional).
+  */
+ + (id) dateWithTimeIntervalSinceNow: (NSTimeInterval)seconds;
+ 
+ /** Returns an autoreleased instance with the offset from the OpenStep
+  * reference date of 1 January 2001, GMT.
+  */
+ + (id) dateWithTimeIntervalSinceReferenceDate: (NSTimeInterval)seconds;
+ 
+ /** Returns an autoreleased instance with the date/time set in the far
+  * past.
+  */
+ + (id) distantPast;
+ 
+ /** Returns an autoreleased instance with the date/time set in the far
+  * future.
+  */
+ + (id) distantFuture;
+ 
+ /** Returns the time interval between the reference date and the current
+  * time.
+  */
+ + (NSTimeInterval) timeIntervalSinceReferenceDate;
+ 
+ /** Returns an autorelease date instance formed by adding the specified
+  * time interval in seconds to the receiver's time interval.
+  */
+ - (id) addTimeInterval: (NSTimeInterval)seconds;
+ 
+ /** Returns the time interval between the receivers value and the
+  * OpenStep reference date of 1 Jan 2001 GMT.
+  */
+ - (NSComparisonResult) compare: (NSDate*)otherDate;
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_6,GS_API_LATEST)
+ /** Returns an autoreleased NSDate instance whose value is offset from
+  * that of the receiver by the specified interval.
+  */
+ - (id) dateByAddingTimeInterval: (NSTimeInterval)ti;
+ #endif
+ 
+ /** Returns an autoreleased instance of the [NSCalendarDate] class whose
+  * date/time value is the same as that of the receiver, and which uses
+  * the formatString and timeZone specified.
+  */
+ - (NSCalendarDate*) dateWithCalendarFormat: (NSString*)formatString
+ 				  timeZone: (NSTimeZone*)timeZone;
+ 
+ /** Returns a string representation of the receiver formatted according
+  * to the default format string, time zone, and locale.
+  */
+ - (NSString*) description;
+ 
+ /** Returns a string representation of the receiver formatted according
+  * to the specified format string, time zone, and locale.
+  */
+ - (NSString*) descriptionWithCalendarFormat: (NSString*)format
+ 				   timeZone: (NSTimeZone*)aTimeZone
+ 				     locale: (NSDictionary*)l;
+ 
+ /** Returns a string representation of the receiver formatted according
+  * to the default format string and time zone, but using the given locale.
+  */
+ - (NSString*) descriptionWithLocale: (id)locale;
+ 
+ /** Returns the earlier of the receiver and otherDate.<br />
+  * If the two represent identical date/time values, returns the receiver.
+  */
+ - (NSDate*) earlierDate: (NSDate*)otherDate;
+ 
+ /** Returns an instance initialised with the current date/time.
+  */
+ - (id) init;
+ 
+ /** Returns an instance with the date and time value given
+  * by the string using the ISO standard format YYYY-MM-DD HH:MM:SS +/-HHHMM
+  * (all the fields of which must be present).
+  */
+ - (id) initWithString: (NSString*)description;
+ 
+ /** Returns an instance with the given offset from anotherDate.
+  */
+ - (id) initWithTimeInterval: (NSTimeInterval)secsToBeAdded
+ 		  sinceDate: (NSDate*)anotherDate;
+ 
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ /** Returns an instance with the offset from the unix system
+  * reference date of 1 January 1970, GMT.
+  */
+ - (id) initWithTimeIntervalSince1970: (NSTimeInterval)seconds;
+ #endif
+ 
+ /** Returns an instance with the offset from the current date/time.
+  */
+ - (id) initWithTimeIntervalSinceNow: (NSTimeInterval)secsToBeAdded;
+ 
+ /** <init />
+  * Returns an instance with the given offset from the OpenStep
+  * reference date of 1 January 2001, GMT.
+  */
+ - (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs;
+ 
+ /** Returns NO if other is not a date, otherwise returns the result of
+  * calling the -isEqualtoDate: method.
+  */
+ - (BOOL) isEqual: (id)other;
+ 
+ /**  Returns whether the receiver is exactly equal to other, to the limit
+  *  of the NSTimeInterval precision.<br />
+  *  This is the behavior of the current MacOS-X system, not that of the
+  *  OpenStep specification (which counted two dates within a second of
+  *  each other as being equal).<br />
+  *  The old behavior meant that two dates equal to a third date were not
+  *  necessarily equal to each other (confusing), and meant that there was
+  *  no reasonable way to use a date as a dictionary key or store dates
+  *  in a set.
+  */
+ - (BOOL) isEqualToDate: (NSDate*)other;
+ 
+ /** Returns the earlier of the receiver and otherDate.<br />
+  * If the two represent identical date/time values, returns the receiver.
+  */
+ - (NSDate*) laterDate: (NSDate*)otherDate;
+ 
+ /** Returns the time interval between the receivers value and the
+  * unix system reference date of 1 January 1970, GMT.
+  */
+ - (NSTimeInterval) timeIntervalSince1970;
+ 
+ /** Returns the time interval between the receivers value and that of the
+  * otherDate argument.  If otherDate is earlier than the receiver, the
+  * returned value will be positive, if it is later it will be negative.<br />
+  * For current (2011) OSX compatibility, this method returns NaN if otherDate
+  * is nil ... do not write code depending on that behavior.
+  */
+ - (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate;
+ 
+ /** Returns the time interval between the receivers value and the
+  * current date/time.  If the receiver represents a date/time in
+  * the past this will be negative, if it is in the future the
+  * returned value will be positive.
+  */
+ - (NSTimeInterval) timeIntervalSinceNow;
+ 
+ /** Returns the time interval between the receivers value and the
+  * OpenStep reference date of 1 Jan 2001 GMT.
+  */
+ - (NSTimeInterval) timeIntervalSinceReferenceDate;
+ 
+ @end
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #endif  /* __NSDate_h_GNUSTEP_BASE_INCLUDE*/
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,63 ----
+ /*
+    NSEnumerator.h
+ 
+    Copyright (C) 1998 Free Software Foundation, Inc.
+ 
+    Author:  Scott Christley <scottc@net-community.com>
+    Date: January 1998
+ 
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+ */
+ 
+ #ifndef __NSEnumerator_h_GNUSTEP_BASE_INCLUDE
+ #define __NSEnumerator_h_GNUSTEP_BASE_INCLUDE
+ #import	"../GNUstepBase/GSVersionMacros.h"
+ 
+ #import	"NSObject.h"
+ 
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ @class GS_GENERIC_CLASS(NSArray, ElementT);
+ 
+ typedef struct
+ {
+   unsigned long	state;
+   __unsafe_unretained id		*itemsPtr;
+   unsigned long	*mutationsPtr;
+   unsigned long	extra[5];
+ } NSFastEnumerationState;
+ 
+ @protocol NSFastEnumeration
+ - (NSUInteger) countByEnumeratingWithState: (NSFastEnumerationState *)state
+ 				   objects: (__unsafe_unretained id[])stackbuf
+ 				     count: (NSUInteger)len;
+ @end
+ 
+ @interface GS_GENERIC_CLASS(NSEnumerator, IterT) : NSObject <NSFastEnumeration>
+ - (GS_GENERIC_CLASS(NSArray, IterT) *) allObjects;
+ - (GS_GENERIC_TYPE(IterT)) nextObject;
+ @end
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #endif /* __NSEnumerator_h_GNUSTEP_BASE_INCLUDE */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,609 ----
+ /* Interface for NSGeometry routines for GNUStep
+  * Copyright (C) 1995 Free Software Foundation, Inc.
+  * 
+  * Written by:  Adam Fedor <fedor@boulder.colorado.edu>
+  * Date: 1995,199
+  * 
+  * This file is part of the GNUstep Base Library.
+  * 
+  * This library is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2 of the License, 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
+  * Library General Public License for more details.
+  * 
+  * You should have received a copy of the GNU Lesser General Public
+  * License along with this library; if not, write to the Free
+  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  * Boston, MA 02111 USA.
+  */ 
+ 
+ #ifndef __NSGeometry_h_GNUSTEP_BASE_INCLUDE
+ #define __NSGeometry_h_GNUSTEP_BASE_INCLUDE
+ #import	"../GNUstepBase/GSVersionMacros.h"
+ 
+ #import <objc/objc.h>
+ 
+ #import "NSString.h"
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ /**** Type, Constant, and Macro Definitions **********************************/
+ 
+ #ifndef MAX
+ #define MAX(a,b) \
+        ({__typeof__(a) _MAX_a = (a); __typeof__(b) _MAX_b = (b);  \
+          _MAX_a > _MAX_b ? _MAX_a : _MAX_b; })
+ #define	GS_DEFINED_MAX
+ #endif
+ 
+ #ifndef MIN
+ #define MIN(a,b) \
+        ({__typeof__(a) _MIN_a = (a); __typeof__(b) _MIN_b = (b);  \
+          _MIN_a < _MIN_b ? _MIN_a : _MIN_b; })
+ #define	GS_DEFINED_MIN
+ #endif
+ 
+ /**
+ <example>{
+   CGFloat x;
+   CGFloat y;
+ }</example>
+  <p>Represents a 2-d cartesian position.</p> */
+ typedef struct _NSPoint NSPoint;
+ struct _NSPoint
+ {
+   CGFloat x;
+   CGFloat y;
+ };
+ 
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ /** Array of NSPoint structs. */
+ typedef NSPoint *NSPointArray;
+ /** Pointer to NSPoint struct. */
+ typedef NSPoint *NSPointPointer;
+ #endif
+ 
+ /**
+ <example>{
+   CGFloat width;
+   CGFloat height;
+ }</example>
+  <p>Floating point rectangle size.</p> */
+ typedef struct _NSSize NSSize;
+ struct _NSSize
+ {
+   CGFloat width;
+   CGFloat height;
+ };
+ 
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ /** Array of NSSize structs. */
+ typedef NSSize *NSSizeArray;
+ /** Pointer to NSSize struct. */
+ typedef NSSize *NSSizePointer;
+ #endif
+ 
+ /**
+ <example>{
+   NSPoint origin;
+   NSSize size;
+ }</example>
+ 
+  <p>Rectangle.</p> */
+ typedef struct _NSRect NSRect;
+ struct _NSRect
+ {
+   NSPoint origin;
+   NSSize size;
+ };
+ 
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ /** Array of NSRect structs. */
+ typedef NSRect *NSRectArray;
+ /** Pointer to NSRect struct. */
+ typedef NSRect *NSRectPointer;
+ #endif
+ 
+ enum
+ {
+   NSMinXEdge = 0,
+   NSMinYEdge = 1,
+   NSMaxXEdge = 2,
+   NSMaxYEdge = 3
+ };
+ /** Sides of a rectangle.
+ <example>
+ {
+   NSMinXEdge,
+   NSMinYEdge,
+   NSMaxXEdge,
+   NSMaxYEdge
+ }
+ </example>
+  */
+ typedef NSUInteger NSRectEdge;
+ 
+ /**
+ <example>{
+   CGFloat top;
+   CGFloat left;
+   CGFloat bottom;
+   CGFloat right;
+ }</example>
+ 
+  <p>A description of the distance between the edges of two rectangles.</p> */
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_7, GS_API_LATEST)
+ typedef struct NSEdgeInsets {
+     CGFloat top;
+     CGFloat left;
+     CGFloat bottom;
+     CGFloat right;
+ } NSEdgeInsets;
+ #endif
+ 
+ /** Point at 0,0 */
+ static const NSPoint NSZeroPoint __attribute__((unused)) = {0.0,0.0};
+ /** Zero-size rectangle at 0,0 */
+ static const NSRect NSZeroRect __attribute__((unused)) = {{0.0,0.0},{0.0,0.0}};
+ /** Zero size */
+ static const NSSize NSZeroSize __attribute__((unused)) = {0.0,0.0};
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_7, GS_API_LATEST)
+ /** Zero edge insets **/
+ static const NSEdgeInsets NSEdgeInsetsZero __attribute__((unused))  = {0.0,0.0,0.0,0.0};
+ #endif
+ 
+ /**** Function Prototypes ****************************************************/
+ 
+ /*
+  *	All but the most complex functions are declared static inline in this
+  *	header file so that they are maximally efficient.  In order to provide
+  *	true functions (for code modules that don't have this header) this
+  *	header is included in NSGeometry.m where the functions are no longer
+  *	declared inline.
+  */
+ #ifdef	IN_NSGEOMETRY_M
+ #define	GS_GEOM_SCOPE	extern
+ #define GS_GEOM_ATTR	
+ #else
+ #define	GS_GEOM_SCOPE	static inline
+ #define GS_GEOM_ATTR	__attribute__((unused))
+ #endif
+ 
+ /** Create Basic Structures... **/
+ 
+ GS_GEOM_SCOPE NSPoint
+ NSMakePoint(CGFloat x, CGFloat y) GS_GEOM_ATTR;
+ 
+ /** Returns an NSPoint having x-coordinate X and y-coordinate Y. */
+ GS_GEOM_SCOPE NSPoint
+ NSMakePoint(CGFloat x, CGFloat y)
+ {
+   NSPoint point;
+ 
+   point.x = x;
+   point.y = y;
+   return point;
+ }
+ 
+ GS_GEOM_SCOPE NSSize
+ NSMakeSize(CGFloat w, CGFloat h) GS_GEOM_ATTR;
+ 
+ /** Returns an NSSize having width w and height h. */
+ GS_GEOM_SCOPE NSSize
+ NSMakeSize(CGFloat w, CGFloat h)
+ {
+   NSSize size;
+ 
+   size.width = w;
+   size.height = h;
+   return size;
+ }
+ 
+ GS_GEOM_SCOPE NSRect
+ NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) GS_GEOM_ATTR;
+ 
+ /** Returns an NSRect having point of origin (x, y) and size {w, h}. */
+ GS_GEOM_SCOPE NSRect
+ NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h)
+ {
+   NSRect rect;
+ 
+   rect.origin.x = x;
+   rect.origin.y = y;
+   rect.size.width = w;
+   rect.size.height = h;
+   return rect;
+ }
+ 
+ /** Constructs NSEdgeInsets. **/
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_7, GS_API_LATEST)
+ GS_GEOM_SCOPE NSEdgeInsets
+ NSEdgeInsetsMake(CGFloat top, CGFloat left,
+                  CGFloat bottom, CGFloat right) GS_GEOM_ATTR;
+ 
+ GS_GEOM_SCOPE NSEdgeInsets
+ NSEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right)
+ {
+   NSEdgeInsets edgeInsets;
+ 
+   edgeInsets.top = top;
+   edgeInsets.left = left;
+   edgeInsets.bottom = bottom;
+   edgeInsets.right = right;
+ 
+   return edgeInsets;
+ }
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_10, GS_API_LATEST)
+ /** Compares two edge insets for equality. **/
+ GS_EXPORT BOOL
+ NSEdgeInsetsEqual(NSEdgeInsets e1, NSEdgeInsets e2);
+ #endif
+ 
+ #endif
+ 
+ /** Get a Rectangle's Coordinates... **/
+ 
+ GS_GEOM_SCOPE CGFloat
+ NSMaxX(NSRect aRect) GS_GEOM_ATTR;
+ 
+ /** Returns the greatest x-coordinate value still inside aRect. */
+ GS_GEOM_SCOPE CGFloat
+ NSMaxX(NSRect aRect)
+ {
+   return aRect.origin.x + aRect.size.width;
+ }
+ 
+ GS_GEOM_SCOPE CGFloat
+ NSMaxY(NSRect aRect) GS_GEOM_ATTR;
+ 
+ /** Returns the greatest y-coordinate value still inside aRect. */
+ GS_GEOM_SCOPE CGFloat
+ NSMaxY(NSRect aRect)
+ {
+   return aRect.origin.y + aRect.size.height;
+ }
+ 
+ GS_GEOM_SCOPE CGFloat
+ NSMidX(NSRect aRect) GS_GEOM_ATTR;
+ 
+ /** Returns the x-coordinate of aRect's middle point. */
+ GS_GEOM_SCOPE CGFloat
+ NSMidX(NSRect aRect)
+ {
+   return aRect.origin.x + (aRect.size.width / 2.0);
+ }
+ 
+ GS_GEOM_SCOPE CGFloat
+ NSMidY(NSRect aRect) GS_GEOM_ATTR;
+ 
+ /** Returns the y-coordinate of aRect's middle point. */
+ GS_GEOM_SCOPE CGFloat
+ NSMidY(NSRect aRect)
+ {
+   return aRect.origin.y + (aRect.size.height / 2.0);
+ }
+ 
+ GS_GEOM_SCOPE CGFloat
+ NSMinX(NSRect aRect) GS_GEOM_ATTR;
+ 
+ /** Returns the least x-coordinate value still inside aRect. */
+ GS_GEOM_SCOPE CGFloat
+ NSMinX(NSRect aRect)
+ {
+   return aRect.origin.x;
+ }
+ 
+ GS_GEOM_SCOPE CGFloat
+ NSMinY(NSRect aRect) GS_GEOM_ATTR;
+ 
+ /** Returns the least y-coordinate value still inside aRect. */
+ GS_GEOM_SCOPE CGFloat
+ NSMinY(NSRect aRect)
+ {
+   return aRect.origin.y;
+ }
+ 
+ GS_GEOM_SCOPE CGFloat
+ NSWidth(NSRect aRect) GS_GEOM_ATTR;
+ 
+ /** Returns aRect's width. */
+ GS_GEOM_SCOPE CGFloat
+ NSWidth(NSRect aRect)
+ {
+   return aRect.size.width;
+ }
+ 
+ GS_GEOM_SCOPE CGFloat
+ NSHeight(NSRect aRect) GS_GEOM_ATTR;
+ 
+ /** Returns aRect's height. */
+ GS_GEOM_SCOPE CGFloat
+ NSHeight(NSRect aRect)
+ {
+   return aRect.size.height;
+ }
+ 
+ GS_GEOM_SCOPE BOOL
+ NSIsEmptyRect(NSRect aRect) GS_GEOM_ATTR;
+ 
+ /** Returns 'YES' iff the area of aRect is zero (i.e., iff either
+  * of aRect's width or height is negative or zero). */
+ GS_GEOM_SCOPE BOOL
+ NSIsEmptyRect(NSRect aRect)
+ {
+   return ((NSWidth(aRect) > 0) && (NSHeight(aRect) > 0)) ? NO : YES;
+ }
+ 
+ /** Modify a Copy of a Rectangle... **/
+ 
+ GS_GEOM_SCOPE NSRect
+ NSOffsetRect(NSRect aRect, CGFloat dx, CGFloat dy) GS_GEOM_ATTR;
+ 
+ /** Returns the rectangle obtained by translating aRect
+  * horizontally by dx and vertically by dy. */
+ GS_GEOM_SCOPE NSRect
+ NSOffsetRect(NSRect aRect, CGFloat dx, CGFloat dy)
+ {
+   NSRect rect = aRect;
+ 
+   rect.origin.x += dx;
+   rect.origin.y += dy;
+   return rect;
+ }
+ 
+ GS_GEOM_SCOPE NSRect
+ NSInsetRect(NSRect aRect, CGFloat dX, CGFloat dY) GS_GEOM_ATTR;
+ 
+ /** Returns the rectangle obtained by moving each of aRect's
+  * horizontal sides inward by dy and each of aRect's vertical
+  * sides inward by dx.<br />
+  * NB. For MacOS-X compatability, this is permitted to return
+  * a rectanglew with nagative width or height, strange as that seems.
+  */
+ GS_GEOM_SCOPE NSRect
+ NSInsetRect(NSRect aRect, CGFloat dX, CGFloat dY)
+ {
+   NSRect rect;
+ 
+   rect = NSOffsetRect(aRect, dX, dY);
+   rect.size.width -= (2 * dX);
+   rect.size.height -= (2 * dY);
+   return rect;
+ }
+ 
+ /** Divides aRect into two rectangles (namely slice and remainder) by
+  * "cutting" aRect---parallel to, and a distance amount from the given edge
+  * of aRect.  You may pass 0 in as either of slice or
+  * remainder to avoid obtaining either of the created rectangles. */
+ GS_EXPORT void
+ NSDivideRect(NSRect aRect,
+              NSRect *slice,
+              NSRect *remainder,
+              CGFloat amount,
+              NSRectEdge edge);
+ 
+ /** Returns a rectangle obtained by expanding aRect minimally
+  * so that all four of its defining components are integers. */
+ GS_EXPORT NSRect
+ NSIntegralRect(NSRect aRect);
+ 
+ /** Compute a Third Rectangle from Two Rectangles... **/
+ 
+ GS_GEOM_SCOPE NSRect
+ NSUnionRect(NSRect aRect, NSRect bRect) GS_GEOM_ATTR;
+ 
+ /** Returns the smallest rectangle which contains both aRect
+  * and bRect (modulo a set of measure zero).  If either of aRect
+  * or bRect is an empty rectangle, then the other rectangle is
+  * returned.  If both are empty, then the empty rectangle is returned. */
+ GS_GEOM_SCOPE NSRect
+ NSUnionRect(NSRect aRect, NSRect bRect)
+ {
+   NSRect rect;
+ 
+   if (NSIsEmptyRect(aRect) && NSIsEmptyRect(bRect))
+     return NSMakeRect(0.0,0.0,0.0,0.0);
+   else if (NSIsEmptyRect(aRect))
+     return bRect;
+   else if (NSIsEmptyRect(bRect))
+     return aRect;
+ 
+   rect = NSMakeRect(MIN(NSMinX(aRect), NSMinX(bRect)),
+                     MIN(NSMinY(aRect), NSMinY(bRect)), 0.0, 0.0);
+ 
+   rect = NSMakeRect(NSMinX(rect),
+                     NSMinY(rect),
+                     MAX(NSMaxX(aRect), NSMaxX(bRect)) - NSMinX(rect),
+                     MAX(NSMaxY(aRect), NSMaxY(bRect)) - NSMinY(rect));
+ 
+   return rect;
+ }
+ 
+ GS_GEOM_SCOPE NSRect
+ NSIntersectionRect(NSRect aRect, NSRect bRect) GS_GEOM_ATTR;
+ 
+ /** Returns the largest rectangle which lies in both aRect and
+  * bRect.  If aRect and bRect have empty intersection (or, rather,
+  * intersection of measure zero, since this includes having their
+  * intersection be only a point or a line), then the empty
+  * rectangle is returned. */
+ GS_GEOM_SCOPE NSRect
+ NSIntersectionRect (NSRect aRect, NSRect bRect)
+ {
+   if (NSMaxX(aRect) <= NSMinX(bRect) || NSMaxX(bRect) <= NSMinX(aRect)
+     || NSMaxY(aRect) <= NSMinY(bRect) || NSMaxY(bRect) <= NSMinY(aRect)) 
+     {
+       return NSMakeRect(0.0, 0.0, 0.0, 0.0);
+     }
+   else
+     {
+       NSRect    rect;
+ 
+       if (NSMinX(aRect) <= NSMinX(bRect))
+         rect.origin.x = bRect.origin.x;
+       else
+         rect.origin.x = aRect.origin.x;
+ 
+       if (NSMinY(aRect) <= NSMinY(bRect))
+         rect.origin.y = bRect.origin.y;
+       else
+         rect.origin.y = aRect.origin.y;
+ 
+       if (NSMaxX(aRect) >= NSMaxX(bRect))
+         rect.size.width = NSMaxX(bRect) - rect.origin.x;
+       else
+         rect.size.width = NSMaxX(aRect) - rect.origin.x;
+ 
+       if (NSMaxY(aRect) >= NSMaxY(bRect))
+         rect.size.height = NSMaxY(bRect) - rect.origin.y;
+       else
+         rect.size.height = NSMaxY(aRect) - rect.origin.y;
+ 
+       return rect;
+     }
+ }
+ 
+ /** Test geometric relationships... **/
+ 
+ /** Returns 'YES' iff aRect's and bRect's origin and size are the same. */
+ GS_EXPORT BOOL
+ NSEqualRects(NSRect aRect, NSRect bRect) GS_GEOM_ATTR;
+ 
+ /** Returns 'YES' iff aSize's and bSize's width and height are the same. */
+ GS_EXPORT BOOL
+ NSEqualSizes(NSSize aSize, NSSize bSize) GS_GEOM_ATTR;
+ 
+ /** Returns 'YES' iff aPoint's and bPoint's x- and y-coordinates
+  * are the same. */
+ GS_EXPORT BOOL
+ NSEqualPoints(NSPoint aPoint, NSPoint bPoint) GS_GEOM_ATTR;
+ 
+ GS_GEOM_SCOPE BOOL
+ NSMouseInRect(NSPoint aPoint, NSRect aRect, BOOL flipped) GS_GEOM_ATTR;
+ 
+ /** Returns 'YES' iff aPoint is inside aRect. */ 
+ GS_GEOM_SCOPE BOOL
+ NSMouseInRect(NSPoint aPoint, NSRect aRect, BOOL flipped)
+ {
+   if (flipped)
+     {
+       return ((aPoint.x >= NSMinX(aRect))
+         && (aPoint.y >= NSMinY(aRect))
+         && (aPoint.x < NSMaxX(aRect))
+         && (aPoint.y < NSMaxY(aRect))) ? YES : NO;
+     }
+   else
+     {
+       return ((aPoint.x >= NSMinX(aRect))
+         && (aPoint.y > NSMinY(aRect))
+         && (aPoint.x < NSMaxX(aRect))
+         && (aPoint.y <= NSMaxY(aRect))) ? YES : NO;
+     }
+ }
+ 
+ GS_GEOM_SCOPE BOOL
+ NSPointInRect(NSPoint aPoint, NSRect aRect) GS_GEOM_ATTR;
+ 
+ /** Just like 'NSMouseInRect(aPoint, aRect, YES)'. */
+ GS_GEOM_SCOPE BOOL
+ NSPointInRect(NSPoint aPoint, NSRect aRect)
+ {
+   return NSMouseInRect(aPoint, aRect, YES);
+ }
+ 
+ GS_GEOM_SCOPE BOOL
+ NSContainsRect(NSRect aRect, NSRect bRect) GS_GEOM_ATTR;
+ 
+ /** Returns 'YES' iff aRect totally encloses bRect.  NOTE: For
+  * this to be the case, aRect cannot be empty, nor can any side
+  * of bRect go beyond any side of aRect. Note that this behavior
+  * is different than the original OpenStep behavior, where the sides
+  * of bRect could not touch aRect. */
+ GS_GEOM_SCOPE BOOL
+ NSContainsRect(NSRect aRect, NSRect bRect)
+ {
+   return (!NSIsEmptyRect(bRect)
+     && (NSMinX(aRect) <= NSMinX(bRect))
+     && (NSMinY(aRect) <= NSMinY(bRect))
+     && (NSMaxX(aRect) >= NSMaxX(bRect))
+     && (NSMaxY(aRect) >= NSMaxY(bRect))) ? YES : NO;
+ }
+ 
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ GS_GEOM_SCOPE BOOL
+ NSIntersectsRect(NSRect aRect, NSRect bRect) GS_GEOM_ATTR;
+ 
+ /** Returns YES if aRect and bRect have non-zero intersection area
+     (intersecting at a line or a point doesn't count). */
+ GS_GEOM_SCOPE BOOL
+ NSIntersectsRect(NSRect aRect, NSRect bRect)
+ {
+   /* Note that intersecting at a line or a point doesn't count */
+   return (NSMaxX(aRect) <= NSMinX(bRect)
+     || NSMaxX(bRect) <= NSMinX(aRect)
+     || NSMaxY(aRect) <= NSMinY(bRect)
+     || NSMaxY(bRect) <= NSMinY(aRect)
+     || NSIsEmptyRect(aRect)
+     || NSIsEmptyRect(bRect)) ? NO : YES;
+ }
+ #endif
+ 
+ /** Get a String Representation... **/
+ 
+ #ifdef __OBJC__
+ /** Returns an NSString of the form "{x=X; y=Y}", where
+  * X and Y are the x- and y-coordinates of aPoint, respectively. */
+ GS_EXPORT NSString *
+ NSStringFromPoint(NSPoint aPoint);
+ 
+ /** Returns an NSString of the form "{x=X; y=Y; width=W; height=H}",
+  * where X, Y, W, and H are the x-coordinate, y-coordinate,
+  * width, and height of aRect, respectively. */
+ GS_EXPORT NSString *
+ NSStringFromRect(NSRect aRect);
+ 
+ /** Returns an NSString of the form "{width=W; height=H}", where
+  * W and H are the width and height of aSize, respectively. */
+ GS_EXPORT NSString *
+ NSStringFromSize(NSSize aSize);
+ 
+ /** Parses point from string of form "<code>{x=a; y=b}</code>". (0,0) returned
+     if parsing fails. */
+ GS_EXPORT NSPoint	NSPointFromString(NSString* string);
+ 
+ /** Parses size from string of form "<code>{width=a; height=b}</code>". Size of
+     0,0 returned if parsing fails. */
+ GS_EXPORT NSSize	NSSizeFromString(NSString* string);
+ 
+ /** Parses point from string of form "<code>{x=a; y=b; width=c;
+     height=d}</code>".  Rectangle of 0 size at origin returned if parsing
+     fails.
+ */
+ GS_EXPORT NSRect	NSRectFromString(NSString* string);
+ 
+ #endif /* __OBJC__ */
+ 
+ #ifdef	GS_DEFINED_MAX
+ #undef	GS_DEFINED_MAX
+ #undef	MAX
+ #endif
+ 
+ #ifdef	GS_DEFINED_MIN
+ #undef	GS_DEFINED_MIN
+ #undef	MIN
+ #endif
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #endif /* __NSGeometry_h_GNUSTEP_BASE_INCLUDE */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,317 ----
+ /** Interface to ObjC runtime for GNUStep
+    Copyright (C) 1995, 1997, 2000 Free Software Foundation, Inc.
+ 
+    Written by:  Andrew Kachites McCallum <mccallum@gnu.ai.mit.edu>
+    Date: 1995
+ 
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+ 
+     AutogsdocSource: NSObjCRuntime.m
+     AutogsdocSource: NSLog.m
+ 
+    */
+ 
+ #ifndef __NSObjCRuntime_h_GNUSTEP_BASE_INCLUDE
+ #define __NSObjCRuntime_h_GNUSTEP_BASE_INCLUDE
+ 
+ #ifdef __cplusplus
+ #ifndef __STDC_LIMIT_MACROS
+ #define __STDC_LIMIT_MACROS 1
+ #endif
+ #endif
+ 
+ #import	"../GNUstepBase/GSVersionMacros.h"
+ #import	"../GNUstepBase/GSConfig.h"
+ #import	"../GNUstepBase/GNUstep.h"
+ #if __BLOCKS__
+ #import	"../GNUstepBase/GSBlocks.h"
+ #endif
+ 
+ #include <stdarg.h>
+ #include <limits.h>
+ #include <float.h>
+ 
+ /* PA HP-UX kludge.  */
+ #if defined(__hppa__) && defined(__hpux__) && !defined(PRIuPTR)
+ #define PRIuPTR "lu"
+ #endif
+ 
+ /* IRIX kludge.  */
+ #if defined(__sgi)
+ /* IRIX 6.5 <inttypes.h> provides all definitions, but only for C99
+    compilations.  */
+ #define PRId8 "hhd"
+ #define PRIu8 "hhu"
+ #if (_MIPS_SZLONG == 32)
+ #define PRId64 "lld"
+ #define PRIu64 "llu"
+ #endif
+ /* This doesn't match <inttypes.h>, which always has "lld" here, but the
+    arguments are uint64_t, int64_t, which are unsigned long, long for
+    64-bit in <sgidefs.h>.  */
+ #if (_MIPS_SZLONG == 64)
+ #define PRId64 "ld"
+ #define PRIu64 "lu"
+ #endif
+ /* This doesn't match <inttypes.h>, which has "u" here, but the arguments
+    are uintptr_t, which is always unsigned long.  */
+ #define PRIuPTR "lu"
+ #endif
+ 
+ /* Solaris < 10 kludge.  */
+ #if defined(__sun__) && defined(__svr4__) && !defined(PRIuPTR)
+ #if defined(__arch64__) || defined (__x86_64__)
+ #define PRIuPTR "lu"
+ #define PRIdPTR "ld"
+ #define PRIxPTR "lx"
+ #else
+ #define PRIuPTR "u"
+ #define PRIdPTR "d"
+ #define PRIxPTR "x"
+ #endif
+ #endif
+ 
+ 
+ /* These typedefs must be in place before GSObjCRuntime.h is imported.
+  */
+ 
+ #if     !defined(NSINTEGER_DEFINED)
+ typedef	intptr_t	NSInteger;
+ typedef	uintptr_t	NSUInteger;
+ #	define NSIntegerMax  INTPTR_MAX
+ #	define NSIntegerMin  INTPTR_MIN
+ #	define NSUIntegerMax UINTPTR_MAX
+ #endif /* !defined(NSINTEGER_DEFINED) */
+ 
+ #if     !defined(CGFLOAT_DEFINED)
+ #if     GS_SIZEOF_VOIDP == 8
+ #define CGFLOAT_IS_DBL  1
+ typedef double          CGFloat;
+ #define CGFLOAT_MIN	DBL_MIN
+ #define CGFLOAT_MAX	DBL_MAX
+ #else
+ typedef float           CGFloat;
+ #define CGFLOAT_MIN	FLT_MIN
+ #define CGFLOAT_MAX	FLT_MAX
+ #endif
+ #endif /* !defined(CGFLOAT_DEFINED) */
+ 
+ #define NSINTEGER_DEFINED 1
+ #define CGFLOAT_DEFINED 1
+ #ifndef NS_AUTOMATED_REFCOUNT_UNAVAILABLE
+ #  if __has_feature(objc_arc)
+ #    define NS_AUTOMATED_REFCOUNT_UNAVAILABLE \
+       __attribute__((unavailable("Not available with automatic reference counting")))
+ #  else
+ #    define NS_AUTOMATED_REFCOUNT_UNAVAILABLE
+ #  endif
+ #endif
+ 
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ 
+ /*
+  * We can have strongly typed enums in C++11 mode or when the objc_fixed_enum
+  * feature is availble.
+  */
+ #if (__has_feature(objc_fixed_enum) || (__cplusplus && (__cplusplus > 199711L) && __has_extension(cxx_strong_enums)))
+ #  define _GS_NAMED_ENUM(ty, name) enum name : ty name; enum name : ty
+ #  define _GS_ANON_ENUM(ty) enum : ty
+ #  if __cplusplus
+ #    define NS_OPTIONS(ty,name) ty name; enum : ty
+ #  else
+ #    define NS_OPTIONS(ty,name) NS_ENUM(ty,name)
+ #  endif
+ #else // this provides less information, but works with older compilers
+ #  define _GS_NAMED_ENUM(ty, name) ty name; enum
+ #  define _GS_ANON_ENUM(ty) enum
+ #  define NS_OPTIONS(ty, name) NS_ENUM(ty, name)
+ #endif
+ // A bit of fairy dust to expand NS_ENUM to the correct variant
+ #define _GS_GET_ENUM_MACRO(_first,_second,NAME,...) NAME
+ /* The trick here is that placing the variadic args first will push the name
+  * that the _GS_GET_ENUM_MACRO expands to into the correct position.
+  */
+ #define NS_ENUM(...) _GS_GET_ENUM_MACRO(__VA_ARGS__,_GS_NAMED_ENUM,_GS_ANON_ENUM)(__VA_ARGS__)
+ 
+ /*
+  * If the compiler supports nullability qualifiers, we define the macros for
+  * non-null sections.
+  */
+ #if __has_feature(nullability)
+ #  define NS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin")
+ #  define NS_ASSUME_NONNULL_END   _Pragma("clang assume_nonnull end")
+ #else
+ #  define NS_ASSUME_NONNULL_BEGIN
+ #  define NS_ASSUME_NONNULL_END
+ #endif
+ 
+ /*
+  * Backwards compatibility macro for instance type.
+  */
+ #if !__has_feature(objc_instancetype)
+ # define instancetype id
+ #endif
+ 
+ /*
+  * Backwards compatibility macros for Objective-C lightweight generics.
+  */
+ #if __has_feature(objc_generics)
+ # define GS_GENERIC_CLASS(clz, ...) clz<__VA_ARGS__>
+ # define GS_GENERIC_TYPE_F(typeRef, fallback) typeRef
+ #else
+ # define GS_GENERIC_CLASS(clz, ...) clz
+ # define GS_GENERIC_TYPE_F(typeRef, fallback) fallback
+ #endif
+ #define GS_GENERIC_TYPE(typeRef) GS_GENERIC_TYPE_F(typeRef, id)
+ 
+ /**
+  * Backwards compatibility macro for the objc_designated_initializer attribute
+  */
+ #if __has_attribute(objc_designated_initializer)
+ #  define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
+ #else
+ #  define NS_DESIGNATED_INITIALIZER
+ #endif
+ 
+ /** Bitfield used to specify options to control enumeration over collections.
+  */
+ typedef NS_OPTIONS(NSUInteger, NSEnumerationOptions)
+ {
+   NSEnumerationConcurrent = (1UL << 0), /** Specifies that the enumeration
+    * is concurrency-safe.  Note that this does not mean that it will be
+    * carried out in a concurrent manner, only that it can be.
+    */
+ 
+   NSEnumerationReverse = (1UL << 1) /** Specifies that the enumeration should
+    * happen in the opposite of the natural order of the collection.
+    */
+ };
+ 
+ 
+ /** Bitfield used to specify options to control the sorting of collections.
+  */
+ typedef NS_OPTIONS(NSUInteger, NSSortOptions)
+ {
+     NSSortConcurrent = (1UL << 0), /** Specifies that the sort
+      * is concurrency-safe.  Note that this does not mean that it will be
+      * carried out in a concurrent manner, only that it can be.
+      */
+     NSSortStable = (1UL << 4) /** Specifies that the sort should keep
+      * equal objects in the same order in the collection.
+      */
+ };
+ 
+ 
+ #import "../GNUstepBase/GSObjCRuntime.h"
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST)
+ GS_EXPORT NSString	*NSStringFromProtocol(Protocol *aProtocol);
+ GS_EXPORT Protocol	*NSProtocolFromString(NSString *aProtocolName);
+ #endif
+ GS_EXPORT SEL		NSSelectorFromString(NSString *aSelectorName);
+ GS_EXPORT NSString	*NSStringFromSelector(SEL aSelector);
+ GS_EXPORT SEL		NSSelectorFromString(NSString *aSelectorName);
+ GS_EXPORT Class		NSClassFromString(NSString *aClassName);
+ GS_EXPORT NSString	*NSStringFromClass(Class aClass);
+ GS_EXPORT const char	*NSGetSizeAndAlignment(const char *typePtr,
+   NSUInteger *sizep, NSUInteger *alignp);
+ 
+ #if OS_API_VERSION(GS_API_NONE, GS_API_NONE)
+ /* Logging */
+ /**
+  *  OpenStep spec states that log messages go to stderr, but just in case
+  *  someone wants them to go somewhere else, they can implement a function
+  *  like this and assign a pointer to it to _NSLog_printf_handler.
+  */
+ typedef void NSLog_printf_handler (NSString* message);
+ GS_EXPORT NSLog_printf_handler	*_NSLog_printf_handler;
+ GS_EXPORT int	_NSLogDescriptor;
+ @class NSRecursiveLock;
+ GS_EXPORT NSRecursiveLock	*GSLogLock(void);
+ #endif
+ 
+ GS_EXPORT void	NSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);
+ GS_EXPORT void	NSLogv(NSString *format, va_list args) NS_FORMAT_FUNCTION(1,0);
+ 
+ #ifndef YES
+ #define YES		1
+ #endif
+ #ifndef NO
+ #define NO		0
+ #endif
+ #ifndef nil
+ #define nil		0
+ #endif
+ 
+ /**
+  * Contains values <code>NSOrderedSame</code>, <code>NSOrderedAscending</code>
+  * <code>NSOrderedDescending</code>, for left hand side equals, less than, or
+  * greater than right hand side.
+  */
+ typedef NS_ENUM(NSInteger, NSComparisonResult)
+ {
+   NSOrderedAscending = (NSInteger)-1, NSOrderedSame, NSOrderedDescending
+ };
+ 
+ enum {NSNotFound = NSIntegerMax};
+ 
+ #if __BLOCKS__
+ DEFINE_BLOCK_TYPE(NSComparator, NSComparisonResult, id, id);
+ #endif
+ 
+ /**
+  * Declare the foundation export macro as an alias to GS_EXPORT 
+  */
+ #define FOUNDATION_EXPORT GS_EXPORT
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ /**
+  * Declare Apple availability macros for compatibility purposes as no-ops.
+  */
+ #define NS_CLASS_AVAILABLE(...)
+ #define NS_AVAILABLE(...)
+ #define NS_AVAILABLE_MAC(...)
+ #define NS_DEPRECATED(...)
+ #define NS_DEPRECATED_MAC(...)
+ #define NS_ENUM_AVAILABLE(...)
+ #define NS_ENUM_AVAILABLE_MAC(...)
+ #define NS_ENUM_DEPRECATED(...)
+ #define NS_ENUM_DEPRECATED_MAC(...)
+ #define NS_CLASS_AVAILABLE(...)
+ #define NS_CLASS_DEPRECATED(...)
+ #define NS_CLASS_AVAILABLE_MAC(...)
+ #define NS_CLASS_DEPRECATED_MAC(...)
+ #define NS_UNAVAILABLE
+ 
+ /* Define root class NS macro */
+ #ifndef NS_ROOT_CLASS
+ #if __has_attribute(objc_root_class)
+ #define NS_ROOT_CLASS __attribute__((objc_root_class))
+ #else
+ #define NS_ROOT_CLASS
+ #endif
+ #endif
+ 
+ #endif /* __NSObjCRuntime_h_GNUSTEP_BASE_INCLUDE */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,594 ----
+ /**Interface for NSObject for GNUStep
+    Copyright (C) 1995, 1996, 1998 Free Software Foundation, Inc.
+ 
+    Written by:  Andrew Kachites McCallum <mccallum@gnu.ai.mit.edu>
+    Date: 1995
+    
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+    
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+ 
+    AutogsdocSource: NSObject.m
+    */ 
+ 
+ #ifndef __NSObject_h_GNUSTEP_BASE_INCLUDE
+ #define __NSObject_h_GNUSTEP_BASE_INCLUDE
+ 
+ #import	"NSObjCRuntime.h"
+ #import <objc/objc.h>
+ #import	"NSZone.h"
+ 
+ #ifdef	GS_WITH_GC
+ #undef  GS_WITH_GC
+ #endif
+ #define	GS_WITH_GC	0
+ 
+ #import	"../GNUstepBase/GNUstep.h"
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ @class NSArchiver;
+ @class NSArray;
+ @class NSCoder;
+ @class NSDictionary;
+ @class NSPortCoder;
+ @class NSMethodSignature;
+ @class NSMutableString;
+ @class NSRecursiveLock;
+ @class NSString;
+ @class NSInvocation;
+ @class Protocol;
+ 
+ /**
+  * The NSObject protocol describes a minimal set of methods that all
+  * objects are expected to support.  You should be able to send any
+  * of the messages listed in this protocol to an object, and be safe
+  * in assuming that the receiver can handle it.
+  */
+ @protocol NSObject
+ /**
+  * Returns the class of the receiver.  If the receiver is a proxy, then this
+  * may return the class of the proxy target.  Use -isProxy to determine whether
+  * the receiver is a proxy.  If you wish to find the real class of the
+  * receiver, ignoring proxies, then use object_getClass().  
+  */
+ - (Class) class;
+ /**
+  * Returns the superclass of receiver's class.  If the receiver is a proxy,
+  * then this may return the class of the proxy target.  Use -isProxy to
+  * determine whether the receiver is a proxy.  If you wish to find the real
+  * superclass of the receiver's class, ignoring proxies, then use
+  * class_getSuperclass(object_getClass()).
+  */
+ - (Class) superclass;
+ /**
+  * Returns whether the receiver is equal to the argument.  Defining equality is
+  * complex, so be careful when implementing this method.  Collections such as
+  * NSSet depend on the behaviour of this method.  In particular, this method
+  * must be commutative, so for any objects a and b:
+  *
+  * [a isEqual: b] == [b isEqual: a]
+  *
+  * This means that you must be very careful when returning YES if the argument
+  * is of another class.  For example, if you define a number class that returns
+  * YES if the argument is a string representation of the number, then this will
+  * break because the string will not recognise your object as being equal to
+  * itself.
+  *
+  * If two objects are equal, then they must have the same hash value, however
+  * equal hash values do not imply equality.
+  */
+ - (BOOL) isEqual: (id)anObject;
+ /**
+  * Returns YES if the receiver is an instance of the class, an instance of the
+  * subclass, or (in the case of proxies), an instance of something that can be
+  * treated as an instance of the class.
+  */
+ - (BOOL) isKindOfClass: (Class)aClass;
+ /**
+  * Returns YES if the receiver is an instance of the class or (in the case of
+  * proxies), an instance of something that can be treated as an instance of the
+  * class.
+  *
+  * Calling this method is rarely the correct thing to do.  In most cases, a
+  * subclass can be substituted for a superclass, so you should never need to
+  * check that an object is really an instance of a specific class and not a
+  * subclass.  
+  */
+ - (BOOL) isMemberOfClass: (Class)aClass;
+ /**
+  * Returns YES if the receiver is a proxy, NO otherwise.  The default
+  * implementation of this method in NSObject returns NO, while the
+  * implementation in NSProxy returns YES.
+  */
+ - (BOOL) isProxy;
+ /**
+  * Returns a hash value for the object.  All objects that are equal *MUST*
+  * return the same hash value.  For efficient storage in sets, or as keys in
+  * dictionaries, different objects should return hashes spread evenly over the
+  * range of an integer.
+  *
+  * An object may not return different values from this method after being
+  * stored in a collection.  This typically means that ether the hash value must
+  * be constant after the object's creation, or that the object may not be
+  * modified while stored in an unordered collection.
+  */
+ - (NSUInteger) hash;
+ /**
+  * Returns the receiver.  In a proxy, this may (but is not required to) return
+  * the proxied object.
+  */
+ - (id) self;
+ /**
+  * Performs the specified selector.  The selector must correspond to a method
+  * that takes no arguments.
+  */
+ - (id) performSelector: (SEL)aSelector;
+ /**
+  * Performs the specified selector, with the object as the argument.  This
+  * method does not perform any automatic unboxing, so the selector must
+  * correspond to a method that takes one object argument.
+  */
+ - (id) performSelector: (SEL)aSelector
+ 	    withObject: (id)anObject;
+ /**
+  * Performs the specified selector, with the objects as the arguments.  This
+  * method does not perform any automatic unboxing, so the selector must
+  * correspond to a method that takes two object arguments.
+  */
+ - (id) performSelector: (SEL)aSelector
+ 	    withObject: (id)object1
+ 	    withObject: (id)object2;
+ /**
+  * Returns YES if the object can respond to messages with the specified
+  * selector.  The default implementation in NSObject returns YES if the
+  * receiver has a method corresponding to the method, but other classes may
+  * return YES if they can respond to a selector using one of the various
+  * forwarding mechanisms.
+  */
+ - (BOOL) respondsToSelector: (SEL)aSelector;
+ /**
+  * Returns YES if the receiver conforms to the specified protocol.
+  */
+ - (BOOL) conformsToProtocol: (Protocol*)aProtocol;
+ /**
+  * Increments the reference count of the object and returns the receiver.  In
+  * garbage collected mode, this method does nothing.  In automated reference
+  * counting mode, you may neither implement this method nor call it directly.
+  */
+ - (id) retain NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
+ /**
+  * Decrements the reference count of the object and destroys if it there are no
+  * remaining references.  In garbage collected mode, this method does nothing.
+  * In automated reference counting mode, you may neither implement this method
+  * nor call it directly.
+  */
+ - (oneway void) release NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
+ /**
+  * Performs a deferred -release operation.  The object's reference count is
+  * decremented at the end of the scope of the current autorelease pool,
+  * identified either by a -drain message sent to the current NSAutoreleasePool
+  * instance, or in more recent versions of Objective-C by the end of an
+  * @autorelease_pool scope.
+  *
+  * In garbage collected mode, this method does nothing.  In automated reference
+  * counting mode, you may neither implement this method nor call it directly.
+  */
+ - (id) autorelease NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
+ /**
+  * Returns the current retain count of an object.  This does not include the
+  * result of any pending autorelease operations.
+  *
+  * Code that relies on this method returning a sane value is broken.  For
+  * singletons, it may return NSUIntegerMax.  Even when it is tracking a retain
+  * count, it will not include on-stack pointers in manual retain/release mode,
+  * pointers marked as __unsafe_unretain or __weak in ARC mode, or pending
+  * autorelease operations.  Its value is therefore largely meaningless.  It can
+  * occasionally be useful for debugging.
+  */
+ - (NSUInteger) retainCount NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
+ /**
+  * Returns the description of the object.  This is used by the %@ format
+  * specifier in strings.
+  */
+ - (NSString*) description;
+ /**
+  * Returns the zone of the object.
+  */
+ - (NSZone*) zone NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
+ @end
+ 
+ /**
+  * This protocol must be adopted by any class wishing to support copying -
+  * ie where instances of the class should be able to create new instances
+  * which are copies of the original and, where a class has mutable and
+  * immutable versions, where the copies are immutable.
+  */
+ @protocol NSCopying
+ /**
+  * Called by [NSObject-copy] passing NSDefaultMallocZone() as zone.<br />
+  * This method returns a copy of the receiver and, where the receiver is a
+  * mutable variant of a class which has an immutable partner class, the
+  * object returned is an instance of that immutable class.<br />
+  * The new object is <em>not</em> autoreleased, and is considered to be
+  * 'owned' by the calling code ... which is therefore responsible for
+  * releasing it.<br />
+  * In the case where the receiver is an instance of a container class,
+  * it is undefined whether contained objects are merely retained in the
+  * new copy, or are themselves copied, or whether some other mechanism
+  * entirely is used.
+  */
+ - (id) copyWithZone: (NSZone*)zone;
+ @end
+ 
+ /**
+  * This protocol must be adopted by any class wishing to support
+  * mutable copying - ie where instances of the class should be able
+  * to create mutable copies of themselves.
+  */
+ @protocol NSMutableCopying
+ /**
+  * Called by [NSObject-mutableCopy] passing NSDefaultMallocZone() as zone.<br />
+  * This method returns a copy of the receiver and, where the receiver is an
+  * immutable variant of a class which has a mutable partner class, the
+  * object returned is an instance of that mutable class.
+  * The new object is <em>not</em> autoreleased, and is considered to be
+  * 'owned' by the calling code ... which is therefore responsible for
+  * releasing it.<br />
+  * In the case where the receiver is an instance of a container class,
+  * it is undefined whether contained objects are merely retained in the
+  * new copy, or are themselves copied, or whether some other mechanism
+  * entirely is used.
+  */
+ - (id) mutableCopyWithZone: (NSZone*)zone;
+ @end
+ 
+ /**
+  * This protocol must be adopted by any class wishing to support
+  * saving and restoring instances to an archive, or copying them
+  * to remote processes via the Distributed Objects mechanism.
+  */
+ @protocol NSCoding
+ 
+ /**
+  * Called when it is time for receiver to be serialized for writing to an
+  * archive or network connection.  Receiver should record all of its instance
+  * variables using methods on aCoder.  See documentation for [NSCoder],
+  * [NSArchiver], [NSKeyedArchiver], and/or [NSPortCoder] for more information.
+  */
+ - (void) encodeWithCoder: (NSCoder*)aCoder;
+ 
+ /**
+  * Called on a freshly allocated receiver when it is time to reconstitute from
+  * serialized bytes in an archive or from a network connection.  Receiver
+  * should load all of its instance variables using methods on aCoder.  See
+  * documentation for [NSCoder], [NSUnarchiver], [NSKeyedUnarchiver], and/or
+  * [NSPortCoder] for more information.
+  */
+ - (id) initWithCoder: (NSCoder*)aDecoder;
+ @end
+ 
+ @protocol NSSecureCoding <NSCoding>
+ + (BOOL)supportsSecureCoding;
+ @end
+ 
+ 
+ GS_ROOT_CLASS @interface NSObject <NSObject>
+ {
+  /**
+   * Points to instance's class.  Used by runtime to access method
+   * implementations, etc..  Set in +alloc, Unlike other instance variables,
+   * which are cleared there.
+   */
+   Class isa;
+ }
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
+ /** On a system which performs garbage collection, you should implement
+  * this method to execute code when the receiver is collected.<br />
+  * You must not call this method yourself (except when a subclass
+  * calls the superclass method within its own implementation).
+  */
+ - (void) finalize;
+ #endif
+ 
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ - (NSString*) className;
+ #endif
+ 
+ + (id) allocWithZone: (NSZone*)z;
+ + (id) alloc;
+ + (Class) class;
+ 
+ /**
+  * This method is automatically invoked on any class which implements it
+  * when the class is loaded into the runtime.<br />
+  * It is also invoked on any category where the method is implemented
+  * when that category is loaded into the runtime.<br />
+  * The +load method is called directly by the runtime and you should never
+  * send a +load message to a class yourself.<br />
+  * This method is called <em>before</em> the +initialize message is sent
+  * to the class, so you cannot depend on class initialisation having been
+  * performed, or upon other classes existing (apart from superclasses of
+  * the receiver, since +load is called on superclasses before it is called
+  * on their subclasses).<br />
+  * As a gross generalisation, it is safe to use C code, including
+  * most ObjectiveC runtime functions within +load, but attempting to send
+  * messages to ObjectiveC objects is likely to fail.<br />
+  * In GNUstep, this method is implemented for NSObject to perform some
+  * initialisation for the base library.<br />
+  * If you implement +load for a class, don't call [super load] in your
+  * implementation.
+  */
+ + (void) load;
+ 
+ /**
+  * This message is automatically sent to a class by the runtime.  It is
+  * sent once for each class, just before the class is used for the first
+  * time (excluding any automatic call to +load by the runtime).<br />
+  * The message is sent in a thread-safe manner ... other threads may not
+  * call methods of the class until +initialize has finished executing.<br />
+  * If the class has a superclass, its implementation of +initialize is
+  * called first.<br />
+  * If the class does not implement +initialize then the implementation
+  * in the closest superclass may be called.  This means that +initialize may
+  * be called more than once, and the recommended way to handle this by
+  * using the
+  * <code>
+  * if (self == [classname class])
+  * </code>
+  * conditional to check whether the method is being called for a subclass.<br />
+  * You should never call +initialize yourself ... let the runtime do it.<br />
+  * You can implement +initialize in your own class if you need to.
+  * NSObject's implementation handles essential root object and base
+  * library initialization.<br />
+  * It should be safe to call [super initialize] in your implementation
+  * of +initialize.
+  */
+ + (void) initialize;
+ + (IMP) instanceMethodForSelector: (SEL)aSelector;
+ + (NSMethodSignature*) instanceMethodSignatureForSelector: (SEL)aSelector;
+ + (BOOL) instancesRespondToSelector: (SEL)aSelector;
+ + (BOOL) isSubclassOfClass: (Class)aClass;
+ + (id) new;
+ + (void) poseAsClass: (Class)aClassObject;
+ + (id) setVersion: (NSInteger)aVersion;
+ + (NSInteger) version;
+ 
+ - (id) awakeAfterUsingCoder: (NSCoder*)aDecoder;
+ - (Class) classForArchiver;
+ - (Class) classForCoder;
+ - (id) copy;
+ - (void) dealloc;
+ - (void) doesNotRecognizeSelector: (SEL)aSelector;
+ - (void) forwardInvocation: (NSInvocation*)anInvocation;
+ - (id) init;
+ - (IMP) methodForSelector: (SEL)aSelector;
+ - (NSMethodSignature*) methodSignatureForSelector: (SEL)aSelector;
+ - (id) mutableCopy;
+ - (id) replacementObjectForArchiver: (NSArchiver*)anArchiver;
+ - (id) replacementObjectForCoder: (NSCoder*)anEncoder;
+ - (Class) superclass;
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
+ /**
+  * This method will be called when attempting to send a message a class that
+  * does not understand it.  The class may install a new method for the given
+  * selector and return YES, otherwise it should return NO.
+  *
+  * Note: This method is only reliable when using the GNUstep runtime.  If you
+  * require compatibility with the GCC runtime, you must also implement
+  * -forwardInvocation: with equivalent semantics.  This will be considerably
+  *  slower, but more portable.
+  */
+ + (BOOL) resolveClassMethod: (SEL)name;
+ 
+ /**
+  * This method will be called when attempting to send a message an instance
+  * that does not understand it.  The class may install a new method for the
+  * given selector and return YES, otherwise it should return NO.
+  *
+  * Note: This method is only reliable when using the GNUstep runtime.  If you
+  * require compatibility with the GCC runtime, you must also implement
+  * -forwardInvocation: with equivalent semantics.  This will be considerably
+  *  slower, but more portable.
+  */
+ + (BOOL) resolveInstanceMethod: (SEL)name;
+ #endif
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
+ /**
+  * Returns an auto-accessing proxy for the given object.  This proxy sends a
+  * -beginContentAccess message to the receiver when it is created and an
+  * -endContentAccess message when it is destroyed.  This prevents an object
+  * that implements the NSDiscardableContent protocol from having its contents
+  * discarded for as long as the proxy exists.  
+  *
+  * On systems using the GNUstep runtime, messages send to the proxy will be
+  * slightly slower than direct messages.  With the GCC runtime, they will be
+  * approximately two orders of magnitude slower.  The GNUstep runtime,
+  * therefore, is strongly recommended for code calling this method.
+  */
+ - (id) autoContentAccessingProxy;
+ 
+ /**
+  * If an object does not understand a message, it may delegate it to another
+  * object.  Returning nil indicates that forwarding should not take place.  The
+  * default implementation of this returns nil, but care should be taken when
+  * subclassing NSObject subclasses and overriding this method that
+  * the superclass implementation is called if returning nil.
+  *
+  * Note: This method is only reliable when using the GNUstep runtime and code
+  * compiled with clang.  If you require compatibility with GCC and the GCC
+  * runtime, you must also implement -forwardInvocation: with equivalent
+  * semantics.  This will be considerably slower, but more portable.
+  */
+ - (id) forwardingTargetForSelector: (SEL)aSelector;
+ 
+ #endif
+ @end
+ 
+ /**
+  * Used to allocate memory to hold an object, and initialise the
+  * class of the object to be aClass etc.  The allocated memory will
+  * be extraBytes larger than the space actually needed to hold the
+  * instance variables of the object.<br />
+  * This function is used by the [NSObject+allocWithZone:] method.
+  */
+ GS_EXPORT id
+ NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
+ 
+ /**
+  * Used to release the memory used by an object.<br />
+  * This function is used by the [NSObject-dealloc] method.
+  */
+ GS_EXPORT void
+ NSDeallocateObject(id anObject);
+ 
+ /**
+  * Used to copy anObject.  This makes a bitwise copy of anObject to
+  * memory allocated from zone.  The allocated memory will be extraBytes
+  * longer than that necessary to actually store the instance variables
+  * of the copied object.<br />
+  */
+ GS_EXPORT NSObject *
+ NSCopyObject(NSObject *anObject, NSUInteger extraBytes, NSZone *zone);
+ 
+ /**
+  * Returns a flag to indicate whether anObject should be retained or
+  * copied in order to make a copy in the specified zone.<br />
+  * Basically, this tests to see if anObject was allocated from
+  * requestedZone and returns YES if it was.
+  */
+ GS_EXPORT BOOL
+ NSShouldRetainWithZone(NSObject *anObject, NSZone *requestedZone);
+ 
+ GS_EXPORT BOOL
+ NSDecrementExtraRefCountWasZero(id anObject);
+ 
+ GS_EXPORT NSUInteger
+ NSExtraRefCount(id anObject);
+ 
+ GS_EXPORT void
+ NSIncrementExtraRefCount(id anObject);
+ 
+ #if OS_API_VERSION(GS_API_NONE, GS_API_NONE)
+ 
+ /** Global lock to be used by classes when operating on any global
+     data that invoke other methods which also access global; thus,
+     creating the potential for deadlock. */
+ GS_EXPORT NSRecursiveLock *gnustep_global_lock;
+ 
+ @interface NSObject (NEXTSTEP)
+ - (id) error:(const char *)aString, ...;
+ /* - (const char *) name;
+    Removed because OpenStep has -(NSString*)name; */
+ @end
+ 
+ #if GS_API_VERSION(GS_API_NONE, 011700)
+ @interface NSObject (GNUstep)
+ + (void) enableDoubleReleaseCheck: (BOOL)enable;
+ @end
+ #endif
+ 
+ #endif
+ 
+ #import	"NSDate.h"
+ /**
+  *  Declares some methods for sending messages to self after a fixed delay.
+  *  (These methods <em>are</em> in OpenStep and OS X.)
+  */
+ @interface NSObject (TimedPerformers)
+ 
+ /**
+  * Cancels any perform operations set up for the specified target
+  * in the current run loop.
+  */
+ + (void) cancelPreviousPerformRequestsWithTarget: (id)obj;
+ 
+ /**
+  * Cancels any perform operations set up for the specified target
+  * in the current loop, but only if the value of aSelector and argument
+  * with which the performs were set up match those supplied.<br />
+  * Matching of the argument may be either by pointer equality or by
+  * use of the [NSObject-isEqual:] method.
+  */
+ + (void) cancelPreviousPerformRequestsWithTarget: (id)obj
+ 					selector: (SEL)s
+ 					  object: (id)arg;
+ /**
+  * Sets given message to be sent to this instance after given delay,
+  * in any run loop mode.  See [NSRunLoop].
+  */
+ - (void) performSelector: (SEL)s
+ 	      withObject: (id)arg
+ 	      afterDelay: (NSTimeInterval)seconds;
+ 
+ /**
+  * Sets given message to be sent to this instance after given delay,
+  * in given run loop modes.  See [NSRunLoop].
+  */
+ - (void) performSelector: (SEL)s
+ 	      withObject: (id)arg
+ 	      afterDelay: (NSTimeInterval)seconds
+ 		 inModes: (NSArray*)modes;
+ @end
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
+ /**
+  * The NSDiscardableContent protocol is used by objects which encapsulate data
+  * which may be discarded if resource constraints are exceeded.  These
+  * constraints are typically, but not always, related memory.  
+  */
+ @protocol NSDiscardableContent
+ 
+ /**
+  * This method is called before any access to the object.  It returns YES if
+  * the object's content is still valid.  The caller must call -endContentAccess
+  * once for every call to -beginContentAccess;
+  */
+ - (BOOL) beginContentAccess;
+ 
+ /**
+  * Discards the contents of the object if it is not currently being edited.
+  */
+ - (void) discardContentIfPossible;
+ 
+ /**
+  * This method indicates that the caller has finished accessing the contents of
+  * the object adopting this protocol.  Every call to -beginContentAccess must
+  * be be paired with a call to this method after the caller has finished
+  * accessing the contents.
+  */
+ - (void) endContentAccess;
+ 
+ /**
+  * Returns YES if the contents of the object have been discarded, either via a
+  * call to -discardContentIfPossible while the object is not in use, or by some
+  * implementation dependent mechanism.  
+  */
+ - (BOOL) isContentDiscarded;
+ @end
+ #endif
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #if     !NO_GNUSTEP && !defined(GNUSTEP_BASE_INTERNAL)
+ #import "../GNUstepBase/NSObject+GNUstepBase.h"
+ #endif
+ 
+ #endif /* __NSObject_h_GNUSTEP_BASE_INCLUDE */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,235 ----
+ /* 
+  * Copyright (C) 1995,1999 Free Software Foundation, Inc.
+  * 
+  * Written by:  Adam Fedor <fedor@boulder.colorado.edu>
+  * Date: 1995
+  * 
+  * This file is part of the GNUstep Base Library.
+  * 
+  * This library is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2 of the License, 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
+  * Library General Public License for more details.
+  * 
+  * You should have received a copy of the GNU Lesser General Public
+  * License along with this library; if not, write to the Free
+  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  * Boston, MA 02111 USA.
+  */ 
+ 
+ #ifndef __NSRange_h_GNUSTEP_BASE_INCLUDE
+ #define __NSRange_h_GNUSTEP_BASE_INCLUDE
+ #import	"../GNUstepBase/GSVersionMacros.h"
+ 
+ /**** Included Headers *******************************************************/
+ 
+ #import	"NSObject.h"
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ @class NSException;
+ @class NXConstantString;
+ 
+ /**** Type, Constant, and Macro Definitions **********************************/
+ 
+ #ifndef MAX
+ #define MAX(a,b) \
+        ({__typeof__(a) _MAX_a = (a); __typeof__(b) _MAX_b = (b);  \
+          _MAX_a > _MAX_b ? _MAX_a : _MAX_b; })
+ #define	GS_DEFINED_MAX
+ #endif
+ 
+ #ifndef MIN
+ #define MIN(a,b) \
+        ({__typeof__(a) _MIN_a = (a); __typeof__(b) _MIN_b = (b);  \
+          _MIN_a < _MIN_b ? _MIN_a : _MIN_b; })
+ #define	GS_DEFINED_MIN
+ #endif
+ 
+ /**
+  * <example>
+ {
+   NSUInteger location;
+   NSUInteger length;
+ }</example>
+  * <p>
+  *   The NSRange type is used to specify ranges of locations,
+  *   typically items in an array, characters in a string, and bytes
+  *   in a data object.
+  * </p>
+  * <p>
+  *   As 'boundary' or 'fencepost' errors are a particularly common
+  *   problem in programming, it is important that you understand
+  *   how an NSRange works.
+  * </p>
+  * <p>
+  *   An NSRange consists of a <em>location</em> and a <em>length</em>.  The
+  *   points that are considered to lie in a range are the integers from
+  *   the location to the location plus the length, so the number
+  *   of points in a range is the length of the range plus one.<br />
+  *   However, if you consider these points like the marks on a
+  *   ruler, you can only store information <strong>between</strong>
+  *   points.  So the number of items that can be stored in a range
+  *   is the length of the range.
+  * </p>
+  */
+ typedef struct _NSRange NSRange;
+ struct _NSRange
+ {
+   NSUInteger location;
+   NSUInteger length;
+ };
+ 
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ /** Pointer to an NSRange structure. */
+ typedef NSRange *NSRangePointer;
+ #endif
+ 
+ /**** Function Prototypes ****************************************************/
+ 
+ /*
+  *      All but the most complex functions are declared static inline in this
+  *      header file so that they are maximally efficient.  In order to provide
+  *      true functions (for code modules that don't have this header) this
+  *      header is included in NSRange.m where the functions are no longer
+  *      declared inline.
+  */
+ #ifdef  IN_NSRANGE_M
+ #define GS_RANGE_SCOPE   extern
+ #define GS_RANGE_ATTR
+ #else
+ #define GS_RANGE_SCOPE   static inline
+ #define GS_RANGE_ATTR    __attribute__((unused))
+ #endif
+ 
+ GS_RANGE_SCOPE NSUInteger
+ NSMaxRange(NSRange range) GS_RANGE_ATTR;
+ 
+ /** Returns top end of range (location + length). */
+ GS_RANGE_SCOPE NSUInteger
+ NSMaxRange(NSRange range) 
+ {
+   return range.location + range.length;
+ }
+ 
+ GS_RANGE_SCOPE BOOL 
+ NSLocationInRange(NSUInteger location, NSRange range) GS_RANGE_ATTR;
+ 
+ /** Returns whether location is greater than or equal to range's location
+  *  and less than its max.
+  */
+ GS_RANGE_SCOPE BOOL 
+ NSLocationInRange(NSUInteger location, NSRange range) 
+ {
+   return (location >= range.location) && (location < NSMaxRange(range));
+ }
+ 
+ /** Convenience method for raising an NSRangeException. */
+ GS_EXPORT void _NSRangeExceptionRaise (void);
+ /* NB: The implementation of _NSRangeExceptionRaise is: 
+    [NSException raise: NSRangeException
+ 	       format: @"Range location + length too great"]; 
+ 
+    _NSRangeExceptionRaise is defined in NSRange.m so that this
+    file (NSRange.h) can be included without problems in the
+    implementation of the base classes themselves. */
+ 
+ GS_RANGE_SCOPE NSRange
+ NSMakeRange(NSUInteger location, NSUInteger length) GS_RANGE_ATTR;
+ 
+ /** Creates new range starting at location and of given length. */
+ GS_RANGE_SCOPE NSRange
+ NSMakeRange(NSUInteger location, NSUInteger length)
+ {
+   NSRange range;
+   NSUInteger end = location + length;
+ 
+   if (end < location || end < length)
+     {
+       _NSRangeExceptionRaise ();
+     }
+   range.location = location;
+   range.length   = length;
+   return range;
+ }
+ 
+ GS_RANGE_SCOPE BOOL
+ NSEqualRanges(NSRange range1, NSRange range2) GS_RANGE_ATTR;
+ 
+ /** Returns whether range1 and range2 have same location and length. */
+ GS_RANGE_SCOPE BOOL
+ NSEqualRanges(NSRange range1, NSRange range2)
+ {
+   return ((range1.location == range2.location)
+                 && (range1.length == range2.length));
+ }
+ 
+ GS_RANGE_SCOPE NSRange
+ NSUnionRange(NSRange range1, NSRange range2) GS_RANGE_ATTR;
+ 
+ /** Returns range going from minimum of aRange's and bRange's locations to
+     maximum of their two max's. */
+ GS_RANGE_SCOPE NSRange
+ NSUnionRange(NSRange aRange, NSRange bRange)
+ {
+   NSRange range;
+ 
+   range.location = MIN(aRange.location, bRange.location);
+   range.length   = MAX(NSMaxRange(aRange), NSMaxRange(bRange))
+                 - range.location;
+   return range;
+ }
+ 
+ GS_RANGE_SCOPE NSRange
+ NSIntersectionRange(NSRange range1, NSRange range2) GS_RANGE_ATTR;
+ 
+ /** Returns range containing indices existing in both aRange and bRange.  If
+  *  the returned length is 0, the location is undefined and should be ignored.
+  */
+ GS_RANGE_SCOPE NSRange
+ NSIntersectionRange (NSRange aRange, NSRange bRange)
+ {
+   NSRange range;
+ 
+   if (NSMaxRange(aRange) < bRange.location
+                 || NSMaxRange(bRange) < aRange.location)
+     return NSMakeRange(0, 0);
+ 
+   range.location = MAX(aRange.location, bRange.location);
+   range.length   = MIN(NSMaxRange(aRange), NSMaxRange(bRange))
+                 - range.location;
+   return range;
+ }
+ 
+ 
+ @class NSString;
+ 
+ /** Returns string of form {location=a, length=b}. */
+ GS_EXPORT NSString *NSStringFromRange(NSRange range);
+ 
+ /** Parses range from string of form {location=a, length=b}; returns range
+     with 0 location and length if this fails. */
+ GS_EXPORT NSRange NSRangeFromString(NSString *aString);
+ 
+ #ifdef	GS_DEFINED_MAX
+ #undef	GS_DEFINED_MAX
+ #undef	MAX
+ #endif
+ 
+ #ifdef	GS_DEFINED_MIN
+ #undef	GS_DEFINED_MIN
+ #undef	MIN
+ #endif
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #endif /* __NSRange_h_GNUSTEP_BASE_INCLUDE */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,977 ----
+ /* Interface for NSString for GNUstep
+    Copyright (C) 1995, 1996, 1999 Free Software Foundation, Inc.
+ 
+    Written by:  Andrew Kachites McCallum <mccallum@gnu.ai.mit.edu>
+    Date: 1995
+    
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+    
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+   */
+ 
+ /**
+ <chapter>
+  <heading>Portable path handling</heading>
+  <p>Portable path handling (across both unix-like and mswindows operating
+  systems) requires some care.  A modern operating system uses the concept
+  of a single root to the filesystem, but mswindows has multiple filesystems
+  with no common root, so code must be aware of this.  There is also the
+  more minor issue that windows often uses a backslash as a separator between
+  the components of a path and unix-like systems always use forward slash.<br />
+  On windows there is also the issue that two styles of path are used,
+  most commonly with a drive letter and a path on that drive
+  (eg. 'C:\directory\file') but also UNC paths
+  (eg. '//host/share/directory/file') so path handling functions must deal
+  with both formats.
+  </p>
+  <p>GNUstep has three path handling modes, 'gnustep', 'unix', and 'windows'.
+  The mode defaults to 'gnustep' but may be set using the GSPathHandling()
+  function.<br />
+  You should probably stick to using the default 'gnustep' mode in which the
+  path handling methods cope with both 'unix' and 'windows' style paths in
+  portable and tolerant manner:<br />
+  Paths are read in literally so they can be in the native format provided
+  by the operating system or in a non-native format. See
+  [NSFileManager-stringWithFileSystemRepresentation:length:].<br />
+  Paths are written out using the native format of the system the application
+  is running on (eg on windows slashes are converted to backslashes).
+  See [NSFileManager-fileSystemRepresentationWithPath:].<br />
+  The path handling methods accept either a forward or backward slash as a
+  path separator when parsing any path.<br />
+  Unless operating in 'unix' mode, a leading letter followed by a colon is
+  considered the start of a windows style path (the drive specifier), and a
+  path beginning with something of the form '//host/share/' is considered
+  the start of a UNC style path.<br />
+  The path handling methods add forward slashes when building new paths
+  internally or when standardising paths, so those path strings provide
+  a portable representation (as long as they are relative paths, not including
+  system specific roots).<br />
+  An important case to note is that on windows a path which looks at first
+  glance like an absolute path may actually be a relative one.<br />
+  'C:file' is a relative path because it specifies  a file on the C drive
+  but does not say what directory it is in.<br />
+ Similarly, '/dir/file' is a relative path because it specifies the full
+ location fo a file on a drive, but does not specify which drive it is on.
+  </p>
+ <p>As a consequence of this path handling, you are able to work completely
+ portably using relative paths (adding components, extensions and
+ relative paths to a pth, or removing components, extensions and relative
+ paths from a path etc), and when you save paths as strings in files
+ which may be transferred to another platform, you should save a relative
+ path.<br />
+ When you need to know absolute paths of various points in the filesystem,
+ you can use various path utility functions to obtain those absolute paths.
+ For instance, instead of saving an absolute path to a file, you might want
+ to save a path relative to a user's home directory.  You could do that by
+ calling NSHomeDirectory() to get the home directory, and only saving the
+ part of the full path after that prefix.
+ </p>
+ </chapter>
+  */ 
+ 
+ #ifndef __NSString_h_GNUSTEP_BASE_INCLUDE
+ #define __NSString_h_GNUSTEP_BASE_INCLUDE
+ #import	"../GNUstepBase/GSVersionMacros.h"
+ 
+ #import	"NSObject.h"
+ #import	"NSRange.h"
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ /**
+  * Type for representing unicode characters.  (16-bit)
+  */
+ typedef uint16_t unichar;
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST) 
+ #define NSMaximumStringLength   (INT_MAX-1)
+ #endif
+ 
+ @class NSArray;
+ @class NSCharacterSet;
+ @class NSData;
+ @class NSDictionary;
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ @class NSError;
+ @class NSLocale;
+ @class NSURL;
+ #endif
+ 
+ #define NSMaximumStringLength	(INT_MAX-1)
+ 
+ enum 
+ {
+   NSCaseInsensitiveSearch = 1,
+   NSLiteralSearch = 2,
+   NSBackwardsSearch = 4,
+   NSAnchoredSearch = 8,
+   NSNumericSearch = 64	/* MacOS-X 10.2 */
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST) 
+  ,
+  NSDiacriticInsensitiveSearch = 128,
+  NSWidthInsensitiveSearch = 256,
+  NSForcedOrderingSearch = 512
+ #endif
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_7,GS_API_LATEST) 
+  ,
+  /**
+   * Treats the search string as a regular expression.  This option may be
+   * combined with NSCaseInsensitiveSearch and NSAnchoredSearch, but no other
+   * search options.
+   *
+   * This option may only be used with the -rangeOfString: family of methods.
+   */
+  NSRegularExpressionSearch = 1024
+ #endif
+ };
+ typedef NSUInteger NSStringCompareOptions;
+ 
+ /**
+  *  <p>Enumeration of available encodings for converting between bytes and
+  *  characters (in [NSString]s).  The ones that are shared with OpenStep and
+  *  Cocoa are: <code>NSASCIIStringEncoding, NSNEXTSTEPStringEncoding,
+  *  NSJapaneseEUCStringEncoding, NSUTF8StringEncoding,
+  *  NSISOLatin1StringEncoding, NSSymbolStringEncoding,
+  *  NSNonLossyASCIIStringEncoding, NSShiftJISStringEncoding,
+  *  NSISOLatin2StringEncoding, NSUnicodeStringEncoding,
+  *  NSWindowsCP1251StringEncoding, NSWindowsCP1252StringEncoding,
+  *  NSWindowsCP1253StringEncoding, NSWindowsCP1254StringEncoding,
+  *  NSWindowsCP1250StringEncoding, NSISO2022JPStringEncoding,
+  *  NSMacOSRomanStringEncoding, NSProprietaryStringEncoding</code>.</p>
+  *  
+  *  <p>Additional encodings available under GNUstep are:
+  *  <code>NSKOI8RStringEncoding, NSISOLatin3StringEncoding,
+  *  NSISOLatin4StringEncoding, NSISOCyrillicStringEncoding,
+  *  NSISOArabicStringEncoding, NSISOGreekStringEncoding,
+  *  NSISOHebrewStringEncoding, NSISOLatin5StringEncoding,
+  *  NSISOLatin6StringEncoding, NSISOThaiStringEncoding,
+  *  NSISOLatin7StringEncoding, NSISOLatin8StringEncoding,
+  *  NSISOLatin9StringEncoding, NSGB2312StringEncoding, NSUTF7StringEncoding,
+  *  NSGSM0338StringEncoding, NSBIG5StringEncoding,
+  *  NSKoreanEUCStringEncoding</code>.</p>
+  */
+ typedef enum _NSStringEncoding
+ {
+ /* NB. Must not have an encoding with value zero - so we can use zero to
+    tell that a variable that should contain an encoding has not yet been
+    initialised */
+   GSUndefinedEncoding = 0,
+   NSASCIIStringEncoding = 1,
+   NSNEXTSTEPStringEncoding = 2,
+   NSJapaneseEUCStringEncoding = 3,
+   NSUTF8StringEncoding = 4,
+   NSISOLatin1StringEncoding = 5,	// ISO-8859-1; West European
+   NSSymbolStringEncoding = 6,
+   NSNonLossyASCIIStringEncoding = 7,
+   NSShiftJISStringEncoding = 8,
+   NSISOLatin2StringEncoding = 9,	// ISO-8859-2; East European
+   NSUnicodeStringEncoding = 10,
+   NSUTF16StringEncoding = NSUnicodeStringEncoding,      // An alias
+   NSWindowsCP1251StringEncoding = 11,
+   NSWindowsCP1252StringEncoding = 12,	// WinLatin1
+   NSWindowsCP1253StringEncoding = 13,	// Greek
+   NSWindowsCP1254StringEncoding = 14,	// Turkish
+   NSWindowsCP1250StringEncoding = 15,	// WinLatin2
+   NSISO2022JPStringEncoding = 21,
+   NSMacOSRomanStringEncoding = 30,
+   NSProprietaryStringEncoding = 31,
+ 
+   NSKOI8RStringEncoding = 50,		// Russian/Cyrillic
+   NSISOLatin3StringEncoding = 51,	// ISO-8859-3; South European
+   NSISOLatin4StringEncoding = 52,	// ISO-8859-4; North European
+   NSISOCyrillicStringEncoding = 22,	// ISO-8859-5
+   NSISOArabicStringEncoding = 53,	// ISO-8859-6
+   NSISOGreekStringEncoding = 54,	// ISO-8859-7
+   NSISOHebrewStringEncoding = 55,	// ISO-8859-8
+   NSISOLatin5StringEncoding = 57,	// ISO-8859-9; Turkish
+   NSISOLatin6StringEncoding = 58,	// ISO-8859-10; Nordic
+   NSISOThaiStringEncoding = 59,		// ISO-8859-11
+ /* Possible future ISO-8859 additions
+ 					// ISO-8859-12
+ */
+   NSISOLatin7StringEncoding = 61,	// ISO-8859-13
+   NSISOLatin8StringEncoding = 62,	// ISO-8859-14
+   NSISOLatin9StringEncoding = 63,	// ISO-8859-15; Replaces ISOLatin1
+   NSGB2312StringEncoding = 56,
+   NSUTF7StringEncoding = 64,		// RFC 2152
+   NSGSM0338StringEncoding,		// GSM (mobile phone) default alphabet
+   NSBIG5StringEncoding,			// Traditional chinese
+   NSKoreanEUCStringEncoding		// Korean
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) 
+   ,
+   NSUTF16BigEndianStringEncoding = 0x90000100,
+   NSUTF16LittleEndianStringEncoding = 0x94000100,
+   NSUTF32StringEncoding = 0x8c000100,
+   NSUTF32BigEndianStringEncoding = 0x98000100,
+   NSUTF32LittleEndianStringEncoding = 0x9c000100
+ #endif
+ } NSStringEncoding;
+ 
+ enum {
+   NSOpenStepUnicodeReservedBase = 0xF400
+ };
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) 
+ enum {
+   NSStringEncodingConversionAllowLossy = 1,
+   NSStringEncodingConversionExternalRepresentation = 2
+ };
+ typedef NSUInteger NSStringEncodingConversionOptions;
+ #endif
+ 
+ /**
+  * <p>
+  *   <code>NSString</code> objects represent an immutable string of Unicode 3.0
+  *   characters.  These may be accessed individually as type
+  *   <code>unichar</code>, an unsigned short.<br/>
+  *   The [NSMutableString] subclass represents a modifiable string.  Both are
+  *   implemented as part of a class cluster and the instances you receive may
+  *   actually be of unspecified concrete subclasses.
+  * </p>
+  * <p>
+  *   A constant <code>NSString</code> can be created using the following syntax:
+  *   <code>@"..."</code>, where the contents of the quotes are the
+  *   string, using only ASCII characters.
+  * </p>
+  * <p>
+  *   A variable string can be created using a C printf-like <em>format</em>,
+  *   as in <code>[NSString stringWithFormat: @"Total is %f", t]</code>.
+  * </p>
+  * <p>
+  *   To create a concrete subclass of <code>NSString</code>, you must have your
+  *   class inherit from <code>NSString</code> and override at least the two
+  *   primitive methods - -length and -characterAtIndex:
+  * </p>
+  * <p>
+  *   In general the rule is that your subclass must override any
+  *   initialiser that you want to use with it.  The GNUstep
+  *   implementation relaxes that to say that, you may override
+  *   only the <em>designated initialiser</em> and the other
+  *   initialisation methods should work.
+  * </p>
+  * <p>
+  *   Where an NSString instance method returns an NSString object,
+  *   the class of the actual object returned may be any subclass
+  *   of NSString.  The actual value returned may be a new
+  *   autoreleased object, an autoreleased copy of the receiver,
+  *   or the receiver itsself.  While the abstract base class
+  *   implementations of methods (other than initialisers) will
+  *   avoid returning mutable strings by returning an autoreleased
+  *   copy of a mutable receiver, concrete subclasses may behave
+  *   differently, so code should not rely upon the mutability of
+  *   returned strings nor upon their lifetime being greater than
+  *   that of the receiver which returned them.
+  * </p>
+  */
+ @interface NSString :NSObject <NSCoding, NSCopying, NSMutableCopying>
+ 
+ + (id) string;
+ + (id) stringWithCharacters: (const unichar*)chars
+ 		     length: (NSUInteger)length;
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) && GS_API_VERSION( 10200,GS_API_LATEST)
+ + (id) stringWithCString: (const char*)byteString
+ 		encoding: (NSStringEncoding)encoding;
+ #endif
+ + (id) stringWithCString: (const char*)byteString
+ 		  length: (NSUInteger)length;
+ + (id) stringWithCString: (const char*)byteString;
+ + (id) stringWithFormat: (NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
+ + (id) stringWithContentsOfFile:(NSString *)path;
+ 
+ // Initializing Newly Allocated Strings
+ - (id) init;
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) && GS_API_VERSION( 10200,GS_API_LATEST)
+ - (id) initWithBytes: (const void*)bytes
+ 	      length: (NSUInteger)length
+ 	    encoding: (NSStringEncoding)encoding;
+ - (id) initWithBytesNoCopy: (void*)bytes
+ 		    length: (NSUInteger)length
+ 		  encoding: (NSStringEncoding)encoding 
+ 	      freeWhenDone: (BOOL)flag;
+ #endif
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST)
+ + (id) stringWithContentsOfFile: (NSString*)path
+                    usedEncoding: (NSStringEncoding*)enc
+                           error: (NSError**)error;
+ - (id) initWithContentsOfFile: (NSString*)path
+                  usedEncoding: (NSStringEncoding*)enc
+                         error: (NSError**)error;
+ + (id) stringWithContentsOfFile: (NSString*)path
+                        encoding: (NSStringEncoding)enc
+                           error: (NSError**)error;
+ - (id) initWithContentsOfFile: (NSString*)path
+                      encoding: (NSStringEncoding)enc
+                         error: (NSError**)error;
+ + (id) stringWithContentsOfURL: (NSURL*)url
+                   usedEncoding: (NSStringEncoding*)enc
+                          error: (NSError**)error;
+ - (id) initWithContentsOfURL: (NSURL*)url
+                 usedEncoding: (NSStringEncoding*)enc
+                        error: (NSError**)error;
+ + (id) stringWithContentsOfURL: (NSURL*)url
+                       encoding: (NSStringEncoding)enc
+                          error: (NSError**)error;
+ - (id) initWithContentsOfURL: (NSURL*)url
+                     encoding: (NSStringEncoding)enc
+                        error: (NSError**)error;
+ - (BOOL) writeToFile: (NSString*)path
+ 	  atomically: (BOOL)atomically
+ 	    encoding: (NSStringEncoding)enc
+ 	       error: (NSError**)error;
+ - (BOOL) writeToURL: (NSURL*)url
+ 	 atomically: (BOOL)atomically
+ 	   encoding: (NSStringEncoding)enc
+ 	      error: (NSError**)error;
+ #endif
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST)
+ - (NSString*)stringByReplacingOccurrencesOfString: (NSString*)replace
+                                        withString: (NSString*)by
+                                           options: (NSStringCompareOptions)opts
+                                             range: (NSRange)searchRange;
+ - (NSString*)stringByReplacingOccurrencesOfString: (NSString*)replace
+                                        withString: (NSString*)by;
+ - (NSString*) stringByReplacingCharactersInRange: (NSRange)aRange 
+                                       withString: (NSString*)by;
+ #endif
+ - (id) initWithCharactersNoCopy: (unichar*)chars
+ 			 length: (NSUInteger)length
+ 		   freeWhenDone: (BOOL)flag;
+ - (id) initWithCharacters: (const unichar*)chars
+ 		   length: (NSUInteger)length;
+ - (id) initWithCStringNoCopy: (char*)byteString
+ 		      length: (NSUInteger)length
+ 	        freeWhenDone: (BOOL)flag;
+ - (id) initWithCString: (const char*)byteString
+ 	        length: (NSUInteger)length;
+ - (id) initWithCString: (const char*)byteString;
+ - (id) initWithString: (NSString*)string;
+ - (id) initWithFormat: (NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
+ - (id) initWithFormat: (NSString*)format
+ 	    arguments: (va_list)argList NS_FORMAT_FUNCTION(1,0);
+ - (id) initWithData: (NSData*)data
+ 	   encoding: (NSStringEncoding)encoding;
+ - (id) initWithContentsOfFile: (NSString*)path;
+ 
+ // Getting a String's Length
+ - (NSUInteger) length;
+ 
+ // Accessing Characters
+ - (unichar) characterAtIndex: (NSUInteger)index;
+ - (void) getCharacters: (unichar*)buffer;
+ - (void) getCharacters: (unichar*)buffer
+ 		 range: (NSRange)aRange;
+ 
+ // Combining Strings
+ - (NSString*) stringByAppendingFormat: (NSString*)format, ...
+   NS_FORMAT_FUNCTION(1,2);
+ - (NSString*) stringByAppendingString: (NSString*)aString;
+ 
+ // Dividing Strings into Substrings
+ - (NSArray*) componentsSeparatedByString: (NSString*)separator;
+ - (NSString*) substringFromIndex: (NSUInteger)index;
+ - (NSString*) substringToIndex: (NSUInteger)index;
+ 
+ // Finding Ranges of Characters and Substrings
+ - (NSRange) rangeOfCharacterFromSet: (NSCharacterSet*)aSet;
+ - (NSRange) rangeOfCharacterFromSet: (NSCharacterSet*)aSet
+ 			    options: (NSUInteger)mask;
+ - (NSRange) rangeOfCharacterFromSet: (NSCharacterSet*)aSet
+ 			    options: (NSUInteger)mask
+ 			      range: (NSRange)aRange;
+ - (NSRange) rangeOfString: (NSString*)string;
+ - (NSRange) rangeOfString: (NSString*)string
+ 		  options: (NSUInteger)mask;
+ - (NSRange) rangeOfString: (NSString*)aString
+ 		  options: (NSUInteger)mask
+ 		    range: (NSRange)aRange;
+ 
+ // Determining Composed Character Sequences
+ - (NSRange) rangeOfComposedCharacterSequenceAtIndex: (NSUInteger)anIndex;
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_2,GS_API_LATEST) 
+ /** Returns a copy of the receiver normalised using the KD form.
+  */
+ - (NSString *) decomposedStringWithCompatibilityMapping;
+ 
+ /** Returns a copy of the receiver normalised using the D form.
+  */
+ - (NSString *) decomposedStringWithCanonicalMapping;
+ 
+ /** Returns a copy of the receiver normalised using the KC form.
+  */
+ - (NSString *) precomposedStringWithCompatibilityMapping;
+ 
+ /** Returns a copy of the receiver normalised using the C form.
+  */
+ - (NSString *) precomposedStringWithCanonicalMapping;
+ #endif
+ 
+ // Converting String Contents into a Property List
+ - (id) propertyList;
+ - (NSDictionary*) propertyListFromStringsFileFormat;
+ 
+ // Identifying and Comparing Strings
+ - (NSComparisonResult) compare: (NSString*)aString;
+ - (NSComparisonResult) compare: (NSString*)aString	
+ 		       options: (NSUInteger)mask;
+ - (NSComparisonResult) compare: (NSString*)aString
+ 		       options: (NSUInteger)mask
+ 			 range: (NSRange)aRange;
+ - (BOOL) hasPrefix: (NSString*)aString;
+ - (BOOL) hasSuffix: (NSString*)aString;
+ - (BOOL) isEqual: (id)anObject;
+ - (BOOL) isEqualToString: (NSString*)aString;
+ - (NSUInteger) hash;
+ 
+ // Getting a Shared Prefix
+ - (NSString*) commonPrefixWithString: (NSString*)aString
+ 			     options: (NSUInteger)mask;
+ 
+ // Changing Case
+ - (NSString*) capitalizedString;
+ - (NSString*) lowercaseString;
+ - (NSString*) uppercaseString;
+ 
+ // Getting C Strings
+ - (const char*) cString;
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) && GS_API_VERSION( 10200,GS_API_LATEST)
+ - (const char*) cStringUsingEncoding: (NSStringEncoding)encoding;
+ - (BOOL) getCString: (char*)buffer
+ 	  maxLength: (NSUInteger)maxLength
+ 	   encoding: (NSStringEncoding)encoding;
+ - (id) initWithCString: (const char*)byteString
+ 	      encoding: (NSStringEncoding)encoding;
+ - (NSUInteger) lengthOfBytesUsingEncoding: (NSStringEncoding)encoding;
+ - (NSUInteger) maximumLengthOfBytesUsingEncoding: (NSStringEncoding)encoding;
+ #endif
+ 
+ #endif
+ - (NSUInteger) cStringLength;
+ - (void) getCString: (char*)buffer;
+ - (void) getCString: (char*)buffer
+ 	  maxLength: (NSUInteger)maxLength;
+ - (void) getCString: (char*)buffer
+ 	  maxLength: (NSUInteger)maxLength
+ 	      range: (NSRange)aRange
+      remainingRange: (NSRange*)leftoverRange;
+ 
+ // Getting Numeric Values
+ - (float) floatValue;
+ - (int) intValue;
+ 
+ // Working With Encodings
+ - (BOOL) canBeConvertedToEncoding: (NSStringEncoding)encoding;
+ - (NSData*) dataUsingEncoding: (NSStringEncoding)encoding;
+ - (NSData*) dataUsingEncoding: (NSStringEncoding)encoding
+ 	 allowLossyConversion: (BOOL)flag;
+ + (NSStringEncoding) defaultCStringEncoding;
+ - (NSString*) description;
+ - (NSStringEncoding) fastestEncoding;
+ - (NSStringEncoding) smallestEncoding;
+ 
+ /**
+  * Attempts to complete this string as a path in the filesystem by finding
+  * a unique completion if one exists and returning it by reference in
+  * outputName (which must be a non-nil pointer), or if it finds a set of
+  * completions they are returned by reference in outputArray, if it is non-nil.
+  * filterTypes can be an array of strings specifying extensions to consider;
+  * files without these extensions will be ignored and will not constitute
+  * completions.  Returns 0 if no match found, else a positive number that is
+  * only accurate if outputArray was non-nil.
+  */
+ - (NSUInteger) completePathIntoString: (NSString**)outputName
+ 			caseSensitive: (BOOL)flag
+ 		     matchesIntoArray: (NSArray**)outputArray
+ 			  filterTypes: (NSArray*)filterTypes;
+ 
+ /**
+  * Converts the receiver to a C string path expressed in the character
+  * encoding appropriate for the local host file system.  This string will be
+  * automatically freed soon after it is returned, so copy it if you need it
+  * for long.<br />
+  * NB. On mingw32 systems the filesystem representation of a path is a 16-bit
+  * unicode character string, so you should only pass the value returned by
+  * this method to functions expecting wide characters.<br />
+  * This method uses [NSFileManager-fileSystemRepresentationWithPath:] to
+  * perform the conversion.
+  */
+ - (const GSNativeChar*) fileSystemRepresentation;
+ 
+ /**
+  * Converts the receiver to a C string path using the character encoding
+  * appropriate to the local file system.  This string will be stored
+  * into buffer if it is shorter (number of characters) than size,
+  * otherwise NO is returned.<br />
+  * NB. On mingw32 systems the filesystem representation of a path is a 16-bit
+  * unicode character string, so the buffer you pass to this method must be
+  * twice as many bytes as the size (number of characters) you expect to
+  * receive.<br />
+  * This method uses [NSFileManager-fileSystemRepresentationWithPath:] to
+  * perform the conversion.
+  */
+ - (BOOL) getFileSystemRepresentation: (GSNativeChar*)buffer
+ 			   maxLength: (NSUInteger)size;
+ 
+ /**
+  * Returns a string containing the last path component of the receiver.<br />
+  * The path component is the last non-empty substring delimited by the ends
+  * of the string, or by path separator characters.<br />
+  * If the receiver only contains a root part, this method returns it.<br />
+  * If there are no non-empty substrings, this returns an empty string.<br />
+  * NB. In a windows UNC path, the host and share specification is treated as
+  * a single path component, even though it contains separators.
+  * So a string of the form '//host/share' may be returned.<br />
+  * Other special cases are apply when the string is the root.
+  * <example>
+  *   @"foo/bar" produces @"bar"
+  *   @"foo/bar/" produces @"bar"
+  *   @"/foo/bar" produces @"bar"
+  *   @"/foo" produces @"foo"
+  *   @"/" produces @"/" (root is a special case)
+  *   @"" produces @""
+  *   @"C:/" produces @"C:/" (root is a special case)
+  *   @"C:" produces @"C:"
+  *   @"//host/share/" produces @"//host/share/" (root is a special case)
+  *   @"//host/share" produces @"//host/share"
+  * </example>
+  */
+ - (NSString*) lastPathComponent;
+ 
+ /**
+  * Returns a new string containing the path extension of the receiver.<br />
+  * The path extension is a suffix on the last path component which starts
+  * with the extension separator (a '.') (for example .tiff is the
+  * pathExtension for /foo/bar.tiff).<br />
+  * Returns an empty string if no such extension exists.
+  * <example>
+  *   @"a.b" produces @"b"
+  *   @"a.b/" produces @"b"
+  *   @"/path/a.ext" produces @"ext"
+  *   @"/path/a." produces @""
+  *   @"/path/.a" produces @"" (.a is not an extension to a file)
+  *   @".a" produces @"" (.a is not an extension to a file)
+  * </example>
+  */
+ - (NSString*) pathExtension;
+ 
+ /**
+  * Returns a string where a prefix of the current user's home directory is
+  * abbreviated by '~', or returns the receiver (or an immutable copy) if
+  * it was not found to have the home directory as a prefix.
+  */
+ - (NSString*) stringByAbbreviatingWithTildeInPath;
+ 
+ /**
+  * Returns a new string with the path component given in aString
+  * appended to the receiver.<br />
+  * This removes trailing path separators from the receiver and the root
+  * part from aString and replaces them with a single slash as a path
+  * separator.<br />
+  * Also condenses any multiple separator sequences in the result into
+  * single path separators.
+  * <example>
+  *   @"" with @"file" produces @"file"
+  *   @"path" with @"file" produces @"path/file"
+  *   @"/" with @"file" produces @"/file"
+  *   @"/" with @"file" produces @"/file"
+  *   @"/" with @"/file" produces @"/file"
+  *   @"path with @"C:/file" produces @"path/file"
+  * </example>
+  * NB. Do not use this method to modify strings other than filesystem
+  * paths as the behavior in such cases is undefined ... for instance
+  * the string may have repeated slashes or slash-dot-slash sequences
+  * removed.
+  */
+ - (NSString*) stringByAppendingPathComponent: (NSString*)aString;
+ 
+ /**
+  * Returns a new string with the path extension given in aString
+  * appended to the receiver after an extensionSeparator ('.').<br />
+  * If the receiver has trailing path separator characters, they are
+  * stripped before the extension separator is added.<br />
+  * If the receiver contains no components after the root, the extension
+  * cannot be appended (an extension can only be appended to a file name),
+  * so a copy of the unmodified receiver is returned.<br />
+  * An empty string may be used as an extension ... in which case the extension
+  * separator is appended.<br />
+  * This behavior mirrors that of the -stringByDeletingPathExtension method.
+  * <example>
+  *   @"Mail" with @"app" produces @"Mail.app"
+  *   @"Mail.app" with @"old" produces @"Mail.app.old"
+  *   @"file" with @"" produces @"file."
+  *   @"/" with @"app" produces @"/" (no file name to append to)
+  *   @"" with @"app" produces @"" (no file name to append to)
+  * </example>
+  * NB. Do not use this method to modify strings other than filesystem
+  * paths as the behavior in such cases is undefined ... for instance
+  * the string may have repeated slashes or slash-dot-slash sequences
+  * removed.
+  */
+ - (NSString*) stringByAppendingPathExtension: (NSString*)aString;
+ 
+ /**
+  * Returns a new string with the last path component (including any final
+  * path separators) removed from the receiver.<br />
+  * A string without a path component other than the root is returned
+  * without alteration.<br />
+  * See -lastPathComponent for a definition of a path component.
+  * <example>
+  *   @"hello/there" produces @"hello" (a relative path)
+  *   @"hello" produces @"" (a relative path)
+  *   @"/hello" produces @"/" (an absolute unix path)
+  *   @"/" produces @"/" (an absolute unix path)
+  *   @"C:file" produces @"C:" (a relative windows path)
+  *   @"C:" produces @"C:" (a relative windows path)
+  *   @"C:/file" produces @"C:/" (an absolute windows path)
+  *   @"C:/" produces @"C:/" (an absolute windows path)
+  *   @"//host/share/file" produces @"//host/share/" (a UNC path)
+  *   @"//host/share/" produces @"//host/share/" (a UNC path)
+  *   @"//path/file" produces @"//path" (an absolute Unix path)
+  * </example>
+  * NB. Do not use this method to modify strings other than filesystem
+  * paths as the behavior in such cases is undefined ... for instance
+  * the string may have repeated slashes or slash-dot-slash sequences
+  * removed.
+  */
+ - (NSString*) stringByDeletingLastPathComponent;
+ 
+ /**
+  * Returns a new string with the path extension removed from the receiver.<br />
+  * Strips any trailing path separators before checking for the extension
+  * separator.<br />
+  * NB. This method does not consider a string which contains nothing
+  * between the root part and the extension separator ('.') to be a path
+  * extension. This mirrors the behavior of the -stringByAppendingPathExtension:
+  * method.
+  * <example>
+  *   @"file.ext" produces @"file"
+  *   @"/file.ext" produces @"/file"
+  *   @"/file.ext/" produces @"/file" (trailing path separators are ignored)
+  *   @"/file..ext" produces @"/file."
+  *   @"/file." produces @"/file"
+  *   @"/.ext" produces @"/.ext" (there is no file to strip from)
+  *   @".ext" produces @".ext" (there is no file to strip from)
+  * </example>
+  * NB. Do not use this method to modify strings other than filesystem
+  * paths as the behavior in such cases is undefined ... for instance
+  * the string may have repeated slashes or slash-dot-slash sequences
+  * removed.
+  */
+ - (NSString*) stringByDeletingPathExtension;
+ 
+ /**
+  * Returns a string created by expanding the initial tilde ('~') and any
+  * following username to be the home directory of the current user or the
+  * named user.<br />
+  * Returns the receiver or an immutable copy if it was not possible to
+  * expand it.
+  */
+ - (NSString*) stringByExpandingTildeInPath;
+ 
+ /**
+  * First calls -stringByExpandingTildeInPath if necessary.<br />
+  * Replaces path string by one in which path components representing symbolic
+  * links have been replaced by their referents.<br />
+  * Removes a leading '/private' if the result is valid.<br />
+  * If links cannot be resolved, returns an unmodified copy of the receiver.
+  */
+ - (NSString*) stringByResolvingSymlinksInPath;
+ 
+ /**
+  * Returns a standardised form of the receiver, with unnecessary parts
+  * removed, tilde characters expanded, and symbolic links resolved
+  * where possible.<br />
+  * NB. Refers to the local filesystem to resolve symbolic links in
+  * absolute paths, and to expand tildes ... so this can't be used for
+  * general path manipulation.<br />
+  * If the string is an invalid path, the unmodified receiver is returned.<br />
+  * <p>
+  *   Uses -stringByExpandingTildeInPath to expand tilde expressions.<br />
+  *   Simplifies '//' and '/./' sequences and removes trailing '/' or '.'.<br />
+  * </p>
+  * <p>
+  *  For absolute paths, uses -stringByResolvingSymlinksInPath to resolve
+  *  any links, then gets rid of '/../' sequences and removes any '/private'
+  *  prefix.
+  * </p>
+  */
+ - (NSString*) stringByStandardizingPath;
+ 
+ 
+ // for methods working with decomposed strings
+ - (int) _baseLength;
+ 
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ /**
+  * Concatenates the path components in the array and returns the result.<br />
+  * This method does not remove empty path components, but does recognize an
+  * empty initial component as a special case meaning that the string
+  * returned will begin with a slash.
+  */
+ + (NSString*) pathWithComponents: (NSArray*)components;
+ 
+ /**
+  * Returns YES if the receiver represents an absolute path ...<br />
+  * Returns NO otherwise.<br />
+  * An absolute path in unix mode is one which begins
+  * with a slash or tilde.<br />
+  * In windows mode a drive specification (eg C:) followed by a slash or
+  * backslash, is an absolute path, as is any path beginning with a tilde.<br />
+  * In any mode a UNC path (//host/share...) is always absolute.<br />
+  * In the default gnustep path handling mode,
+  * the rules are the same as for windows,
+  * except that a path whose root is a slash denotes an absolute path
+  * when running on unix and a relative path when running under windows.
+  */
+ - (BOOL) isAbsolutePath;
+ 
+ /**
+  * Returns the path components of the receiver separated into an array.<br />
+  * If the receiver begins with a root sequence such as the path separator
+  * character (or a drive specification in windows) then that is used as the
+  * first element in the array.<br />
+  * Empty components are removed.<br />
+  * If a trailing path separator (which was not part of the root) was present,
+  * it is added as the last element in the array.
+  */
+ - (NSArray*) pathComponents;
+ 
+ /**
+  * Returns an array of strings made by appending the values in paths
+  * to the receiver.
+  */
+ - (NSArray*) stringsByAppendingPaths: (NSArray*)paths;
+ 
+ + (NSString*) localizedStringWithFormat: (NSString*)format, ...
+   NS_FORMAT_FUNCTION(1,2);
+ 
+ + (id) stringWithString: (NSString*)aString;
+ + (id) stringWithContentsOfURL: (NSURL*)url;
+ + (id) stringWithUTF8String: (const char*)bytes;
+ - (id) initWithFormat: (NSString*)format
+ 	       locale: (NSDictionary*)locale, ... NS_FORMAT_FUNCTION(1,3);
+ - (id) initWithFormat: (NSString*)format
+ 	       locale: (NSDictionary*)locale
+ 	    arguments: (va_list)argList NS_FORMAT_FUNCTION(1,0);
+ - (id) initWithUTF8String: (const char *)bytes;
+ - (id) initWithContentsOfURL: (NSURL*)url;
+ - (NSString*) substringWithRange: (NSRange)aRange;
+ - (NSComparisonResult) caseInsensitiveCompare: (NSString*)aString;
+ - (NSComparisonResult) compare: (NSString*)string 
+ 		       options: (NSUInteger)mask 
+ 			 range: (NSRange)compareRange 
+ 			locale: (id)locale;
+ - (NSComparisonResult) localizedCompare: (NSString *)string;
+ - (NSComparisonResult) localizedCaseInsensitiveCompare: (NSString *)string;
+ - (BOOL) writeToFile: (NSString*)filename
+ 	  atomically: (BOOL)useAuxiliaryFile;
+ - (BOOL) writeToURL: (NSURL*)url atomically: (BOOL)atomically;
+ - (double) doubleValue;
+ + (NSStringEncoding*) availableStringEncodings;
+ + (NSString*) localizedNameOfStringEncoding: (NSStringEncoding)encoding;
+ - (void) getLineStart: (NSUInteger *)startIndex
+                   end: (NSUInteger *)lineEndIndex
+           contentsEnd: (NSUInteger *)contentsEndIndex
+              forRange: (NSRange)aRange;
+ - (NSRange) lineRangeForRange: (NSRange)aRange;
+ - (const char*) lossyCString;
+ - (NSString*) stringByAddingPercentEscapesUsingEncoding: (NSStringEncoding)e;
+ - (NSString*) stringByPaddingToLength: (NSUInteger)newLength
+ 			   withString: (NSString*)padString
+ 		      startingAtIndex: (NSUInteger)padIndex;
+ - (NSString*) stringByReplacingPercentEscapesUsingEncoding: (NSStringEncoding)e;
+ - (NSString*) stringByTrimmingCharactersInSet: (NSCharacterSet*)aSet;
+ - (const char *)UTF8String;
+ #endif
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_9,GS_API_LATEST)
+ - (NSString *) stringByAddingPercentEncodingWithAllowedCharacters: (NSCharacterSet *)aSet;
+ - (NSString *) stringByRemovingPercentEncoding;
+ #endif
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_3,GS_API_LATEST) 
+ /** Not implemented */
+ - (void) getParagraphStart: (NSUInteger *)startIndex
+                        end: (NSUInteger *)parEndIndex
+                contentsEnd: (NSUInteger *)contentsEndIndex
+                  forRange: (NSRange)range;
+ /** Not implemented */
+  - (NSRange) paragraphRangeForRange: (NSRange)range;
+ #endif
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST) 
+ /**
+  * Returns YES when scanning the receiver's text from left to right
+  * finds an initial digit in the range 1-9 or a letter in the set
+  * ('Y', 'y', 'T', 't').<br />
+  * Any trailing characters are ignored.<br />
+  * Any leading whitespace or zeros or signs are also ignored.<br />
+  * Returns NO if the above conditions are not met.
+  */
+ - (BOOL) boolValue;
+ - (NSArray *) componentsSeparatedByCharactersInSet: (NSCharacterSet *)separator;
+ - (NSInteger) integerValue;
+ - (long long) longLongValue;
+ /** Not implemented */
+ - (NSRange) rangeOfComposedCharacterSequencesForRange: (NSRange)range;
+ /** Not implemented */
+ - (NSRange) rangeOfString: (NSString *)aString
+                   options: (NSStringCompareOptions)mask
+                     range: (NSRange)searchRange
+                    locale: (NSLocale *)locale;
+ 
+ #endif
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_10,GS_API_LATEST) 
+ 
+ /**
+   * Returns YES if the receiver contains string, otherwise, NO.
+   */
+ - (BOOL) containsString: (NSString *)string;
+ 
+ #endif
+ 
+ #if OS_API_VERSION(GS_API_NONE, GS_API_NONE)
+ + (Class) constantStringClass;
+ #endif	/* GS_API_NONE */
+ 
+ @end
+ 
+ @interface NSMutableString : NSString
+ 
+ // Creating Temporary Strings
+ + (id) string;
+ + (id) stringWithCharacters: (const unichar*)characters
+ 		     length: (NSUInteger)length;
+ + (id) stringWithCString: (const char*)byteString
+ 		  length: (NSUInteger)length;
+ + (id) stringWithCString: (const char*)byteString;
+ + (id) stringWithFormat: (NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
+ + (id) stringWithContentsOfFile: (NSString*)path;
+ + (NSMutableString*) stringWithCapacity: (NSUInteger)capacity;
+ 
+ // Initializing Newly Allocated Strings
+ - (id) initWithCapacity: (NSUInteger)capacity;
+ 
+ // Modify A String
+ - (void) appendFormat: (NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
+ - (void) appendString: (NSString*)aString;
+ - (void) deleteCharactersInRange: (NSRange)range;
+ - (void) insertString: (NSString*)aString atIndex: (NSUInteger)loc;
+ - (void) replaceCharactersInRange: (NSRange)range 
+ 		       withString: (NSString*)aString;
+ - (NSUInteger) replaceOccurrencesOfString: (NSString*)replace
+ 				 withString: (NSString*)by
+ 				    options: (NSUInteger)opts
+ 				      range: (NSRange)searchRange;
+ - (void) setString: (NSString*)aString;
+ 
+ @end
+ 
+ #ifdef __OBJC_GNUSTEP_RUNTIME_ABI__
+ #  if __OBJC_GNUSTEP_RUNTIME_ABI__ >= 20
+ #    define GNUSTEP_NEW_STRING_ABI
+ #  endif
+ #endif
+ 
+ /**
+  * <p>The NXConstantString class is used to hold constant 8-bit character
+  * string objects produced by the compiler where it sees @"..." in the
+  * source.  The compiler generates the instances of this class - which
+  * has three instance variables -</p>
+  * <list>
+  * <item>a pointer to the class (this is the sole ivar of NSObject)</item>
+  * <item>a pointer to the 8-bit data</item>
+  * <item>the length of the string</item>
+  * </list>
+  * <p>In older versions of the compiler, the isa variable is always set to
+  * the NXConstantString class.  In newer versions a compiler option was
+  * added for GNUstep, to permit the isa variable to be set to another
+  * class, and GNUstep uses this to avoid conflicts with the default
+  * implementation of NXConstantString in the ObjC runtime library (the
+  * preprocessor is used to change all occurrences of NXConstantString
+  * in the source code to NSConstantString).</p>
+  * <p>Since GNUstep will generally use the GNUstep extension to the
+  * compiler, you should never refer to the constant string class by
+  * name, but should use the [NSString+constantStringClass] method to
+  * get the actual class being used for constant strings.</p>
+  * What follows is a dummy declaration of the class to keep the compiler
+  * happy.
+  */
+ @interface NXConstantString : NSString
+ {
+ @public
+ #ifdef GNUSTEP_NEW_STRING_ABI
+   /**
+    * Flags.  The low 16 bits are reserved for the compiler, the top 16 for use
+    * by the Foundation Framework.  Currently only the low 2 bits are used, to
+    * indicate the encoding of the string, with the following values:
+    *
+    * 0. ASCII (UTF-8 using only 7-bit characters)
+    * 1. UTF-8
+    * 2. UTF-16
+    * 3. UTF-32
+    *
+    */
+   uint32_t flags;
+   /**
+    * The number of characters (UTF-16 code units) in the string.
+    */
+   uint32_t nxcslen;
+   /**
+    * The number of bytes in the string.  For fixed-length encodings, this is a
+    * fixed multiple of nxcslen, but for UTF-8 it can be different.
+    */
+   uint32_t size;
+   /**
+    * Hash value.
+    */
+   uint32_t hash;
+   /**
+    * Pointer to the byte data of the string.  Note that `char*` is the correct
+    * type only if the low two bits of the flags indicate that this is an ASCII
+    * or UTF-8 string, otherwise it is a pointer to 16- or 32-bit characters in
+    * native byte order.
+    */
+   const char * const nxcsptr;
+ #else
+   const char * const nxcsptr;
+   const unsigned int nxcslen;
+ #endif
+ }
+ @end
+ 
+ #ifdef NeXT_RUNTIME
+ /** For internal use with NeXT runtime;
+     needed, until Apple Radar 2870817 is fixed. */
+ extern struct objc_class _NSConstantStringClassReference;
+ #endif
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #if     !NO_GNUSTEP && !defined(GNUSTEP_BASE_INTERNAL)
+ #import "../GNUstepBase/NSString+GNUstepBase.h"
+ #import "../GNUstepBase/NSMutableString+GNUstepBase.h"
+ #endif
+ 
+ #endif /* __NSString_h_GNUSTEP_BASE_INCLUDE */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,370 ----
+ /* Interface for NSValue for GNUStep
+    Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+ 
+    Written by:  Adam Fedor <fedor@boulder.colorado.edu>
+    Created: 1995
+    
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+    
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+    */ 
+ 
+ #ifndef __NSValue_h_GNUSTEP_BASE_INCLUDE
+ #define __NSValue_h_GNUSTEP_BASE_INCLUDE
+ #import	"../GNUstepBase/GSVersionMacros.h"
+ 
+ #import	"NSObject.h"
+ #import	"NSGeometry.h"
+ #import	"NSRange.h"
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ @class NSString;
+ 
+ /**
+  * The <code>NSValue</code> class can wrap a single primitive value as an
+  * object so it can be used in the containers and other places where an object
+  * reference is needed. Once initialized, an <code>NSValue</code> is
+  * immutable, and there is no <code>NSMutableValue</code> class. You
+  * initialize it by giving it a pointer to the primitive value, and you should
+  * be careful this does not get freed until after the <code>NSValue</code> is
+  * no longer used.
+  */
+ @interface NSValue : NSObject <NSCopying, NSCoding>
+ 
+ // Allocating and Initializing 
+ 
+ /**
+  * Create new instance with specified value (a pointer) of given type, which
+  * is a string code obtainable through the compile-time operator
+  * <code>@encode(...)</code>.  For example:
+ <example>
+     NSValue *theValue = [NSValue value: &amp;n withObjCType: @encode(int)];
+ </example>
+  */
+ + (NSValue*) value: (const void*)value withObjCType: (const char*)type;
+ 
+ /**
+  * Create new instance holding anObject.  This is useful if you want to add
+  * anObject to a collection such as [NSArray] but don't want it to be retained
+  * (a weak reference).
+  */
+ + (NSValue*) valueWithNonretainedObject: (id)anObject;
+ 
+ /**
+  * Convenience method to create instance holding an <code>NSPoint</code>
+  * structure.
+  */
+ + (NSValue*) valueWithPoint: (NSPoint)point;
+ 
+ /**
+  * Convenience method to create instance holding a pointer.  Same as
+  * using <code>@encode(void *)</code> in +value:withObjCType: .
+  */
+ + (NSValue*) valueWithPointer: (const void*)pointer;
+ 
+ /**
+  * Convenience method to create instance holding an <code>NSRange</code>
+  * structure.
+  */
+ + (NSValue*) valueWithRange: (NSRange)range;
+ 
+ /**
+  * Convenience method to create instance holding an <code>NSRect</code>
+  * structure.
+  */
+ + (NSValue*) valueWithRect: (NSRect)rect;
+ 
+ /**
+  * Convenience method to create instance holding an <code>NSSize</code>
+  * structure.
+  */
+ + (NSValue*) valueWithSize: (NSSize)size;
+ 
+ #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ /**
+  * Synonym for value:withObjCType: .
+  */
+ + (NSValue*) valueWithBytes: (const void*)value objCType: (const char*)type;
+ 
+ /** <init/>
+  * Initialize with value of type, parallel to value:withObjCType: .
+  */
+ - (id) initWithBytes: (const void*)data objCType: (const char*)type;
+ 
+ /**
+  * Compares this instance to another <code>NSValue</code>.  For equality,
+  * both contents and declared type of the two values must match.
+  */
+ - (BOOL) isEqualToValue: (NSValue*)other;
+ #endif	/* GS_API_MACOSX */
+ 
+ // Accessing Data 
+ 
+ /**
+  * Copies bytes from the pointer receiver was initialized with into buffer
+  * pointed to by value.  Number of bytes copied is determined by the type.  If
+  * type was a void * pointer or object id, the memory address itself is
+  * copied.
+  */
+ - (void) getValue: (void*)value;
+ 
+ /**
+  * Returns the string <code>@encode(...)</code> compatible type the receiver
+  * was initialized with.
+  */
+ - (const char*) objCType;
+ 
+ /**
+  * If receiver was initialized with an object ID, return it, else raises
+  * <code>NSInternalInconsistencyException</code>.
+  */
+ - (id) nonretainedObjectValue;
+ 
+ /**
+  * If receiver was initialized with a void * pointer, return it, else raises
+  * <code>NSInternalInconsistencyException</code>.
+  */
+ - (void*) pointerValue;
+ 
+ /**
+  * If receiver was initialized with an <code>NSRange</code> value, return it,
+  * else raises <code>NSInternalInconsistencyException</code>.
+  */
+ - (NSRange) rangeValue;
+ 
+ /**
+  * If receiver was initialized with an <code>NSRect</code> value, return it,
+  * else raises <code>NSInternalInconsistencyException</code>.
+  */
+ - (NSRect) rectValue;
+ 
+ /**
+  * If receiver was initialized with an <code>NSSize</code> value, return it,
+  * else raises <code>NSInternalInconsistencyException</code>.
+  */
+ - (NSSize) sizeValue;
+ 
+ /**
+  * If receiver was initialized with an <code>NSPoint</code> value, return it,
+  * else raises <code>NSInternalInconsistencyException</code>.
+  */
+ - (NSPoint) pointValue;
+ 
+ @end
+ 
+ /**
+  * Subclass of [NSValue] offering convenience methods for initializing from
+  * and accessing as any C primitive numeric type.  On access, the value will
+  * be type-converted if necessary, using standard C conversion rules.
+  */
+ @interface NSNumber : NSValue <NSCopying,NSCoding>
+ 
+ // Allocating and Initializing
+ 
+ /** New instance from boolean value. */
+ + (NSNumber*) numberWithBool: (BOOL)value; 
+ /** New instance from signed char value. */
+ + (NSNumber*) numberWithChar: (signed char)value;
+ /** New instance from double value. */
+ + (NSNumber*) numberWithDouble: (double)value;
+ /** New instance from float value. */
+ + (NSNumber*) numberWithFloat: (float)value;
+ /** New instance from (signed) int value. */
+ + (NSNumber*) numberWithInt: (signed int)value;
+ /** New instance from (signed) long value. */
+ + (NSNumber*) numberWithLong: (signed long)value;
+ /** New instance from (signed) long long value. */
+ + (NSNumber*) numberWithLongLong: (signed long long)value;
+ /** New instance from (signed) short value. */
+ + (NSNumber*) numberWithShort: (signed short)value;
+ /** New instance from unsigned char value. */
+ + (NSNumber*) numberWithUnsignedChar: (unsigned char)value;
+ /** New instance from unsigned int value. */
+ + (NSNumber*) numberWithUnsignedInt: (unsigned int)value;
+ /** New instance from unsigned long value. */
+ + (NSNumber*) numberWithUnsignedLong: (unsigned long)value;
+ /** New instance from unsigned long long value. */
+ + (NSNumber*) numberWithUnsignedLongLong: (unsigned long long)value;
+ /** New instance from unsigned short value. */
+ + (NSNumber*) numberWithUnsignedShort: (unsigned short)value;
+ 
+ /** Initialize from boolean value. */
+ - (id) initWithBool: (BOOL)value;
+ /** Initialize from signed char value. */
+ - (id) initWithChar: (signed char)value;
+ /** Initialize from double value. */
+ - (id) initWithDouble: (double)value;
+ /** Initialize from float value. */
+ - (id) initWithFloat: (float)value;
+ /** Initialize from (signed) int value. */
+ - (id) initWithInt: (signed int)value;
+ /** Initialize from (signed) long value. */
+ - (id) initWithLong: (signed long)value;
+ /** Initialize from (signed) long long value. */
+ - (id) initWithLongLong: (signed long long)value;
+ /** Initialize from (signed) short value. */
+ - (id) initWithShort: (signed short)value;
+ /** Initialize from unsigned char value. */
+ - (id) initWithUnsignedChar: (unsigned char)value;
+ /** Initialize from unsigned int value. */
+ - (id) initWithUnsignedInt: (unsigned int)value;
+ /** Initialize from unsigned long value. */
+ - (id) initWithUnsignedLong: (unsigned long)value;
+ /** Initialize from unsigned long long value. */
+ - (id) initWithUnsignedLongLong: (unsigned long long)value;
+ /** Initialize from unsigned short value. */
+ - (id) initWithUnsignedShort: (unsigned short)value;
+ 
+ // Accessing Data 
+ 
+ /**
+  * Return value as a BOOL; this will in fact be a char value converted
+  * if necessary from type initialized with; if you wish to consider anything
+  * nonzero TRUE do not compare directly to YES, but use <code>'!= NO'</code>.
+  */
+ - (BOOL) boolValue;
+ /** Returns value as a signed char, converting if necessary. */
+ - (signed char) charValue;
+ /** Returns value as a double, converting if necessary. */
+ - (double) doubleValue;
+ /** Returns value as a float, converting if necessary. */
+ - (float) floatValue;
+ /** Returns value as a (signed) int, converting if necessary. */
+ - (signed int) intValue;
+ /** Returns value as a (signed) long, converting if necessary. */
+ - (signed long) longValue;
+ /** Returns value as a (signed) long long, converting if necessary. */
+ - (signed long long) longLongValue;
+ /** Returns value as a (signed) short, converting if necessary. */
+ - (signed short) shortValue;
+ /** Returns value as an unsigned char, converting if necessary. */
+ - (unsigned char) unsignedCharValue;
+ /** Returns value as an unsigned int, converting if necessary. */
+ - (unsigned int) unsignedIntValue;
+ /** Returns value as an unsigned long, converting if necessary. */
+ - (unsigned long) unsignedLongValue;
+ /** Returns value as an unsigned long long, converting if necessary. */
+ - (unsigned long long) unsignedLongLongValue;
+ /** Returns value as an unsigned short, converting if necessary. */
+ - (unsigned short) unsignedShortValue;
+ 
+ /** Returns -description . */
+ - (NSString*) stringValue;
+ 
+ /**
+  * Returns the string representation of this number using a non-localised
+  * conversion (decimal point is '.' irrespective of the locale).
+  */
+ - (NSString*) description;
+ 
+ /**
+  * <p>
+  *   Produces a string representation of the number.  For a boolean
+  *   this will be either 'true' or 'false'.  For other numbers the
+  *   format is produced using the initWithFormat:locale:... method
+  *   of NSString, and the format depends on the type of number as
+  *   follows -
+  * </p>
+  * <deflist>
+  *   <term>char</term>
+  *   <desc>%i</desc>
+  *   <term> short</term>
+  *   <desc>%hi</desc>
+  *   <term> int</term>
+  *   <desc>%i</desc>
+  *   <term> long</term>
+  *   <desc>%li</desc>
+  *   <term> long long</term>
+  *   <desc>%lli</desc>
+  *   <term> unsigned char</term>
+  *   <desc>%u</desc>
+  *   <term> unsigned short</term>
+  *   <desc>%hu</desc>
+  *   <term> unsigned int</term>
+  *   <desc>%u</desc>
+  *   <term> unsigned long</term>
+  *   <desc>%lu</desc>
+  *   <term> unsigned long long</term>
+  *   <desc>%llu</desc>
+  *   <term> float</term>
+  *   <desc>%0.7g</desc>
+  *   <term> double</term>
+  *   <desc>%0.16g</desc>
+  * </deflist>
+  */
+ - (NSString*) descriptionWithLocale: (id)locale;
+ 
+ /**
+  * Compares receiver with otherNumber, using C type conversion if necessary,
+  * and returns <code>NSOrderedAscending</code>,
+  * <code>NSOrderedDescending</code>, or <code>NSOrderedSame</code> depending
+  * on whether it is less than, greater than, or equal to otherNumber.
+  */
+ - (NSComparisonResult) compare: (NSNumber*)otherNumber;
+ 
+ /**
+  * Returns whether receiver and otherNumber represent the same numerical value.
+  */
+ - (BOOL) isEqualToNumber: (NSNumber*)otherNumber;
+ 
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
+ /** Return a number intialised with NSInteger.
+  */
+ + (NSNumber*) numberWithInteger: (NSInteger)value;
+ /** Return a number intialised with NSUInteger.
+  */
+ + (NSNumber*) numberWithUnsignedInteger: (NSUInteger)value;
+ /** Initialise the receiver with NSInteger content.
+  */
+ - (id) initWithInteger: (NSInteger)value;
+ /** Initialise the receiver with NSUInteger content.
+  */
+ - (id) initWithUnsignedInteger: (NSUInteger)value;
+ /** Return the contents of the receiver as NSInteger.
+  */
+ - (NSInteger) integerValue;
+ /** Return the contents of the receiver as NSUInteger.
+  */
+ - (NSUInteger) unsignedIntegerValue;
+ #endif
+ 
+ @end
+ 
+ #if OS_API_VERSION(GS_API_NONE, GS_API_NONE)
+ 
+ /** Note: Defines a method that is not in the OpenStep spec, but makes
+     subclassing easier. */
+ @interface NSValue (Subclassing)
+ 
+ /** Used by value: withObjCType: to determine the concrete subclass to alloc. */
+ + (Class) valueClassWithObjCType: (const char*)type;
+ 
+ @end
+ #endif
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #if     !NO_GNUSTEP && !defined(GNUSTEP_BASE_INTERNAL)
+ #import "../GNUstepBase/NSNumber+GNUstepBase.h"
+ #endif
+ 
+ #endif /* __NSValue_h_GNUSTEP_BASE_INCLUDE */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,335 ----
+ /** Zone memory management. -*- Mode: ObjC -*-
+    Copyright (C) 1997,1998,1999 Free Software Foundation, Inc.
+ 
+    Written by: Yoo C. Chung <wacko@laplace.snu.ac.kr>
+    Date: January 1997
+ 
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+ 
+     AutogsdocSource:	NSZone.m
+     AutogsdocSource:	NSPage.m
+ 
+    */
+ 
+ #ifndef __NSZone_h_GNUSTEP_BASE_INCLUDE
+ #define __NSZone_h_GNUSTEP_BASE_INCLUDE
+ #import	"../GNUstepBase/GSVersionMacros.h"
+ 
+ /**
+  * Primary structure representing an <code>NSZone</code>.  Technically it
+  * consists of a set of function pointers for zone upkeep functions plus some
+  * other things-
+ <example>
+ {
+   // Functions for zone.
+   void *(*malloc)(struct _NSZone *zone, size_t size);
+   void *(*realloc)(struct _NSZone *zone, void *ptr, size_t size);
+   void (*free)(struct _NSZone *zone, void *ptr);
+   void (*recycle)(struct _NSZone *zone);
+   BOOL (*check)(struct _NSZone *zone);
+   BOOL (*lookup)(struct _NSZone *zone, void *ptr);
+ 
+   // Zone statistics (not always maintained).
+   struct NSZoneStats (*stats)(struct _NSZone *zone);
+   
+   size_t gran;    // Zone granularity (passed in on initialization)
+   NSString *name; // Name of zone (default is 'nil')
+   NSZone *next;   // Pointer used for internal management of multiple zones.
+ }</example>
+  */
+ typedef struct _NSZone NSZone;
+ 
+ #import	"NSObjCRuntime.h"
+ 
+ @class NSString;
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ struct _NSZone
+ {
+   /* Functions for zone. */
+   void *(*malloc)(struct _NSZone *zone, size_t size);
+   void *(*realloc)(struct _NSZone *zone, void *ptr, size_t size);
+   void (*free)(struct _NSZone *zone, void *ptr);
+   void (*recycle)(struct _NSZone *zone);
+   BOOL (*check)(struct _NSZone *zone);
+   BOOL (*lookup)(struct _NSZone *zone, void *ptr);
+   struct NSZoneStats (*stats)(struct _NSZone *zone);
+   
+   size_t gran; // Zone granularity
+   __unsafe_unretained NSString *name; // Name of zone (default is 'nil')
+   NSZone *next;
+ };
+ 
+ /**
+  * Creates a new zone of start bytes, which will grow and shrink by
+  * granularity bytes.  If canFree is 0, memory in zone is allocated but
+  * never freed, meaning allocation will be very fast.  The whole zone can
+  * still be freed with NSRecycleZone(), and you should still call NSZoneFree
+  * on memory in the zone that is no longer needed, since a count of allocated
+  * pointers is kept and must reach zero before freeing the zone.<br />
+  * If Garbage Collection is enabled, this function does nothing other than
+  * log a warning and return the same value as the NSDefaultMallocZone()
+  * function.
+  */
+ GS_EXPORT NSZone*
+ NSCreateZone (NSUInteger start, NSUInteger gran, BOOL canFree);
+ 
+ /** Returns the default zone for memory allocation.  Memory created in this
+  * zone is the same as memory allocates using the system malloc() function.
+  */
+ GS_EXPORT NSZone*
+ NSDefaultMallocZone (void);
+ 
+ /**
+  * Searches and finds the zone ptr was allocated from.  The speed depends
+  * upon the number of zones and their size.<br />
+  * If Garbage Collection is enabled, this function always returns the
+  * same as the NSDefaultMallocZone() function.
+  */
+ GS_EXPORT NSZone*
+ NSZoneFromPointer (void *ptr);
+ 
+ /**
+  * Allocates and returns memory for elems items of size bytes, in the
+  * given zone.  Returns NULL if allocation of size 0 requested.  Raises
+  * <code>NSMallocException</code> if not enough free memory in zone to
+  * allocate and no more can be obtained from system, unless using the
+  * default zone, in which case NULL is returned.<br />
+  * If Garbage Collection is enabled, this function always allocates
+  * non-scanned, non-collectable memory in the NSDefaultMallocZone() and
+  * the zone argument is ignored.
+  */
+ GS_EXPORT void*
+ NSZoneMalloc (NSZone *zone, NSUInteger size);
+ 
+ /**
+  * Allocates and returns cleared memory for elems items of size bytes, in the
+  * given zone.  Returns NULL if allocation of size 0 requested.  Raises
+  * <code>NSMallocException</code> if not enough free memory in zone to
+  * allocate and no more can be obtained from system, unless using the
+  * default zone, in which case NULL is returned.<br />
+  * If Garbage Collection is enabled, this function always allocates
+  * non-scanned, non-collectable memory in the NSDefaultMallocZone() and
+  * the zone argument is ignored.
+  */
+ GS_EXPORT void*
+ NSZoneCalloc (NSZone *zone, NSUInteger elems, NSUInteger bytes);
+ 
+ /**
+  * Reallocates the chunk of memory in zone pointed to by ptr to a new one of
+  * size bytes.  Existing contents in ptr are copied over.  Raises an
+  * <code>NSMallocException</code> if insufficient memory is available in the
+  * zone and no more memory can be obtained from the system, unless using the
+  * default zone, in which case NULL is returned.<br />
+  * If Garbage Collection is enabled, the zone argument is ignored.
+  */
+ GS_EXPORT void*
+ NSZoneRealloc (NSZone *zone, void *ptr, NSUInteger size);
+ 
+ /**
+  * Return memory for an entire zone to system.  In fact, this will not be done
+  * unless all memory in the zone has been explicitly freed (by calls to
+  * NSZoneFree()).  For "non-freeable" zones, the number of NSZoneFree() calls
+  * must simply equal the number of allocation calls.  The default zone, on the
+  * other hand, cannot be recycled.<br />
+  * If Garbage Collection is enabled, this function has not effect.
+  */
+ GS_EXPORT void
+ NSRecycleZone (NSZone *zone);
+ 
+ /**
+  * Frees memory pointed to by ptr (which should have been allocated by a
+  * previous call to NSZoneMalloc(), NSZoneCalloc(), or NSZoneRealloc()) and
+  * returns it to zone.  Note, if this is a nonfreeable zone, the memory is
+  * not actually freed, but the count of number of free()s is updated.<br />
+  * If Garbage Collection is enabled, the zone argument is ignored and this
+  * function causes ptr to be deallocated immediately.
+  */
+ GS_EXPORT void
+ NSZoneFree (NSZone *zone, void *ptr);
+ 
+ /**
+  * Sets name of the given zone (useful for debugging and logging).
+  */
+ GS_EXPORT void
+ NSSetZoneName (NSZone *zone, NSString *name);
+ 
+ /**
+  * Returns the name of the given zone (useful for debugging and logging).
+  */
+ GS_EXPORT NSString*
+ NSZoneName (NSZone *zone);
+ 
+ #if OS_API_VERSION(GS_API_NONE, GS_API_NONE)
+ 
+ /** Deprecated ...<br />
+  * Checks integrity of a zone.  Not defined by OpenStep or OS X.
+  */
+ BOOL
+ NSZoneCheck (NSZone *zone);
+ 
+ /**
+  *  <code>NSZoneStats</code> is the structure returned by the NSZoneStats()
+  *  function that summarizes the current usage of a zone.  It is similar to
+  *  the structure <em>mstats</em> in the GNU C library.  It has 5 fields of
+  *  type <code>size_t</code>-
+  *  <deflist>
+  *    <term><code>bytes_total</code></term>
+  *    <desc>
+  *    This is the total size of memory managed by the zone, in bytes.</desc>
+  *    <term><code>chunks_used</code></term>
+  *    <desc>This is the number of memory chunks in use in the zone.</desc>
+  *    <term><code>bytes_used</code></term>
+  *    <desc>This is the number of bytes in use.</desc>
+  *    <term><code>chunks_free</code></term>
+  *    <desc>This is the number of memory chunks that are not in use.</desc>
+  *    <term><code>bytes_free</code></term>
+  *    <desc>
+  *    This is the number of bytes managed by the zone that are not in use.
+  *    </desc>
+  *  </deflist>
+  */
+ struct NSZoneStats
+ {
+   size_t bytes_total;
+   size_t chunks_used;
+   size_t bytes_used;
+   size_t chunks_free;
+   size_t bytes_free;
+ };
+ 
+ /** Deprecated ...<br />
+  *  Obtain statistics about the zone.  Implementation emphasis is on
+  *  correctness, not speed.  Not defined by OpenStep or OS X.
+  */
+ struct NSZoneStats
+ NSZoneStats (NSZone *zone);
+ 
+ /**
+  * Try to get more memory - the normal process has failed.
+  * If we can't do anything, just return a null pointer.
+  * Try to do some logging if possible.
+  */
+ void*
+ GSOutOfMemory(NSUInteger size, BOOL retry);
+ 
+ /**
+  * Called during +initialize to tell the class that instances created
+  * in future should have the specified instance variable as a weak
+  * pointer for garbage collection.<br />
+  * NB. making a pointer weak does not mean that it is automatically
+  * zeroed when the object it points to is garbage collected. To get that
+  * behavior you must asign values to the pointer using the
+  * GSAssignZeroingWeakPointer() function.<br />
+  * This function has no effect if the system is
+  * not built for garbage collection.
+  */
+ GS_EXPORT void
+ GSMakeWeakPointer(Class theClass, const char *iVarName);
+ 
+ /**
+  * This function must be used to assign a value to a zeroing weak pointer.<br />
+  * A zeroing weak pointer is one where, when the garbage collector collects
+  * the object pointed to, it also clears the weak pointer.<br />
+  * Assigning zero (nil) will always succeed and has the effect of telling the
+  * garbage collector that it no longer needs to track the previously assigned
+  * object.  Apart from that case, a source needs to be garbage collectable for
+  * this function to work, and using a non-garbage collectable value will
+  * cause the function to return NO.<br />
+  * If the destination object (the weak pointer watching the source object)
+  * belongs to a chunk of memory which may be collected before the source
+  * object is collected, it is important that it is finalised and the
+  * finalisation code assigns zero to the pointer.<br />
+  * If garbage collection is not in use, this function performs a simple
+  * assignment returning YES, unless destination is null in which case it
+  * returns NO.
+  */
+ GS_EXPORT BOOL
+ GSAssignZeroingWeakPointer(void **destination, void *source);
+ 
+ #endif
+ 
+ GS_EXPORT NSUInteger
+ NSPageSize (void) __attribute__ ((const));
+ 
+ GS_EXPORT NSUInteger
+ NSLogPageSize (void) __attribute__ ((const));
+ 
+ GS_EXPORT NSUInteger
+ NSRoundDownToMultipleOfPageSize (NSUInteger bytes) __attribute__ ((const));
+ 
+ GS_EXPORT NSUInteger
+ NSRoundUpToMultipleOfPageSize (NSUInteger bytes) __attribute__ ((const));
+ 
+ GS_EXPORT NSUInteger
+ NSRealMemoryAvailable (void);
+ 
+ GS_EXPORT void*
+ NSAllocateMemoryPages (NSUInteger bytes);
+ 
+ GS_EXPORT void
+ NSDeallocateMemoryPages (void *ptr, NSUInteger bytes);
+ 
+ GS_EXPORT void
+ NSCopyMemoryPages (const void *src, void *dest, NSUInteger bytes);
+ 
+ #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, OS_API_LATEST)
+ 
+ enum {
+   NSScannedOption = (1<<0),
+   NSCollectorDisabledOption = (1<<1)
+ };
+ 
+ /** Allocate memory.  If garbage collection is not enabled this uses the
+  * default malloc zone and the options are ignored.<br />
+  * If garbage collection is enabled, the allocate memory is normally not
+  * scanned for pointers but is itsself garbage collectable.  The options
+  * argument is a bitmask in which NSScannedOption sets the memory to be
+  * scanned for pointers by the garbage collector, and
+  * NSCollectorDisabledOption causes the memory to be excempt from being
+  * garbage collected itsself.<br />
+  * In any case the memory returned is zero'ed.
+  */
+ GS_EXPORT void *
+ NSAllocateCollectable(NSUInteger size, NSUInteger options);
+ 
+ /** Reallocate memory to be of a different size and/or to have different
+  * options settings.  The behavior of options is as for
+  * the NSAllocateCollectable() function.
+  */ 
+ GS_EXPORT void *
+ NSReallocateCollectable(void *ptr, NSUInteger size, NSUInteger options);
+ 
+ #endif
+ 
+ static inline id NSMakeCollectable(const void *cf) {
+ #if __has_feature(objc_arc)
+     return nil;
+ #else
+     return (id)cf; // Unimplemented; garbage collection is deprecated.
+ #endif
+ }
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #endif /* not __NSZone_h_GNUSTEP_BASE_INCLUDE */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,418 ----
+ /* GNUstep.h - macros to make easier to port gnustep apps to macos-x
+    Copyright (C) 2001 Free Software Foundation, Inc.
+ 
+    Written by: Nicola Pero <n.pero@mi.flashnet.it>
+    Date: March, October 2001
+    
+    This file is part of GNUstep.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+    
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02110-1301, USA.
+ */ 
+ 
+ #ifndef __GNUSTEP_GNUSTEP_H_INCLUDED_
+ #define __GNUSTEP_GNUSTEP_H_INCLUDED_
+ 
+ /* The contents of this file are designed to be usable with either
+  * GNUstep-base or MacOS-X Foundation.
+  */
+ 
+ #ifndef __has_feature
+ #  define __has_feature(x) 0
+ #endif
+ 
+ /*
+  * __has_extension has slightly different semantics from __has_feature.
+  * It evaluates to true if the feature is supported by by clang for the
+  * current compilation unit (language and -f switches), regardless of 
+  * whether it is part of the language standard or just a (non-standard)
+  * extension.
+  */
+ #ifndef __has_extension
+ #  define __has_extension(x) __has_feature(x)
+ #endif
+ 
+ /*
+  * __has_attribute is the equivalent to __has_feature and __has_extension
+  * for GNU-style attributes.
+  */
+ #ifndef __has_attribute
+ #  define __has_attribute(x) 0
+ #endif
+ 
+ #if	__has_feature(objc_arc)
+ 
+ #ifndef	RETAIN
+ #define	RETAIN(object)		        (object)
+ #endif
+ #ifndef	RELEASE
+ #define	RELEASE(object)		
+ #endif
+ #ifndef	AUTORELEASE
+ #define	AUTORELEASE(object)	        (object)
+ #endif
+ 
+ #ifndef	TEST_RETAIN
+ #define	TEST_RETAIN(object)	        (object)
+ #endif
+ #ifndef	TEST_RELEASE
+ #define	TEST_RELEASE(object)
+ #endif
+ #ifndef	TEST_AUTORELEASE
+ #define	TEST_AUTORELEASE(object)	(object)
+ #endif
+ 
+ #ifndef	ASSIGN
+ #define	ASSIGN(object,value)	        object = (value)
+ #endif
+ #ifndef	ASSIGNCOPY
+ #define	ASSIGNCOPY(object,value)	object = [(value) copy]
+ #endif
+ #ifndef	DESTROY
+ #define	DESTROY(object) 	        object = nil
+ #endif
+ 
+ #define	IF_NO_GC(X)	
+ 
+ #ifndef ENTER_POOL
+ #define ENTER_POOL                      @autoreleasepool{do{
+ #endif
+ 
+ #ifndef LEAVE_POOL
+ #define LEAVE_POOL                      }while(0);}
+ #endif
+ 
+ #ifndef DEALLOC
+ #define DEALLOC
+ #endif
+ 
+ #else
+ 
+ #ifndef	RETAIN
+ /**
+  *	Basic retain operation ... calls [NSObject-retain]<br />
+  *	Deprecated ... pointless on modern processors.
+  *	Simply call the -retain method.
+  */
+ #define	RETAIN(object)		[(object) retain]
+ #endif
+ 
+ #ifndef	RELEASE
+ /**
+  *	Basic release operation ... calls [NSObject-release]<br />
+  *	Deprecated ... pointless on modern processors.
+  *	Simply call the -release method.
+  */
+ #define	RELEASE(object)		[(object) release]
+ #endif
+ 
+ #ifndef	AUTORELEASE
+ /**
+  *	Basic autorelease operation ... calls [NSObject-autorelease]<br />
+  *	Deprecated ... pointless on modern processors.
+  *	Simply call the -autorelease method.
+  */
+ #define	AUTORELEASE(object)	[(object) autorelease]
+ #endif
+ 
+ #ifndef	TEST_RETAIN
+ /**
+  *	Tested retain - only invoke the
+  *	objective-c method if the receiver is not nil.<br />
+  *	Deprecated ... pointless on modern processors.
+  *	Simply call the -retain method.
+  */
+ #define	TEST_RETAIN(object)	({\
+ id __object = (object); (__object != nil) ? [__object retain] : nil; })
+ #endif
+ 
+ #ifndef	TEST_RELEASE
+ /**
+  *	Tested release - only invoke the
+  *	objective-c method if the receiver is not nil.<br />
+  *	Deprecated ... pointless on modern processors.
+  *	Simply call the -release method.
+  */
+ #define	TEST_RELEASE(object)	({\
+ id __object = (object); if (__object != nil) [__object release]; })
+ #endif
+ 
+ #ifndef	TEST_AUTORELEASE
+ /**
+  *	Tested autorelease - only invoke the
+  *	objective-c method if the receiver is not nil.<br />
+  *	Deprecated ... pointless on modern processors.
+  *	Simply call the -autorelease method.
+  */
+ #define	TEST_AUTORELEASE(object)	({\
+ id __object = (object); (__object != nil) ? [__object autorelease] : nil; })
+ #endif
+ 
+ #ifndef	ASSIGN
+ /**
+  *	ASSIGN(object,value) assigns the value to the object with
+  *	appropriate retain and release operations.<br />
+  *	Use this to avoid retain/release errors.
+  */
+ #define	ASSIGN(object,value)	({\
+   id __object = object; \
+   object = [(value) retain]; \
+   [__object release]; \
+ })
+ #endif
+ 
+ #ifndef	ASSIGNCOPY
+ /**
+  *	ASSIGNCOPY(object,value) assigns a copy of the value to the object
+  *	with release of the original.<br />
+  *	Use this to avoid retain/release errors.
+  */
+ #define	ASSIGNCOPY(object,value)	({\
+   id __object = object; \
+   object = [(value) copy];\
+   [__object release]; \
+ })
+ #endif
+ 
+ #ifndef	DESTROY
+ /**
+  *	DESTROY() is a release operation which also sets the variable to be
+  *	a nil pointer for tidiness - we can't accidentally use a DESTROYED
+  *	object later.  It also makes sure to set the variable to nil before
+  *	releasing the object - to avoid side-effects of the release trying
+  *	to reference the object being released through the variable.
+  */
+ #define	DESTROY(object) 	({ \
+   id __o = object; \
+   object = nil; \
+   [__o release]; \
+ })
+ #endif
+ 
+ #define	IF_NO_GC(X)	X
+ 
+ #ifndef ENTER_POOL
+ /**
+  *	ENTER_POOL creates an autorelease pool and places subsequent code
+  *	in a do/while loop (executed only once) which can be broken out of
+  *	to reach the point when the pool is drained.<br />
+  *	The block must be terminated with a corresponding LEAVE_POOL.<br />
+  *	You should not return from such a block of code (to do so could
+  *	leak an autorelease pool and give objects a longer lifetime than
+  *	they ought to have.  If you wish to leave the block of code early,
+  *	you may do so using a 'break' statement.
+  */
+ #define ENTER_POOL      {NSAutoreleasePool *_lARP=[NSAutoreleasePool new];do{
+ #endif
+ 
+ #ifndef LEAVE_POOL
+ /**
+  *	LEAVE_POOL terminates a block of code started with ENTER_POOL.
+  */
+ #define LEAVE_POOL      }while(0);[_lARP drain];}
+ #endif
+ 
+ #ifndef DEALLOC
+ /**
+  *	DEALLOC calls the superclass implementation of dealloc, unless
+  *	ARC is in use (in which case it does nothing).
+  */
+ #define DEALLOC         [super dealloc];
+ #endif
+ #endif
+ 
+ #ifndef	CREATE_AUTORELEASE_POOL
+ /** DEPRECATED ... use ENTER_POOL and LEAVE_POOL
+  */
+ #define	CREATE_AUTORELEASE_POOL(X)	\
+   NSAutoreleasePool *X = [NSAutoreleasePool new]
+ #endif
+ 
+ #ifndef RECREATE_AUTORELEASE_POOL
+ /** DEPRECATED ... use ENTER_POOL and LEAVE_POOL
+  */
+ #define RECREATE_AUTORELEASE_POOL(X)  \
+   DESTROY(X);\
+   X = [NSAutoreleasePool new]
+ #endif
+ 
+ 
+ /**
+  * <p>
+  *   This function (macro) is a GNUstep extension.
+  * </p>
+  * <p>
+  *   <code>_(@"My string to translate")</code>
+  * </p>
+  * <p>
+  *   is basically equivalent to
+  * </p>
+  * <p>
+  *   <code>NSLocalizedString(@"My string to translate", @"")</code>
+  * </p>
+  * <p>
+  * It is useful when you need to translate an application
+  * very quickly, as you just need to enclose all strings
+  * inside <code>_()</code>.  But please note that when you
+  * use this macro, you are not taking advantage of comments
+  * for the translator, so consider using
+  * <code>NSLocalizedString</code> instead when you need a
+  * comment.
+  * </p>
+  * <p>You may define GS_LOCALISATION_BUNDLE_ID to the bundle identifier
+  * of the bundle which is to provide the localisation information.<br />
+  * This can be used when compiling a single file by specifying something like
+  * '-D GS_LOCALISATION_BUNDLE_ID=$(FRAMEWORK_NAME)' in your make file.<br />
+  * If this is not defined, the localisation is provided by your application's
+  * main bundle exactly like the NSLocalizedString function.
+  * </p>
+  * <p>Alternatively you may define GS_LOCALISATION_BUNDLE to be the bundle
+  * to be used to prvide the localisation information.
+  * </p>
+  */
+ # define _(X) \
+   [GS_LOCALISATION_BUNDLE localizedStringForKey: (X) value: @"" table: nil]
+ 
+ #if	!defined(GS_LOCALISATION_BUNDLE)
+ # if	defined(GS_LOCALISATION_BUNDLE_ID)
+ #   define	GS_LOCALISATION_BUNDLE	[NSBundle bundleWithIdentifier: \
+   GS_LOCALISATION_BUNDLE_ID]
+ # else
+ #   define	GS_LOCALISATION_BUNDLE	[NSBundle mainBundle]
+ # endif
+ #endif
+ 
+ 
+  
+ /**
+  * <p>
+  *   This function (macro) is a GNUstep extension.
+  * </p>
+  * <p>
+  *   <code>__(@"My string to translate")</code>
+  * </p>
+  * <p>
+  *   is exactly the same as
+  * </p>
+  * <p>
+  *   <code>GSLocalizedStaticString(@"My string to translate", @"")</code>
+  * </p>
+  * <p>
+  *   It is useful when you need to translate an application very
+  *   quickly.  You would use it as follows for static strings:
+  * </p>
+  * <p>
+  *  <code>
+  *    NSString *message = __(@"Hello there");
+  *    ... more code ...
+  *    NSLog (_(messages));
+  *  </code>
+  * </p>
+  * <p>
+  *   But please note that when you use this macro, you are not
+  *   taking advantage of comments for the translator, so
+  *   consider using <code>GSLocalizedStaticString</code>
+  *   instead when you need a comment.
+  * </p>
+  */
+ #define __(X) X
+ 
+ /* The better way for a static string, with a comment - use as follows -
+  *
+  * static NSString *string = GSLocalizedStaticString (@"New Game",
+  *                                                    @"Menu Option");
+  *
+  * NSLog (_(string));
+  *
+  * If you need anything more complicated than this, please initialize
+  * the static strings manually.
+  */
+ 
+ /**
+  * <p>
+  *   This function (macro) is a GNUstep extensions, and it is used
+  *   to localize static strings.  Here is an example of a static
+  *   string:
+  * </p>
+  * <p>
+  *   <code>
+  *     NSString *message = @"Hi there";
+  *     ... some code ...
+  *     NSLog (message);
+  *  </code>
+  * </p>
+  * <p>
+  *   This string can not be localized using the standard
+  *   openstep functions/macros.  By using this gnustep extension,
+  *   you can localize it as follows:
+  * </p>
+  * <p>
+  *   <code>
+  *     NSString *message = GSLocalizedStaticString (@"Hi there",
+  *       @"Greeting");
+  * 
+  *     ... some code ...
+  * 
+  *     NSLog (NSLocalizedString (message, @""));
+  *  </code>
+  * </p>
+  * <p>
+  *   When the tools generate the
+  *   <code>Localizable.strings</code> file from the source
+  *   code, they will ignore the <code>NSLocalizedString</code>
+  *   call while they will extract the string (and the comment)
+  *   to localize from the <code>GSLocalizedStaticString</code>
+  *   call.
+  * </p>
+  * <p>
+  *   When the code is compiled, instead, the
+  *   <code>GSLocalizedStaticString</code> call is ignored (discarded,
+  *   it is a macro which simply expands to <code>key</code>), while
+  *   the <code>NSLocalizedString</code> will actually look up the
+  *   string for translation in the <code>Localizable.strings</code>
+  *   file.
+  * </p>
+  * <p>
+  *   Please note that there is currently no macro/function to
+  *   localize static strings using different tables.  If you
+  *   need that functionality, you have either to prepare the
+  *   localization tables by hand, or to rewrite your code in
+  *   such a way as not to use static strings.
+  * </p>
+  */
+ #define GSLocalizedStaticString(key, comment) key
+ 
+ /**
+  * To be used inside a method for making sure that a range does not specify
+  * anything outside the size of an array/string.  Raises exception if range
+  * extends beyond [0,size]. Size must be an unsigned integer (NSUInteger).
+  */
+ #define GS_RANGE_CHECK(RANGE, SIZE) \
+   if (RANGE.location > (NSUInteger)SIZE \
+     || RANGE.length > ((NSUInteger)SIZE - RANGE.location)) \
+     [NSException raise: NSRangeException format: @"in %s, range { %"\
+       PRIuPTR ", %" PRIuPTR " } extends beyond size (%" PRIuPTR ")", \
+       GSNameFromSelector(_cmd), RANGE.location, RANGE.length, (NSUInteger)SIZE]
+ 
+ /** Checks whether INDEX is strictly less than OVER (within C array space).
+  * INDEX and OVER must be unsigned integers (NSUInteger).
+  */
+ #define CHECK_INDEX_RANGE_ERROR(INDEX, OVER) \
+ if ((NSUInteger)INDEX >= (NSUInteger)OVER) \
+   [NSException raise: NSRangeException \
+     format: @"in %s, index %" PRIuPTR " is out of range", \
+     GSNameFromSelector(_cmd), (NSUInteger)INDEX]
+ 
+ #endif /* __GNUSTEP_GNUSTEP_H_INCLUDED_ */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,145 ----
+ /** Definitions for block support for GNUStep
+    Copyright (C) 2011 Free Software Foundation, Inc.
+ 
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+ 
+    */
+ 
+ #ifndef __GSBlocks_h_GNUSTEP_BASE_INCLUDE
+ #define __GSBlocks_h_GNUSTEP_BASE_INCLUDE
+ 
+ /* Define the has_feature pseudo-macro for GCC. */
+ #ifndef __has_feature
+ #define __has_feature(x) 0
+ #endif
+ 
+ #ifndef GCC_VERSION
+ #define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__)
+ #endif
+ 
+ #if __has_feature(blocks)
+ 
+ #define BLOCK_SCOPE __block
+ /**
+  * Defines a block type.  Will work whether or not the compiler natively
+  * supports blocks.
+  */
+ #define DEFINE_BLOCK_TYPE(name, retTy, argTys, ...) \
+ typedef retTy(^name)(argTys, ## __VA_ARGS__)
+ 
+ #define DEFINE_BLOCK_TYPE_NO_ARGS(name, retTy) \
+ typedef retTy(^name)()
+ 
+ /**
+  * Calls a block.  Works irrespective of whether the compiler supports blocks.
+  */
+ #define CALL_BLOCK(block, args, ...) block(args, ## __VA_ARGS__)
+ 
+ /**
+  * Calls a block without arguments.
+  */
+ #define CALL_BLOCK_NO_ARGS(block) block()
+ #else
+ 
+ /* Fall-back versions for when the compiler doesn't have native blocks support.
+  */
+ #if (GCC_VERSION >= 3000)
+ 
+ #define DEFINE_BLOCK_TYPE(name, retTy, argTys, ...) \
+   typedef struct {\
+     void *isa;\
+     int flags;\
+     int reserved;\
+     retTy (*invoke)(void*, argTys, ## __VA_ARGS__);\
+   } *name
+ 
+ #define DEFINE_BLOCK_TYPE_NO_ARGS(name, retTy) \
+   typedef struct {\
+     void *isa;\
+     int flags;\
+     int reserved;\
+     retTy (*invoke)(void*);\
+   } *name
+ 
+ #define CALL_BLOCK(block, args, ...) block->invoke(block, args, ## __VA_ARGS__)
+ 
+ #define CALL_BLOCK_NO_ARGS(block) block->invoke(block)
+ #define BLOCK_SCOPE
+ 
+ #else /* GCC_VERSION >= 3000 */
+ 
+ #define DEFINE_BLOCK_TYPE(name, retTy, argTys...) \
+   typedef struct {\
+     void *isa;\
+     int flags;\
+     int reserved;\
+     retTy (*invoke)(void*, argTys);\
+   } *name
+ 
+ #define DEFINE_BLOCK_TYPE_NO_ARGS(name, retTy) \
+   typedef struct {\
+     void *isa;\
+     int flags;\
+     int reserved;\
+     retTy (*invoke)(void*);\
+   } *name
+ 
+ 
+ #define CALL_BLOCK(block, args...) block->invoke(block, args)
+ #define CALL_BLOCK_NO_ARGS(block) block->invoke(block)
+ #define BLOCK_SCOPE
+ #endif /* GCC_VERSION >= 3000 */
+ 
+ #endif /* __has_feature(blocks) */
+ 
+ #if __has_include(<objc/blocks_runtime.h>)
+ #  include <objc/blocks_runtime.h>
+ #else
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ /**
+  * _Block_copy and _Block_release are weakly imported, but can be assumed
+  * to be available whenever a feature using blocks is accessed
+  * by an application.
+  */
+ 
+ /* weak attributed supported only with ELF, MINGW is COFF */
+ #ifndef __MINGW32__
+ 
+ void *_Block_copy(const void *) __attribute__((weak));
+ void _Block_release(const void *) __attribute__((weak));
+ 
+ #endif /* __MINGW32__ */
+ 
+ #ifdef __cplusplus
+ }
+ #endif
+ 
+ #ifndef Block_copy
+ #  define Block_copy(x) ((__typeof(x))_Block_copy((const void *)(x)))
+ #endif
+ #ifndef Block_release
+ #  define Block_release(x) _Block_release((const void *)(x))
+ #endif
+ 
+ #endif /* __has_include(<objc/blocks_runtime.h>) */
+ #endif /* __GSBlocks_h_GNUSTEP_BASE_INCLUDE */
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,462 ----
+ /* Machine/OS specific configuration information for GNUstep
+ 
+    Please NOTE - GSConfig.h is generated by the configure script from the
+    file GSConfig.h.in - changes/fixes need to be made to the original file,
+    not to the GSConfig.h generated from it.
+ 
+    Copyright (C) 1998-2010 Free Software Foundation, Inc.
+ 
+    Written by:  Richard frith-Macdonald <richard@brainstorm.co.uk>
+ 
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+    */
+ 
+ #ifndef	included_GSConfig_h
+ #define	included_GSConfig_h
+ 
+ /* Check the compiler to see if we are building on/for ms-windows.
+  * Whatever the compiler uses, we want a standard setting of _WIN64
+  * to indicate 64bit AND _WIN32 to indicate ms-windows.
+  * These are defined by gcc, clang, and microsoft compilers anyway.
+  */
+ #if     defined(__WIN32__) \
+ 	|| defined(__MS_WIN32__) \
+ 	|| defined(__MINGW32__)
+ #  if	!defined(_WIN32)
+ #    define _WIN32
+ #  endif
+ #endif
+ #if     defined(__WIN64__) \
+ 	|| defined(__MS_WIN64__) \
+ 	|| defined(__MINGW64__)
+ #  if	!defined(__WIN64__)
+ #    define __WIN64__
+ #  endif
+ #  if	!defined(_WIN32)
+ #    define _WIN32
+ #  endif
+ #endif
+ 
+ /* Check to see if this is a MINGW build (all we currently support)
+  */
+ #if	defined(__MINGW32__) || defined(__MINGW64__)
+ #  if	!defined(__MINGW__)
+ #    define __MINGW__
+ #  endif
+ #endif
+ 
+ // Make sure we expose the constants that we use in ObjC++ mode
+ #ifndef __STDC_CONSTANT_MACROS
+ #define __STDC_CONSTANT_MACROS 1
+ #endif
+ #ifndef __STDC_LIMIT_MACROS 
+ #define __STDC_LIMIT_MACROS 1
+ #endif
+ 
+ #if !defined(NeXT_Foundation_LIBRARY)
+ 
+ /* An alternate to GS_FAKE_MAIN which forces the user to call the
+    NSProcessInfo initialization in 'main', GS_FAKE_MAIN must also
+    be undefined. */
+ #if 0
+ #define GS_PASS_ARGUMENTS 0
+ #endif
+ 
+ #define GS_FAKE_MAIN	0
+ #if	GS_FAKE_MAIN
+ 
+ /*
+  * NOTE - if GS_FAKE_MAIN (above) is set to 1, this hack applies - and you
+  * must make sure that this file is included in any file that implements
+  * the 'main()' function and links with the GNUstep base libarary.
+  * You should NOT include this file in a program that does not link with
+  * the base library.
+  * This file is included automatically in NSObject.h and Foundation.h
+  *
+  * The Foundation classe NSProcessInfo need access to the argc, argv,
+  * and env variables of the main() function. The purpose of this (ugly hack)
+  * definition is to give the gstep-base library the opportunity to implement
+  * its own main function with private access to the global vars. The private
+  * main() implementation (in NSProcessInfo.m) will then call the user defined
+  * gnustep_base_user_main() function.
+  *
+  * The original hack was -
+  ** Written by:  Georg Tuparev, EMBL & Academia Naturalis,
+  **              Heidelberg, Germany
+  **              Tuparev@EMBL-Heidelberg.de
+  **
+  **  NOTE! This is very dirty and dangerous trick. I spend several hours
+  ** on thinking and man pages browsing, but couldn't find better solution.
+  ** I know that I will spend 666 years in the Computer Hell for writing
+  ** this hack, and the master devil (Bully Boy) will send me to write
+  ** Windowz software.
+  ** BTW, for writing this hack I got personal congratulations from Dennis
+  ** Ritchie and Bjarne Stroustrup sent me a bunch of flowers and asked me
+  ** to participate in the standardization committee for C-- v.6.0 as
+  ** responsible for the new Tab-Overriding-Operator and Scope-Sensitive-
+  ** Comments ... but this makes my situation even worse ;-)
+  ** - Georg
+  *
+  * On some systems, there are other relatively clean workarounds, if this
+  * applies to the system you are running on, your configuration script
+  * should have set GS_FAKE_MAIN to zero, so that this define hack will
+  * not be used.
+  */
+ 
+ #define main gnustep_base_user_main
+ 
+ #endif	/* GS_FAKE_MAIN */
+ #endif
+ 
+ /*
+  * Definition to specify if your processor stores words with the most
+  * significant byte first (like Motorola and SPARC, unlike Intel and VAX).
+  */
+ #define GS_WORDS_BIGENDIAN	0
+ 
+ /*
+  *	Size definitions for standard types
+  */
+ #define	GS_SIZEOF_SHORT		2
+ #define	GS_SIZEOF_INT		4
+ #define	GS_SIZEOF_LONG		8
+ #define	GS_SIZEOF_LONG_LONG	8
+ #define	GS_SIZEOF_FLOAT		4
+ #define	GS_SIZEOF_DOUBLE	8
+ #define	GS_SIZEOF_VOIDP		8
+ 
+ /*
+  *	Size information to be places in bits 5 and 6 of type encoding bytes
+  *	in archives (bits 0 to 4 are used for basic type info and bit 7 is
+  *	used to mark cross-references to previously encoded objects).
+  */
+ #define	_GSC_S_SHT	_GSC_I16
+ #define	_GSC_S_INT	_GSC_I32
+ #define	_GSC_S_LNG	_GSC_I64
+ #define	_GSC_S_LNG_LNG	_GSC_I64
+ 
+ /*
+  * Type definitions for types with known sizes.
+  */
+ typedef signed char gss8;
+ typedef unsigned char gsu8;
+ typedef signed short gss16;
+ typedef unsigned short gsu16;
+ typedef signed int gss32;
+ typedef unsigned int gsu32;
+ typedef signed long gss64;
+ typedef unsigned long gsu64;
+ typedef struct { gsu8 a[16]; } gss128;
+ typedef struct { gsu8 a[16]; } gsu128;
+ typedef float gsf32;
+ typedef double gsf64;
+ 
+ /*
+  * Integer type with same size as a pointer
+  */
+ typedef	unsigned long gsuaddr;
+ typedef	long gssaddr;
+ typedef	gsuaddr gsaddr;
+ 
+ /*
+  *	Do we have real 64-bit and 128-bit integers or are we just pretending.
+  */
+ #define GS_HAVE_I64	1
+ #define GS_HAVE_I128	0
+ 
+ /*
+  * Ensure some standard types are defined.
+  */
+ #include <inttypes.h>
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ /*
+  * PTR Limit information replacements for buggy headers
+  */ 
+ #if 0
+ #undef INTPTR_MAX
+ #define INTPTR_MAX 
+ #undef INTPTR_MIN
+ #define INTPTR_MIN 
+ #undef UINTPTR_MAX
+ #define UINTPTR_MAX 
+ #endif
+ 
+ 
+ /*
+  *	Do we have zlib for file handle compression?
+  */
+ #define USE_ZLIB	1
+ 
+ /*
+  *	Do we have the GNU Multiple-precision library for NSDecimal?
+  */
+ //#define USE_GMP	1
+ #define USE_GMP	0
+ 
+ #ifdef	GS_WITH_GC
+ #undef  GS_WITH_GC
+ #endif
+ #define	GS_WITH_GC	0
+ 
+ /*
+  * Define to say if we use NXConstantString or NSConstantString
+  */
+ #define NXConstantString	NSConstantString
+ 
+ 
+ /*
+  * Wide unicode character type.
+  */
+ #ifndef	UTF32Char
+ #define	UTF32Char	uint32_t
+ #endif
+ 
+ /*
+  * Native character type for use in systemcalls etc.
+  */
+ 
+ #if	defined(__MINGW__)
+ #  define	GSNativeChar	uint16_t
+ #else
+ #  define	GSNativeChar	char
+ #endif
+ 
+ /*
+  * Types used to avoid exposing pthread header in NSLock.h
+  * NB. These types should *never* be used except to provide enough space
+  * in a class layout for the type of data actually used by the pthread
+  * implementation of the current platform.
+  */
+ typedef	struct {
+   uint8_t	dummy[48];
+ } gs_cond_t	__attribute__((aligned (8)));
+ typedef	struct {
+   uint8_t	dummy[40];
+ } gs_mutex_t	__attribute__((aligned (8)));
+ 
+ #define	OBJC2RUNTIME 1
+ #define BASE_NATIVE_OBJC_EXCEPTIONS     1
+ #define GS_NONFRAGILE     0
+ #define GS_MIXEDABI     0
+ #define GS_USE_LIBXML 0
+ #define GS_USE_GNUTLS 0
+ #define GS_USE_AVAHI 0
+ #define GS_USE_MDNS 0
+ #define GS_USE_ICU 0
+ #define GS_USE_LIBDISPATCH 0
+ #define GS_USE_LIBDISPATCH_RUNLOOP 0
+ #define GS_HAVE_OBJC_ROOT_CLASS_ATTR 0
+ 
+ #ifndef __has_include
+ #  define __has_include(x) 0
+ #endif
+ #ifndef __has_feature
+ #  define __has_feature(x) 0
+ #endif
+ #ifndef __has_builtin
+ #  define __has_builtin(x) 0
+ #endif
+ 
+ /*
+  * __has_extension has slightly different semantics from __has_feature.
+  * It evaluates to true if the feature is supported by by clang for the
+  * current compilation unit (language and -f switches), regardless of
+  * whether it is part of the language standard or just a (non-standard)
+  * extension.
+  */
+ #ifndef __has_extension
+ #  define __has_extension(x) __has_feature(x)
+ #endif
+ 
+ #if defined(_WIN32)
+ #define BOOL WinBOOL
+ #define __OBJC_BOOL 1
+ #include <w32api.h>
+ #ifndef _WIN32_WINNT
+ #define _WIN32_WINNT Windows2000
+ #endif
+ #if	!defined(WINVER)
+ #define WINVER Windows2000
+ #elif (WINVER < Windows2000)
+ #undef	WINVER
+ #define WINVER Windows2000
+ #endif
+ 
+ #if defined(__WIN64__)
+ #include <winsock2.h>
+ #include <windows.h>
+ #else
+ #include <windows.h>
+ #include <winsock2.h>
+ #endif
+ 
+ #undef __OBJC_BOOL
+ #undef  BOOL
+ #endif
+ 
+ /* Include the blocks runtime header if it's available (It shouldn't matter
+  * that this doesn't work on compilers that don't support __has_include(),
+  * because they also don't support blocks).
+  */
+ #if __has_include(<objc/block_runtime.h>)
+ #  include <objc/block_runtime.h>
+ #endif
+ 
+ #ifndef _WIN32
+ #include <sys/param.h> /* Hack to get rid of warning in GNU libc 2.0.3. */
+ #endif
+ 
+ /* The following group of lines maintained by the gstep-base configure */
+ #define GNUSTEP_BASE_VERSION            1.26.0
+ #define GNUSTEP_BASE_MAJOR_VERSION      1
+ #define GNUSTEP_BASE_MINOR_VERSION      26
+ #define GNUSTEP_BASE_SUBMINOR_VERSION   0
+ #define GNUSTEP_BASE_GCC_VERSION        4.0.0
+ 
+ /* Do not use the following macros!
+  */
+ #define OBJC_DEP(M) \
+   ({ static BOOL beenHere = NO; if (beenHere == NO) {\
+     beenHere = YES; fprintf(stderr, "%s:%d %s", __FILE__, __LINE__, (M));}})
+ 
+ #define OBJC_MALLOC(VAR, TYPE, NUM) \
+    (OBJC_DEP("OBJC_MALLOC is deprecated ... use malloc\n"),(VAR) = (TYPE *) malloc ((unsigned)(NUM)*sizeof(TYPE)))
+ #define OBJC_VALLOC(VAR, TYPE, NUM) \
+    (OBJC_DEP("OBJC_VALLOC is deprecated\n"),(VAR) = (TYPE *) valloc ((unsigned)(NUM)*sizeof(TYPE)))
+ #define OBJC_ATOMIC_MALLOC(VAR, TYPE, NUM) \
+    (OBJC_DEP("OBJC_ATOMIC_MALLOC is deprecated\n"),(VAR) = (TYPE *) malloc ((unsigned)(NUM)*sizeof(TYPE)))
+ #define OBJC_REALLOC(VAR, TYPE, NUM) \
+    (OBJC_DEP("OBJC_REALLOC is deprecated ... use realloc\n"),(VAR) = (TYPE *) realloc ((VAR), (unsigned)(NUM)*sizeof(TYPE)))
+ #define OBJC_CALLOC(VAR, TYPE, NUM) \
+    (OBJC_DEP("OBJC_CALLOC is deprecated ... use calloc\n"),(VAR) = (TYPE *) calloc ((unsigned)(NUM), sizeof(TYPE)))
+ #define OBJC_FREE(PTR) (OBJC_DEP("OBJC_FREE is deprecated ... use free\n"), free (PTR))
+ 
+ #ifndef MAX
+ #define MAX(a,b) \
+        ({__typeof__(a) _MAX_a = (a); __typeof__(b) _MAX_b = (b);  \
+          _MAX_a > _MAX_b ? _MAX_a : _MAX_b; })
+ #endif
+ 
+ #ifndef MIN
+ #define MIN(a,b) \
+        ({__typeof__(a) _MIN_a = (a); __typeof__(b) _MIN_b = (b);  \
+          _MIN_a < _MIN_b ? _MIN_a : _MIN_b; })
+ #endif
+ 
+ #ifndef ABS
+ #define ABS(a) \
+        ({__typeof__(a) _ABS_a = (a); \
+          _ABS_a < 0 ? -_ABS_a : _ABS_a; })
+ #endif
+ 
+ #ifndef STRINGIFY
+ #define STRINGIFY(s) XSTRINGIFY(s)
+ #define XSTRINGIFY(s) #s
+ #endif
+ 
+ #ifndef OBJC_STRINGIFY
+ #define OBJC_STRINGIFY(s) OBJC_XSTRINGIFY(s)
+ #define OBJC_XSTRINGIFY(s) @#s
+ #endif
+ 
+ #ifndef PTR2LONG
+ #define PTR2LONG(P) (((char*)(P))-(char*)0)
+ #endif
+ #ifndef LONG2PTR
+ #define LONG2PTR(L) (((char*)0)+(L))
+ #endif
+ 
+ #if VSPRINTF_RETURNS_LENGTH
+ #define VSPRINTF_LENGTH(VSPF_CALL) (VSPF_CALL)
+ #else
+ #define VSPRINTF_LENGTH(VSPF_CALL) strlen((VSPF_CALL))
+ #endif /* VSPRINTF_RETURNS_LENGTH */
+ 
+ #if VASPRINTF_RETURNS_LENGTH
+ #define VASPRINTF_LENGTH(VASPF_CALL) (VASPF_CALL)
+ #else
+ #define VASPRINTF_LENGTH(VASPF_CALL) strlen((VASPF_CALL))
+ #endif /* VSPRINTF_RETURNS_LENGTH */
+ 
+ /* Evil hack to stop gcc-4.1 complaining about a dealloc method which
+  * does not call the superclass implementation.
+  */
+ #define	GSNOSUPERDEALLOC	if (0) [super dealloc]
+ 
+ #ifndef CF_EXCLUDE_CSTD_HEADERS
+ #include <sys/types.h>
+ #include <stdarg.h>
+ #include <assert.h>
+ #include <ctype.h>
+ #include <errno.h>
+ #include <float.h>
+ #include <limits.h>
+ #include <locale.h>
+ #include <math.h>
+ #include <setjmp.h>
+ #include <signal.h>
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <time.h>
+ #include <stdbool.h>
+ #endif
+ 
+ #if !__has_feature(objc_arc)
+ // NetBSD > 6 defines __weak in cdefs_elf.h
+ #ifdef __NetBSD__
+ #undef __weak
+ #endif
+ #  if !defined(__weak)
+ #    define __weak
+ #  endif
+ #  if !defined(__strong)
+ #    define __strong
+ #  endif
+ #endif
+ 
+ #ifndef __unsafe_unretained
+ #  if !__has_feature(objc_arc)
+ #    define __unsafe_unretained
+ #  endif
+ #endif
+ #ifndef __bridge
+ #  if !__has_feature(objc_arc)
+ #    define __bridge
+ #  endif
+ #endif
+ 
+ #if __has_builtin(__builtin_unreachable)
+ #  define GS_UNREACHABLE() __builtin_unreachable()
+ #else
+ #  define GS_UNREACHABLE() abort()
+ #endif
+ 
+ #endif	/* included_GSConfig_h */
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,631 ----
+ /** Interface to ObjC runtime for GNUStep
+    Copyright (C) 1995, 1997, 2000, 2002, 2003 Free Software Foundation, Inc.
+ 
+    Written by:  Andrew Kachites McCallum <mccallum@gnu.ai.mit.edu>
+    Date: 1995
+    Written by:  Richard Frith-Macdonald <rfm@gnu.org>
+    Date: 2002
+    
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+    
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+ 
+     AutogsdocSource: Additions/GSObjCRuntime.m
+ 
+    */ 
+ 
+ #ifndef __GSObjCRuntime_h_GNUSTEP_BASE_INCLUDE
+ #define __GSObjCRuntime_h_GNUSTEP_BASE_INCLUDE
+ 
+ #import "GSVersionMacros.h"
+ #import "GSConfig.h"
+ 
+ #include <stdio.h>
+ 
+ #if 1 || NeXT_RUNTIME
+  #include <objc/objc.h>
+  #include <objc/objc-class.h>
+  #include <objc/objc-runtime.h>
+  #ifndef _C_ATOM
+   #define _C_ATOM '%'
+  #endif
+  #define _F_CONST    0x01
+  #define _F_IN       0x01
+  #define _F_OUT      0x02
+  #define _F_INOUT    0x03
+  #define _F_BYCOPY   0x04
+  #define _F_ONEWAY   0x08
+  #define _C_CONST    'r'
+  #define _C_IN       'n'
+  #define _C_INOUT    'N'
+  #define _C_OUT      'o'
+  #define _C_BYCOPY   'O'
+  #define _C_ONEWAY   'V'
+ #else				/* GNU Objective C Runtime */
+  #include <objc/objc.h>
+  #if defined (__GNU_LIBOBJC__)
+   #include <objc/runtime.h>
+  #else
+   #include <objc/objc-api.h>
+   #include <objc/encoding.h>
+  #endif
+ #endif
+ 
+ /*
+  * Hack for older compiler versions that don't have all defines
+  * needed in  objc-api.h
+  */
+ #ifndef	_C_LNG_LNG
+ #define	_C_LNG_LNG	'q'
+ #endif
+ #ifndef	_C_ULNG_LNG
+ #define	_C_ULNG_LNG	'Q'
+ #endif
+ 
+ #if	OBJC2RUNTIME
+ /* We have a real ObjC2 runtime.
+  */
+ #include <objc/runtime.h>
+ #else
+ /* We emulate an ObjC2 runtime.
+  */
+ #include <ObjectiveC2/objc/runtime.h>
+ #endif
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ @class	NSArray;
+ @class	NSDictionary;
+ @class	NSObject;
+ @class	NSString;
+ @class	NSValue;
+ 
+ #ifndef YES
+ #define YES		1
+ #endif
+ #ifndef NO
+ #define NO		0
+ #endif
+ #ifndef nil
+ #define nil		0
+ #endif
+ 
+ #if	!defined(_C_CONST)
+ #define _C_CONST        'r'
+ #endif
+ #if	!defined(_C_IN)
+ #define _C_IN           'n'
+ #endif
+ #if	!defined(_C_INOUT)
+ #define _C_INOUT        'N'
+ #endif
+ #if	!defined(_C_OUT)
+ #define _C_OUT          'o'
+ #endif
+ #if	!defined(_C_BYCOPY)
+ #define _C_BYCOPY       'O'
+ #endif
+ #if	!defined(_C_BYREF)
+ #define _C_BYREF        'R'
+ #endif
+ #if	!defined(_C_ONEWAY)
+ #define _C_ONEWAY       'V'
+ #endif
+ #if	!defined(_C_GCINVISIBLE)
+ #define _C_GCINVISIBLE  '!'
+ #endif
+ 
+ /*
+  * Functions for accessing instance variables directly -
+  * We can copy an ivar into arbitrary data,
+  * Get the type encoding for a named ivar,
+  * and copy a value into an ivar.
+  */
+ GS_EXPORT BOOL
+ GSObjCFindVariable(id obj, const char *name,
+ 		   const char **type, unsigned int *size, int *offset);
+ 
+ GS_EXPORT void
+ GSObjCGetVariable(id obj, int offset, unsigned int size, void *data);
+ 
+ GS_EXPORT void
+ GSObjCSetVariable(id obj, int offset, unsigned int size, const void *data);
+ 
+ GS_EXPORT NSArray *
+ GSObjCMethodNames(id obj, BOOL recurse);
+ 
+ GS_EXPORT NSArray *
+ GSObjCVariableNames(id obj, BOOL recurse);
+ 
+ /**
+  * <p>A Behavior can be seen as a "Protocol with an implementation" or a
+  * "Class without any instance variables".  A key feature of behaviors
+  * is that they give a degree of multiple inheritance.
+  * </p>
+  * <p>Behavior methods, when added to a class, override the class's
+  * superclass methods, but not the class's methods.
+  * </p>
+  * <p>Whan a behavior class is added to a receiver class, not only are the
+  * methods defined in the behavior class added, but the methods from the
+  * behavior's class hierarchy are also added (unless already present).
+  * </p>
+  * <p>It's not the case that a class adding behaviors from another class
+  * must have "no instance vars".  The receiver class just has to have the
+  * same layout as the behavior class (optionally with some additional
+  * ivars after those of the behavior class).
+  * </p>
+  * <p>This function provides Behaviors without adding any new syntax to
+  * the Objective C language.  Simply define a class with the methods you
+  * want to add, then call this function with that class as the behavior
+  * argument.
+  * </p>
+  * <p>This function should be called in the +initialize method of the receiver.
+  * </p>
+  * <p>If you add several behaviors to a class, be aware that the order of
+  * the additions is significant.
+  * </p>
+  */
+ GS_EXPORT void
+ GSObjCAddClassBehavior(Class receiver, Class behavior);
+ 
+ /**
+  * <p>An Override can be seen as a "category implemented as a separate class
+  * and manually added to the receiver class under program control, rather
+  * than automatically added by the compiler/runtime.
+  * </p>
+  * <p>Override methods, when added to a receiver class, replace the class's
+  * class's methods of the same name (or are added if the class did not define
+  * methods with that name).
+  * </p>
+  * <p>It's not the case that a class adding overrides from another class
+  * must have "no instance vars".  The receiver class just has to have the
+  * same layout as the override class (optionally with some additional
+  * ivars after those of the override class).
+  * </p>
+  * <p>This function provides overrides without adding any new syntax to
+  * the Objective C language.  Simply define a class with the methods you
+  * want to add, then call this function with that class as the override
+  * argument.
+  * </p>
+  * <p>This function should usually be called in the +initialize method
+  * of the receiver.
+  * </p>
+  * <p>If you add several overrides to a class, be aware that the order of
+  * the additions is significant.
+  * </p>
+  */
+ GS_EXPORT void
+ GSObjCAddClassOverride(Class receiver, Class override);
+ 
+ /** Turn on (YES), off (NO) or test (-1) behavior debugging.
+  */
+ GS_EXPORT BOOL GSObjCBehaviorDebug(int setget);
+ 
+ GS_EXPORT NSValue *
+ GSObjCMakeClass(NSString *name, NSString *superName, NSDictionary *iVars);
+ 
+ GS_EXPORT void
+ GSObjCAddClasses(NSArray *classes);
+ 
+ /**
+  * Given a NULL terminated list of methods, add them to the class.<br />
+  * If the method already exists in a superclass, the new version overrides
+  * that one, but if the method already exists in the class itsself, the
+  * new one is quietly ignored (replace==NO) or replaced with the new
+  * version (if replace==YES).<br />
+  * To add class methods, cls should be the metaclass of the class to
+  * which the methods are being added.
+  */
+ GS_EXPORT void
+ GSObjCAddMethods(Class cls, Method *list, BOOL replace);
+ 
+ /*
+  * Functions for key-value encoding ... they access values in an object
+  * either by selector or directly, but do so using NSNumber for the
+  * scalar types of data.
+  */
+ GS_EXPORT id
+ GSObjCGetVal(NSObject *self, const char *key, SEL sel,
+   const char *type, unsigned size, int offset);
+ 
+ GS_EXPORT void
+ GSObjCSetVal(NSObject *self, const char *key, id val, SEL sel,
+   const char *type, unsigned size, int offset);
+ 
+ /*
+  * This section includes runtime functions
+  * to query and manipulate the ObjC runtime structures.
+  * These functions take care to not use ObjC code so
+  * that they can safely be used in +(void)load implementations
+  * where applicable.
+  */
+ 
+ /**
+  * Deprecated ... use objc_getClassList()
+  */
+ GS_EXPORT unsigned int
+ GSClassList(Class *buffer, unsigned int max, BOOL clearCache);
+ 
+ /**
+  * GSObjCClass() is deprecated ... use object_getClass()
+  */
+ GS_EXPORT Class GSObjCClass(id obj);
+ 
+ /**
+  * GSObjCSuper() is deprecated ... use class_getSuperclass()
+  */
+ GS_EXPORT Class GSObjCSuper(Class cls);
+ 
+ /**
+  * GSObjCIsInstance() is deprecated ... use object_getClass()
+  * in conjunction with class_isMetaClass()
+  */
+ GS_EXPORT BOOL GSObjCIsInstance(id obj);
+ 
+ /**
+  * GSObjCIsClass() is deprecated ... use object_getClass()
+  * in conjunction with class_isMetaClass()
+  */
+ GS_EXPORT BOOL GSObjCIsClass(Class cls);
+ 
+ /**
+  * Test to see if class inherits from another class
+  * The argument to this function must NOT be nil.
+  */
+ GS_EXPORT BOOL GSObjCIsKindOf(Class cls, Class other);
+ 
+ /**
+  * GSClassFromName() is deprecated ... use objc_lookUpClass()
+  */
+ GS_EXPORT Class GSClassFromName(const char *name);
+ 
+ /**
+  * GSNameFromClass() is deprecated ... use class_getName()
+  */
+ GS_EXPORT const char *GSNameFromClass(Class cls);
+ 
+ /**
+  * GSClassNameFromObject() is deprecated ... use object_getClass()
+  * in conjunction with class_getName()
+  */
+ GS_EXPORT const char *GSClassNameFromObject(id obj);
+ 
+ /**
+  * GSNameFromSelector() is deprecated ... use sel_getName()
+  */
+ GS_EXPORT const char *GSNameFromSelector(SEL sel);
+ 
+ /**
+  * GSSelectorFromName() is deprecated ... use sel_getUid()
+  */
+ GS_EXPORT SEL
+ GSSelectorFromName(const char *name);
+ 
+ /**
+  * Return the selector for the specified name and types.<br />
+  * Returns a nul pointer if the name is nul.<br />
+  * Creates a new selector if necessary.<br />
+  * Code must NOT rely on this providing a selector with type information.
+  */
+ GS_EXPORT SEL
+ GSSelectorFromNameAndTypes(const char *name, const char *types);
+ 
+ /**
+  * Return the type information from the specified selector.<br />
+  * May return a nul pointer if the selector was a nul pointer or if it
+  * was not typed (or if the runtime does not support typed selectors).<br />
+  * Code must NOT rely on this providing any type information.
+  */
+ GS_EXPORT const char *
+ GSTypesFromSelector(SEL sel);
+ 
+ /**
+  * Compare only the type information ignoring qualifiers, the frame layout
+  * and register markers.  Unlike sel_types_match, this function also
+  * handles comparisons of types with and without any layout information.
+  */
+ GS_EXPORT BOOL
+ GSSelectorTypesMatch(const char *types1, const char *types2);
+ 
+ /** Takes full type information and skips forward to the actual type
+  * as specified in the _C_... constants.
+  */
+ GS_EXPORT const char *
+ GSSkipTypeQualifierAndLayoutInfo(const char *types);
+ 
+ /**
+  * Returns a protocol object with the corresponding name.
+  * This function searches the registered classes for any protocol
+  * with the supplied name.  If one is found, it is cached in
+  * for future requests.  If efficiency is a factor then use
+  * GSRegisterProtocol() to insert a protocol explicitly into the cache
+  * used by this function.  If no protocol is found this function returns
+  * nil.
+  */
+ GS_EXPORT Protocol *
+ GSProtocolFromName(const char *name);
+ 
+ /**
+  * Registers proto in the cache used by GSProtocolFromName().
+  */
+ GS_EXPORT void
+ GSRegisterProtocol(Protocol *proto);
+ 
+ /**
+  * A variant of protocol_getMethodDescription which recursively searches
+  * parent protocols if the requested selector isn't found in the given
+  * protocol.
+  *
+  * Returns a {NULL, NULL} structure if the requested selector couldn't be
+  * found.
+  */
+ GS_EXPORT struct objc_method_description
+ GSProtocolGetMethodDescriptionRecursive(Protocol *aProtocol, SEL aSel, BOOL isRequired, BOOL isInstance);
+ 
+ /*
+  * Unfortunately the definition of the symbols
+  * 'Method(_t)', 'MethodList(_t)'  and 'IVar(_t)'
+  * are incompatible between the GNU and NeXT/Apple runtimes.
+  * We introduce GSMethod, GSMethodList and GSIVar to allow portability.
+  */
+ typedef Method	GSMethod;
+ typedef Ivar	GSIVar;
+ 
+ /**
+  * Returns the pointer to the method structure
+  * for the selector in the specified class.
+  * Depending on searchInstanceMethods, this function searches
+  * either instance or class methods.
+  * Depending on searchSuperClassesm this function searches
+  * either the specified class only or also its superclasses.<br/>
+  * To obtain the implementation pointer IMP use returnValue->method_imp
+  * which should be safe across all runtimes.<br/>
+  * It should be safe to use this function in +load implementations.<br/>
+  * This function should currently (June 2004) be considered WIP.
+  * Please follow potential changes (Name, parameters, ...) closely until
+  * it stabilizes.
+  */
+ GS_EXPORT GSMethod
+ GSGetMethod(Class cls, SEL sel,
+ 	    BOOL searchInstanceMethods,
+ 	    BOOL searchSuperClasses);
+ 
+ /**
+  * Deprecated .. does nothing.
+  */
+ GS_EXPORT void
+ GSFlushMethodCacheForClass (Class cls);
+ 
+ /**
+  * Deprecated .. use class_getInstanceVariable()
+  */
+ GS_EXPORT GSIVar
+ GSCGetInstanceVariableDefinition(Class cls, const char *name);
+ 
+ /**
+  * Deprecated .. use class_getInstanceVariable()
+  */
+ GS_EXPORT GSIVar
+ GSObjCGetInstanceVariableDefinition(Class cls, NSString *name);
+ 
+ /**
+  * GSObjCVersion() is deprecated ... use class_getVersion()
+  */
+ GS_EXPORT int GSObjCVersion(Class cls);
+ 
+ /**
+  * Quickly return autoreleased data storage area.
+  */
+ GS_EXPORT void *
+ GSAutoreleasedBuffer(unsigned size);
+ 
+ /**
+  * <p>Prints a message to fptr using the format string provided and any
+  * additional arguments.  The format string is interpreted as by
+  * the NSString formatted initialisers, and understands the '%@' syntax
+  * for printing an object.
+  * </p>
+  * <p>The data is written to the file pointer in the default CString
+  * encoding if possible, as a UTF8 string otherwise.
+  * </p>
+  * <p>This function is recommended for printing general log messages.
+  * For debug messages use NSDebugLog() and friends.  For error logging
+  * use NSLog(), and for warnings you might consider NSWarnLog().
+  * </p>
+  */
+ GS_EXPORT BOOL
+ GSPrintf (FILE *fptr, NSString *format, ...);
+ 
+ 
+ 
+ GS_EXPORT NSArray *
+ GSObjCAllSubclassesOfClass(Class cls);
+ 
+ GS_EXPORT NSArray *
+ GSObjCDirectSubclassesOfClass(Class cls);
+ 
+ /** Function to change the class of the specified instance to newClass.
+  * This handles memory debugging issues in GNUstep-base and also
+  * deals with class finalisation issues in a garbage collecting
+  * environment, so you should use this function rather than attempting
+  * to swizzle class pointers directly.
+  */
+ GS_EXPORT void
+ GSClassSwizzle(id instance, Class newClass);
+ 
+ #if !defined(GS_GNUSTEP_V) || (GS_GNUSTEP_V >= GS_API_ANY && GS_GNUSTEP_V < 011500)
+ //GS_API_VERSION(GS_API_ANY,011500)
+ 
+ GS_EXPORT const char *
+ GSLastErrorStr(long error_id) GS_DEPRECATED_FUNC;
+ 
+ #endif
+ 
+ 
+ 
+ #ifndef	GS_MAX_OBJECTS_FROM_STACK
+ /**
+  * The number of objects to try to get from varargs into an array on
+  * the stack ... if there are more than this, use the heap.
+  * NB. This MUST be a multiple of 2
+  */
+ #define	GS_MAX_OBJECTS_FROM_STACK	128
+ #endif
+ 
+ /**
+  * <p>This is a macro designed to minimise the use of memory allocation and
+  * deallocation when you need to work with a vararg list of objects.<br />
+  * The objects are unpacked from the vararg list into two 'C' arrays and
+  * then a code fragment you specify is able to make use of them before
+  * that 'C' array is destroyed. 
+  * </p>
+  * <p>The firstObject argument is the name of the formal parameter in your
+  * method or function which precedes the ', ...' denoting variable args.
+  * </p>
+  * <p>The code argument is a piece of objective-c code to be executed to
+  * make use of the objects stored in the 'C' arrays.<br />
+  * When this code is called the unsigned integer '__count' will contain the
+  * number of objects unpacked, the pointer '__objects' will point to
+  * the first object in each pair, and the pointer '__pairs' will point
+  * to an array containing the second halves of the pairs of objects
+  * whose first halves are in '__objects'.<br />
+  * This lets you pack a list of the form 'key, value, key, value, ...'
+  * into an array of keys and an array of values.
+  * </p>
+  */
+ #define GS_USEIDPAIRLIST(firstObject, code...) ({\
+   va_list	__ap; \
+   unsigned int	__max = GS_MAX_OBJECTS_FROM_STACK; \
+   unsigned int	__count = 0; \
+   id		__buf[__max]; \
+   id		*__objects = __buf; \
+   id		*__pairs = &__objects[__max/2]; \
+   id		__obj = firstObject; \
+   va_start(__ap, firstObject); \
+   while (__obj != nil && __count < __max) \
+     { \
+       if ((__count % 2) == 0) \
+ 	{ \
+ 	  __objects[__count/2] = __obj; \
+ 	} \
+       else \
+ 	{ \
+ 	  __pairs[__count/2] = __obj; \
+ 	} \
+       __obj = va_arg(__ap, id); \
+       if (++__count == __max) \
+ 	{ \
+ 	  while (__obj != nil) \
+ 	    { \
+ 	      __count++; \
+ 	      __obj = va_arg(__ap, id); \
+ 	    } \
+ 	} \
+     } \
+   if ((__count % 2) == 1) \
+     { \
+       __pairs[__count/2] = nil; \
+       __count++; \
+     } \
+   va_end(__ap); \
+   if (__count > __max) \
+     { \
+       unsigned int	__tmp; \
+       __objects = (id*)malloc(__count*sizeof(id)); \
+       __pairs = &__objects[__count/2]; \
+       __objects[0] = firstObject; \
+       va_start(__ap, firstObject); \
+       for (__tmp = 1; __tmp < __count; __tmp++) \
+ 	{ \
+ 	  if ((__tmp % 2) == 0) \
+ 	    { \
+ 	      __objects[__tmp/2] = va_arg(__ap, id); \
+ 	    } \
+ 	  else \
+ 	    { \
+ 	      __pairs[__tmp/2] = va_arg(__ap, id); \
+ 	    } \
+ 	} \
+       va_end(__ap); \
+     } \
+   code; \
+   if (__objects != __buf) free(__objects); \
+ })
+ 
+ /**
+  * <p>This is a macro designed to minimise the use of memory allocation and
+  * deallocation when you need to work with a vararg list of objects.<br />
+  * The objects are unpacked from the vararg list into a 'C' array and
+  * then a code fragment you specify is able to make use of them before
+  * that 'C' array is destroyed. 
+  * </p>
+  * <p>The firstObject argument is the name of the formal parameter in your
+  * method or function which precedes the ', ...' denoting variable args.
+  * </p>
+  * <p>The code argument is a piece of objective-c code to be executed to
+  * make use of the objects stored in the 'C' array.<br />
+  * When this code is called the unsigned integer '__count' will contain the
+  * number of objects unpacked, and the pointer '__objects' will point to
+  * the unpacked objects, ie. firstObject followed by the vararg arguments
+  * up to (but not including) the first nil.
+  * </p>
+  */
+ #define GS_USEIDLIST(firstObject, code...) ({\
+   va_list	__ap; \
+   unsigned int	__max = GS_MAX_OBJECTS_FROM_STACK; \
+   unsigned int	__count = 0; \
+   id		__buf[__max]; \
+   id		*__objects = __buf; \
+   id		__obj = firstObject; \
+   va_start(__ap, firstObject); \
+   while (__obj != nil && __count < __max) \
+     { \
+       __objects[__count] = __obj; \
+       __obj = va_arg(__ap, id); \
+       if (++__count == __max) \
+ 	{ \
+ 	  while (__obj != nil) \
+ 	    { \
+ 	      __count++; \
+ 	      __obj = va_arg(__ap, id); \
+ 	    } \
+ 	} \
+     } \
+   va_end(__ap); \
+   if (__count > __max) \
+     { \
+       unsigned int	__tmp; \
+       __objects = (id*)NSZoneMalloc(NSDefaultMallocZone(),__count*sizeof(id)); \
+       va_start(__ap, firstObject); \
+       __objects[0] = firstObject; \
+       for (__tmp = 1; __tmp < __count; __tmp++) \
+ 	{ \
+ 	  __objects[__tmp] = va_arg(__ap, id); \
+ 	} \
+       va_end(__ap); \
+     } \
+   code; \
+   if (__objects != __buf) NSZoneFree (NSDefaultMallocZone(),__objects); \
+ })
+ 
+ 
+ #ifdef __cplusplus
+ }
+ #endif
+ 
+ #endif /* __GSObjCRuntime_h_GNUSTEP_BASE_INCLUDE */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,460 ----
+ /* GSVersionMacros.h - macros for managing API versioning and visibility
+    Copyright (C) 2006-2014 Free Software Foundation, Inc.
+ 
+    Written by: Richard Frith-Macdonald <rfm@gnu.org>
+    Date: Oct, October 2006
+ 
+    This file is part of GNUstep.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02110-1301, USA.
+ */
+ 
+ #ifndef __GNUSTEP_GSVERSIONMACROS_H_INCLUDED_
+ #define __GNUSTEP_GSVERSIONMACROS_H_INCLUDED_
+ 
+ /* By default we defined NO_GNUSTEP to 0 so that we will include extensions.
+  */
+ #if	!defined(NO_GNUSTEP)
+ #  define	NO_GNUSTEP	0
+ #endif
+ 
+ /* Check consistency of definitions for system compatibility.
+  */
+ #if	defined(STRICT_OPENSTEP)
+ #  define	GS_OPENSTEP_V	 10000
+ #  undef	NO_GNUSTEP
+ #  define	NO_GNUSTEP	1
+ #elif	defined(STRICT_MACOS_X)
+ #  define	GS_OPENSTEP_V	100600
+ #  undef	NO_GNUSTEP
+ #  define	NO_GNUSTEP	1
+ #endif
+ 
+ /* Define the GS_OSX_ADJUST() macro to adjust OSX style version macros
+  * to GNUstep style version macros.
+  */
+ #define	GS_OSX_ADJUST(V) ((V) >= 10000 ? (V) : ((V)/100*10000 + (V)%100*10))
+ 
+ /* Define OSX compatibility version macros if necessary.
+  */
+ #if     !defined(MAC_OS_X_VERSION_10_0)
+ #define	MAC_OS_X_VERSION_10_0	1000
+ #define	MAC_OS_X_VERSION_10_1	1010
+ #define	MAC_OS_X_VERSION_10_2	1020
+ #define	MAC_OS_X_VERSION_10_3	1030
+ #define	MAC_OS_X_VERSION_10_4	1040
+ #define	MAC_OS_X_VERSION_10_5	1050
+ #define	MAC_OS_X_VERSION_10_6	1060
+ #define	MAC_OS_X_VERSION_10_7	1070
+ #define	MAC_OS_X_VERSION_10_8	1080
+ #define	MAC_OS_X_VERSION_10_9	1090
+ #define MAC_OS_X_VERSION_10_10	1100
+ #define MAC_OS_X_VERSION_10_11	1110
+ #define MAC_OS_X_VERSION_10_12	1120
+ #define MAC_OS_X_VERSION_10_13	1130
+ #define MAC_OS_X_VERSION_10_14	1140
+ #endif	/* MAC_OS_X_VERSION_10_0 */
+ 
+ /* Allow MAC_OS_X_VERSION_MAX_ALLOWED to be used in place of GS_OPENSTEP_V
+  * if GS_OPENSTEP_V is not defined.
+  */
+ #ifndef	GS_OPENSTEP_V
+ #ifdef	MAC_OS_X_VERSION_MAX_ALLOWED
+ #define	GS_OPENSTEP_V	GS_OSX_ADJUST(MAC_OS_X_VERSION_MAX_ALLOWED)
+ #endif	/* MAC_OS_X_VERSION_MAX_ALLOWED */
+ #endif	/* GS_OPENSTEP_V */
+ 
+ /*
+  * NB. The version values below must be integers ... by convention these are
+  * made up of two digits each for major, minor and subminor version numbers
+  * (ie each is in the range 00 to 99 though a leading zero in the major
+  * number is not permitted).
+  * So for a MacOS-X 10.3.9 release the version number would be 100309
+  *
+  * You may define GS_GNUSTEP_V or GS_OPENSTEP_V to ensure that your
+  * program only 'sees' the specified varsion of the API.
+  */
+ 
+ /**
+  * <p>Macro to check a defined GNUstep version number (GS_GNUSTEP_V) against
+  * the supplied arguments.  Returns true if no GNUstep version is specified,
+  * or if ADD &lt;= version &lt; REM, where ADD is the version
+  * number at which a feature guarded by the macro was introduced and
+  * REM is the version number at which it was removed.
+  * </p>
+  * <p>The version number arguments are six digit integers where the first
+  * two digits are the major version number, the second two are the minor
+  * version number and the last two are the subminor number (all left padded
+  * with a zero where necessary).  However, for convenience you can also
+  * use the predefined constants ...
+  * <ref type="macro" id="GS_API_NONE">GS_API_NONE</ref>,
+  * <ref type="macro" id="GS_API_LATEST">GS_API_LATEST</ref>,
+  * </p>
+  * <p>Also see <ref type="macro" id="OS_API_VERSION">OS_API_VERSION</ref>
+  * </p>
+  * <p>NB. If you are changing the API (eg adding a new feature) you need
+  * to control the visibility io the new header file code using<br />
+  * <code>#if GS_API_VERSION(ADD,GS_API_LATEST)</code><br />
+  * where <code>ADD</code> is the version number of the next minor
+  * release after the most recent one.<br />
+  * As a general principle you should <em>not</em> change the API with
+  * changing subminor version numbers ... as that tends to confuse
+  * people (though Apple has sometimes done it).
+  * </p>
+  */
+ #define	GS_API_VERSION(ADD,REM) \
+   (!defined(GS_GNUSTEP_V) || (GS_GNUSTEP_V >= ADD && GS_GNUSTEP_V < REM))
+ 
+ /**
+  * <p>Macro to check a defined OpenStep/OPENSTEP/MacOS-X version against the
+  * supplied arguments.  Returns true if no version is specified, or if
+  * ADD &lt;= version &lt; REM, where ADD is the version
+  * number at which a feature guarded by the macro was introduced and
+  * REM is the version number at which it was removed.
+  * </p>
+  * <p>The version number arguments are six digit integers where the first
+  * two digits are the major version number, the second two are the minor
+  * version number and the last two are the subminor number (all left padded
+  * with a zero where necessary).  However, for convenience you can also
+  * use any of several predefined constants ...
+  * <ref type="macro" id="GS_API_NONE">GS_API_NONE</ref>,
+  * <ref type="macro" id="GS_API_LATEST">GS_API_LATEST</ref>,
+  * <ref type="macro" id="GS_API_OSSPEC">GS_API_OSSPEC</ref>,
+  * <ref type="macro" id="GS_API_OPENSTEP">GS_API_OPENSTEP</ref>,
+  * <ref type="macro" id="GS_API_MACOSX">GS_API_MACOSX</ref>
+  * </p>
+  * <p>Also see <ref type="macro" id="GS_API_VERSION">GS_API_VERSION</ref>
+  * </p>
+  * <p>For OSX compatibility, this macro also supports the use of Apple's
+  * symbolic constants for version numbering.  Their contants are currently
+  * four digit values (two digits for the major version, one for the minor,
+  * and one for the subminor). 
+  * </p>
+  * <p>The Apple compatibility version macros are currently:
+  * <ref type="macro" id="MAC_OS_X_VERSION_10_0">MAC_OS_X_VERSION_10_0</ref>,
+  * <ref type="macro" id="MAC_OS_X_VERSION_10_1">MAC_OS_X_VERSION_10_1</ref>,
+  * <ref type="macro" id="MAC_OS_X_VERSION_10_2">MAC_OS_X_VERSION_10_2</ref>,
+  * <ref type="macro" id="MAC_OS_X_VERSION_10_3">MAC_OS_X_VERSION_10_3</ref>,
+  * <ref type="macro" id="MAC_OS_X_VERSION_10_4">MAC_OS_X_VERSION_10_4</ref>,
+  * <ref type="macro" id="MAC_OS_X_VERSION_10_5">MAC_OS_X_VERSION_10_5</ref>,
+  * <ref type="macro" id="MAC_OS_X_VERSION_10_6">MAC_OS_X_VERSION_10_6</ref>,
+  * <ref type="macro" id="MAC_OS_X_VERSION_10_7">MAC_OS_X_VERSION_10_7</ref>,
+  * <ref type="macro" id="MAC_OS_X_VERSION_10_8">MAC_OS_X_VERSION_10_8</ref>
+  * <ref type="macro" id="MAC_OS_X_VERSION_10_9">MAC_OS_X_VERSION_10_9</ref>
+  * </p>
+  */
+ #define	OS_API_VERSION(ADD,REM) \
+   (!defined(GS_OPENSTEP_V) \
+   || (GS_OPENSTEP_V>=GS_OSX_ADJUST(ADD) && GS_OPENSTEP_V<GS_OSX_ADJUST(REM)))
+ 
+ /**
+  * A constant which is the lowest possible version number (0) so that
+  * when used as the removal version (second argument of the GS_API_VERSION
+  * or OS_API_VERSION macro) represents a feature which is not present in
+  * any version.<br />
+  * eg.<br />
+  * #if <ref type="macro" id="OS_API_VERSION">OS_API_VERSION</ref>
+  * (GS_API_NONE, GS_API_NONE)<br />
+  * denotes  code not present in OpenStep/OPENSTEP/MacOS-X
+  */
+ #define	GS_API_NONE	     0
+ 
+ /**
+  * A constant to represent a feature which is still present in the latest
+  * version.  This is the highest possible version number.<br />
+  * eg.<br />
+  * #if <ref type="macro" id="OS_API_VERSION">OS_API_VERSION</ref>
+  * (GS_API_MACOSX, GS_API_LATEST)<br />
+  * denotes code present from the initial MacOS-X version onwards.
+  */
+ #define	GS_API_LATEST	999999
+ 
+ /**
+  * The version number of the initial OpenStep specification.<br />
+  * eg.<br />
+  * #if <ref type="macro" id="OS_API_VERSION">OS_API_VERSION</ref>
+  * (GS_API_OSSPEC, GS_API_LATEST)<br />
+  * denotes code present from the OpenStep specification onwards.
+  */
+ #define	GS_API_OSSPEC	 10000
+ 
+ /**
+  * The version number of the first OPENSTEP implementation.<br />
+  * eg.<br />
+  * #if <ref type="macro" id="OS_API_VERSION">OS_API_VERSION</ref>
+  * (GS_API_OPENSTEP, GS_API_LATEST)<br />
+  * denotes code present from the initial OPENSTEP version onwards.
+  */
+ #define	GS_API_OPENSTEP	 40000
+ 
+ /**
+  * The version number of the first MacOS-X implementation.<br />
+  * eg.<br />
+  * #if <ref type="macro" id="OS_API_VERSION">OS_API_VERSION</ref>
+  * (GS_API_MACOSX, GS_API_LATEST)<br />
+  * denotes code present from the initial MacOS-X version onwards.
+  */
+ #define	GS_API_MACOSX	100000
+ 
+ /* Allow OSX code comparing MAC_OS_X_VERSION_MAX_ALLOWED with a specific
+  * version to see if that version is allowed, to always have it allowed
+  * on GNUstep.
+  */
+ #ifndef	MAC_OS_X_VERSION_MAX_ALLOWED
+ #define	MAC_OS_X_VERSION_MAX_ALLOWED    GS_API_LATEST
+ #endif  /* MAC_OS_X_VERSION_MAX_ALLOWED */
+ 
+ 
+ #if	defined(GNUSTEP_BASE_INTERNAL)
+ #include "GNUstepBase/GSConfig.h"
+ #else
+ #include "GSConfig.h"
+ #endif
+ 
+ 
+ #if defined(__GNUC__) && defined(__GNUC_MINOR__) && !defined(__clang__)
+ #  define GS_GCC_MINREQ(maj, min) \
+   ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+ #else
+ #  define GS_GCC_MINREQ(maj, min) 0
+ #endif
+ 
+ #if defined(__clang__)
+ #  define GS_CLANG_MINREQ(maj, min) \
+   ((__clang_major__ << 16) + __clang_minor__ >= ((maj) << 16) + (min))
+ #else
+ #  define GS_CLANG_MINREQ(maj, min) 0
+ #endif
+ 
+ /* Attribute definitions for attributes which may or may not be supported
+  * depending on the compiler being used.
+  * NB we currently expect gcc to be version 4 or later.
+  *
+  * The definition should be of the form GS_XXX_CONTEXT where XXX is the
+  * name of the attribute and CONTEXT is one of FUNC, METH, or IVAR
+  * depending on where the attribute can be applied.
+  */
+ 
+ #if defined(__clang__) || GS_GCC_MINREQ(3,1)
+ #  define GS_DEPRECATED_FUNC __attribute__ ((deprecated))
+ #else
+ #  define GS_DEPRECATED_FUNC
+ #endif
+ 
+ #define GS_UNUSED_ARG __attribute__((unused))
+ 
+ #define GS_UNUSED_FUNC __attribute__((unused))
+ 
+ // FIXME ... what version of gcc?
+ #if __clang__
+ #  define GS_UNUSED_IVAR __attribute__((unused))
+ #else
+ #  define GS_UNUSED_IVAR 
+ #endif
+ 
+ 
+ 
+ #ifndef __has_feature
+ #define __has_feature(x) 0
+ #endif
+ 
+ /* The following is for deciding whether private instance variables
+  * should be visible ... if we are building with a compiler which
+  * does not define __has_feature then we know we don't have non-fragile
+  * ivar support.
+  * In the header we bracket instance variable declarations in a
+  * '#if	GS_EXPOSE(classname) ... #endif' sequence, so that the variables
+  * will not be visible to code which uses the library.
+  * In the source file we define EXPOSE_classname_IVARS to be 1
+  * before including the header, so that the ivars are always available
+  * in the class source itsself
+  */
+ 
+ #if	GS_MIXEDABI
+ #  undef	GS_NONFRAGILE
+ #  define	GS_NONFRAGILE	0	/* Mixed is treated as fragile */
+ #else
+ #  if (__has_feature(objc_nonfragile_abi))
+ #    if	!GS_NONFRAGILE
+ #      if	defined(GNUSTEP_BASE_INTERNAL)
+ #        error "You are building gnustep-base using the objc-nonfragile-abi but your gnustep-base was not configured to use it."
+ #      endif
+ #    endif
+ #  else
+ #    if	GS_NONFRAGILE
+ #      error "Your gnustep-base was configured for the objc-nonfragile-abi but you are not using it now."
+ #    endif
+ #  endif
+ #endif
+ 
+ #define	GS_EXPOSE(X)	(!GS_NONFRAGILE || defined(EXPOSE_##X##_IVARS))
+ 
+ /* Static analyser macros: Provide annotations to help the analyser */
+ #ifdef __clang__
+ #  define GS_NORETURN_METHOD __attribute__((__noreturn__))
+ #else
+ #  define GS_NORETURN_METHOD
+ #endif
+ 
+ #ifndef NS_RETURNS_RETAINED
+ #  if __has_feature(attribute_ns_returns_retained)
+ #    define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
+ #  else
+ #    define NS_RETURNS_RETAINED
+ #  endif
+ #endif
+ 
+ #ifndef NS_RETURNS_NOT_RETAINED
+ #  if __has_feature(attribute_ns_returns_not_retained)
+ #    define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
+ #  else
+ #    define NS_RETURNS_NOT_RETAINED
+ #  endif
+ #endif
+ 
+ #ifndef NS_CONSUMED
+ #  if __has_feature(attribute_ns_consumed)
+ #    define NS_CONSUMED __attribute__((ns_consumed))
+ #  else
+ #    define NS_CONSUMED
+ #  endif
+ #endif
+ 
+ 
+ #ifndef NS_CONSUMES_SELF
+ #  if __has_feature(attribute_ns_consumes_self)
+ #    define NS_CONSUMES_SELF __attribute__((ns_consumes_self))
+ #  else
+ #    define NS_CONSUMES_SELF
+ #  endif
+ #endif
+ 
+ #if defined(__clang__) && defined(__OBJC__)
+ static inline void gs_consumed(id NS_CONSUMED o) GS_UNUSED_FUNC;
+ static inline void gs_consumed(id NS_CONSUMED GS_UNUSED_ARG o) { return; }
+ #define	GS_CONSUMED(O)	gs_consumed(O);
+ #else
+ #define	GS_CONSUMED(O)
+ #endif
+ 
+ /* Include the appropriate header for ObjC2 blocks support if it is in use.
+  *
+  * FIXME: "OBJC2RUNTIME" is set to "1" if the runtime supports the ObjC2
+  * runtime API, which is unrelated to whether the compiler has blocks
+  * support or not.
+  */
+ #if __has_feature(blocks)
+ #  if	OBJC2RUNTIME
+ #    if defined(__APPLE__)
+ #      include <Block.h>
+ #    else
+ #      include <objc/blocks_runtime.h>
+ #    endif
+ #  else
+ #    include <ObjectiveC2/blocks_runtime.h>
+ #  endif
+ #endif
+ 
+ /* Attribute definition for root classes, annotates the interface declaration
+  * of the class.
+  */
+ #ifndef GS_ROOT_CLASS
+ #  if GS_HAVE_OBJC_ROOT_CLASS_ATTR || __has_feature(attribute_objc_root_class)
+ #    define GS_ROOT_CLASS __attribute__((objc_root_class))
+ #  else
+ #    define GS_ROOT_CLASS
+ #  endif
+ #endif
+ 
+ 
+ 
+ #if	defined(GNUSTEP_WITH_DLL)
+ 
+ #if BUILD_libgnustep_base_DLL
+ #
+ # if defined(__MINGW__)
+   /* On Mingw, the compiler will export all symbols automatically, so
+    * __declspec(dllexport) is not needed.
+    */
+ #  define GS_EXPORT  extern
+ #  define GS_DECLARE
+ # else
+ #  define GS_EXPORT  __declspec(dllexport)
+ #  define GS_DECLARE __declspec(dllexport)
+ # endif
+ #else
+ #  define GS_EXPORT  extern __declspec(dllimport)
+ #  define GS_DECLARE __declspec(dllimport)
+ #endif
+ 
+ #else /* GNUSTEP_WITH[OUT]_DLL */
+ 
+ #  define GS_EXPORT extern
+ #  define GS_DECLARE
+ 
+ #endif
+ 
+ 
+ /* Attribute macros compatible with Apple.
+  */
+ 
+ #ifndef NS_FORMAT_ARGUMENT
+ #if defined(__clang__) || GS_GCC_MINREQ(4,2)
+ #  define NS_FORMAT_ARGUMENT(A) __attribute__((format_arg(A)))
+ #else
+ #  define NS_FORMAT_ARGUMENT(F,A) 
+ #endif
+ #endif
+ 
+ // FIXME ... what version of gcc?
+ #ifndef NS_FORMAT_FUNCTION
+ #if __clang__
+ #  define NS_FORMAT_FUNCTION(F,A) __attribute__((format(__NSString__, F, A)))
+ #else
+ #  define NS_FORMAT_FUNCTION(F,A) 
+ #endif
+ #endif
+ 
+ #ifndef NS_REQUIRES_NIL_TERMINATION
+ #define NS_REQUIRES_NIL_TERMINATION __attribute__((sentinel))
+ #endif
+ 
+ // FIXME ... what exact version of clang and gcc?
+ #ifndef UNAVAILABLE_ATTRIBUTE
+ #if defined(__clang__) || GS_GCC_MINREQ(4,0)
+ #  define UNAVAILABLE_ATTRIBUTE __attribute__((unavailable))
+ #else
+ #  define UNAVAILABLE_ATTRIBUTE
+ #endif
+ #endif
+ 
+ /* Check if compiler supports @optional in protocols
+  */
+ #if defined(__clang__) || GS_GCC_MINREQ(4,6)
+ #  define GS_PROTOCOLS_HAVE_OPTIONAL 1
+ #else
+ #  define GS_PROTOCOLS_HAVE_OPTIONAL 0
+ #endif
+ 
+ /* Check if compiler supports declared properties
+  */
+ #if defined(__clang__) || GS_GCC_MINREQ(4,6)
+ #  define GS_HAS_DECLARED_PROPERTIES 1
+ #else
+ #  define GS_HAS_DECLARED_PROPERTIES 0
+ #endif
+ 
+ #endif /* __GNUSTEP_GSVERSIONMACROS_H_INCLUDED_ */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,78 ----
+ /** Declaration of extension methods for base additions
+ 
+    Copyright (C) 2003-2010 Free Software Foundation, Inc.
+ 
+    Written by:  Richard Frith-Macdonald <rfm@gnu.org>
+    and:         Adam Fedor <fedor@gnu.org>
+ 
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+ 
+ */
+ 
+ #ifndef	INCLUDED_NSArray_GNUstepBase_h
+ #define	INCLUDED_NSArray_GNUstepBase_h
+ 
+ #import "../GNUstepBase/GSVersionMacros.h"
+ #import "../Foundation/NSArray.h"
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ #if	OS_API_VERSION(GS_API_NONE,GS_API_LATEST)
+ 
+ @interface NSArray (GNUstepBase)
+ 
+ /** <p>Method for working with sorted arrays - use a binary chop
+  * to determine the insertion location for an object.  If equal objects
+  * already exist in the array, they will be located immediately before
+  * the insertion position.
+  * </p>
+  * <p>The comparator function takes two items as arguments, the first is the
+  * item to be added, the second is the item already in the array.
+  * The function should return NSOrderedAscending if the item to be
+  * added is 'less than' the item in the array, NSOrderedDescending
+  * if it is greater, and NSOrderedSame if it is equal.
+  * </p>
+  */
+ - (NSUInteger) insertionPosition: (id)item
+ 		   usingFunction: (NSComparisonResult (*)(id, id, void *))sorter
+ 		         context: (void *)context;
+ 
+ /* <p>Method for working with sorted arrays - use a binary chop
+  * to determine the insertion location for an object.  If equal objects
+  * already exist in the array, they will be located immediately before
+  * the insertion position.
+  * </p> 
+  * <p>The selector identifies a method returning NSOrderedAscending if
+  * the receiver is 'less than' the argument, and NSOrderedDescending if
+  * it is greate.
+  * </p>
+  */
+ - (NSUInteger) insertionPosition: (id)item
+ 		   usingSelector: (SEL)comp;
+ @end
+ 
+ #endif	/* OS_API_VERSION */
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #endif	/* INCLUDED_NSArray_GNUstepBase_h */
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,57 ----
+ /** Declaration of extension methods for base additions
+ 
+    Copyright (C) 2003-2010 Free Software Foundation, Inc.
+ 
+    Written by:  Richard Frith-Macdonald <rfm@gnu.org>
+    and:         Adam Fedor <fedor@gnu.org>
+ 
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+ 
+ */
+ 
+ #ifndef	INCLUDED_NSMutableString_GNUstepBase_h
+ #define	INCLUDED_NSMutableString_GNUstepBase_h
+ 
+ #import "GSVersionMacros.h"
+ #import "../Foundation/NSString.h"
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ #if	OS_API_VERSION(GS_API_NONE,GS_API_LATEST)
+ 
+ @interface NSMutableString (GNUstepBase)
+ - (void) deleteSuffix: (NSString*)suffix;
+ - (void) deletePrefix: (NSString*)prefix;
+ - (NSString*) immutableProxy;
+ - (void) replaceString: (NSString*)replace
+             withString: (NSString*)by;
+ - (void) trimLeadSpaces;
+ - (void) trimTailSpaces;
+ - (void) trimSpaces;
+ @end
+ 
+ #endif	/* OS_API_VERSION */
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #endif	/* INCLUDED_NSMutableString_GNUstepBase_h */
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,56 ----
+ /** Declaration of extension methods for base additions
+ 
+    Copyright (C) 2003-2010 Free Software Foundation, Inc.
+ 
+    Written by:  Richard Frith-Macdonald <rfm@gnu.org>
+    and:         Adam Fedor <fedor@gnu.org>
+ 
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+ 
+ */
+ 
+ #ifndef	INCLUDED_NSNumber_GNUstepBase_h
+ #define	INCLUDED_NSNumber_GNUstepBase_h
+ 
+ #import "GSVersionMacros.h"
+ #import "../Foundation/NSValue.h"
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ #if	OS_API_VERSION(GS_API_NONE,GS_API_LATEST)
+ 
+ @interface NSNumber(GNUstepBase)
+ /**
+  * Parses string as a <code>double</code>, <code>int</code>, or <code>unsigned
+  * int</code> depending on what characters are present.  Uses
+  * <code>atof</code> and <code>atoi</code> which don't report errors, so be
+  * careful if the string might contain an invalid value.
+  */
+ + (NSValue*) valueFromString: (NSString *)string;
+ @end
+ 
+ #endif	/* OS_API_VERSION */
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #endif	/* INCLUDED_NSNumber_GNUstepBase_h */
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,242 ----
+ /** Declaration of extension methods for base additions
+ 
+    Copyright (C) 2003-2010 Free Software Foundation, Inc.
+ 
+    Written by:  Richard Frith-Macdonald <rfm@gnu.org>
+    and:         Adam Fedor <fedor@gnu.org>
+ 
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+ 
+ */
+ 
+ #ifndef	INCLUDED_NSObject_GNUstepBase_h
+ #define	INCLUDED_NSObject_GNUstepBase_h
+ 
+ #import "GSVersionMacros.h"
+ #import "../Foundation/NSObject.h"
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ #if	OS_API_VERSION(GS_API_NONE,GS_API_LATEST)
+ 
+ @class  NSHashTable;
+ 
+ @interface NSObject (GNUstepBase)
+ 
+ /**
+   WARNING: The -compare: method for NSObject is deprecated
+            due to subclasses declaring the same selector with 
+ 	   conflicting signatures.
+            Comparision of arbitrary objects is not just meaningless
+            but also dangerous as most concrete implementations
+            expect comparable objects as arguments often accessing
+ 	   instance variables directly.
+ 	   This method will be removed in a future release.
+ */
+ - (NSComparisonResult) compare: (id)anObject;
+ 
+ /** For backward compatibility only ... use class_isMetaClass() on the
+  * class of the receiver instead.
+  */
+ - (BOOL) isInstance;
+ 
+ /** DEPRECATED ... do not use.
+  * Transmutes the receiver into an immutable version of the same object
+  * and returns the result.<br />
+  * If the receiver is not a mutable object or cannot be simply transmuted,
+  * then this method either returns the receiver unchanged or,
+  * if the force flag is set to YES, returns an autoreleased copy of the
+  * receiver.<br />
+  * Mutable classes should override this default implementation.<br />
+  * This method is used in methods which are declared to return immutable
+  * objects (eg. an NSArray), but which create and build mutable ones
+  * internally.
+  */
+ - (id) makeImmutableCopyOnFail: (BOOL)force;
+ 
+ /** Transmutes the receiver into an immutable version of the same object.
+  * Returns YES if the receiver has become immutable, NO otherwise.<br />
+  * The default implementation returns NO.<br />
+  * Mutable classes which have an immutable counterpart they can efficiently
+  * change into, should override to transmute themselves and return YES.<br />
+  * Immutable classes should override this to simply return YES with no
+  * further action.<br />
+  * This method is used in methods which are declared to return immutable
+  * objects (eg. an NSArray), but which create and build mutable ones
+  * internally.
+  */
+ - (BOOL) makeImmutable;
+ 
+ /**
+  * Message sent when an implementation wants to explicitly exclude a method
+  * (but cannot due to compiler constraint), and wants to make sure it is not
+  * called by mistake.  Default implementation raises an exception at runtime.
+  */
+ - (id) notImplemented: (SEL)aSel GS_NORETURN_METHOD;
+ 
+ /**
+  * Message sent when an implementation wants to explicitly require a subclass
+  * to implement a method (but cannot at compile time since there is no
+  * <code>abstract</code> keyword in Objective-C).  Default implementation
+  * raises an exception at runtime to alert developer that he/she forgot to
+  * override a method.
+  */
+ - (id) subclassResponsibility: (SEL)aSel GS_NORETURN_METHOD;
+ 
+ /**
+  * Message sent when an implementation wants to explicitly exclude a method
+  * (but cannot due to compiler constraint) and forbid that subclasses
+  * implement it.  Default implementation raises an exception at runtime.  If a
+  * subclass <em>does</em> implement this method, however, the superclass's
+  * implementation will not be called, so this is not a perfect mechanism.
+  */
+ - (id) shouldNotImplement: (SEL)aSel GS_NORETURN_METHOD;
+ 
+ @end
+ 
+ /** This is an informal protocol ... classes may implement the method to
+  * report how much memory is used by the instance and any objects it acts
+  * as a container for.
+  */
+ @interface      NSObject(MemoryFootprint)
+ /* This method returns the memory usage of the receiver, excluding any
+  * objects already present in the exclude table.<br />
+  * The argument is a hash table configured to hold non-retained pointer
+  * objects and is used to inform the receiver that its size should not
+  * be counted again if it's already in the table.<br />
+  * The NSObject implementation returns zero if the receiver is in the
+  * table, but otherwise adds itself to the table and returns its memory
+  * footprint (the sum of all of its instance variables, but not any
+  * memory pointed to by those variables).<br />
+  * Subclasses should override this method by calling the superclass
+  * implementation, and either return the result (if it was zero) or
+  * return that value plus the sizes of any memory owned by the receiver
+  * (eg found by calling the same method on objects pointed to by the
+  * receiver's instance variables).
+  */
+ - (NSUInteger) sizeInBytesExcluding: (NSHashTable*)exclude;
+ @end
+ 
+ /** This is an informal protocol ... classes may implement the method and
+  * register themselves to have it called on process exit.
+  */
+ @interface NSObject(GSAtExit)
+ /** This method is called on exit for any class which implements it and which
+  * has called +registerAtExit to register it to be called.<br />
+  * The order in which methods for different classes is called is the reverse
+  * of the order in which the classes were registered, but it's best to assume
+  * the method can not depend on any other class being in a usable state
+  * at the point when the method is called (rather like +load).<br />
+  * Typical use would be to release memory occupied by class data structures
+  * so that memory usage analysis software will not think the memory has
+  * been leaked.
+  */
+ + (void) atExit;
+ @end
+ 
+ /** Category for methods handling leaked memory cleanup on exit of process
+  * (for use when debugging memory leaks).<br />
+  * You enable this by calling the +setShouldCleanUp: method (done implicitly
+  * by gnustep-base if the GNUSTEP_SHOULD_CLEAN_UP environment variable is
+  * set to YES).<br />
+  * Your class then has two options for performing cleanup when the process
+  * ends:
+  * <p>1. Use the +leak: method to register objects which are simply to be 
+  * retained until the process ends, and then either ignored or released
+  * depending on the cleanup setting in force.  This mechanism is simple
+  * and should be sufficient for many classes.
+  * </p>
+  * <p>2. Implement a +atExit method to be run when the process ends and,
+  * within your +initialize implementation, call +shouldCleanUp to determine
+  * whether cleanup should be done, and if it returns YES then call
+  * +registerAtExit to have your +atExit method called when the process
+  * terminates.
+  * </p>
+  * <p>The order in which 'leaked' objects are released and +atExit methods
+  * are called on process exist is the reverse of the order in which they
+  * werse set up suing this API.
+  * </p>
+  */
+ @interface NSObject(GSCleanup)
+ 
+ 
+ /** This method simply retains its argument so that it will never be
+  * deallocated during normal operation, but keeps track of it so that
+  * it is released during process exit if cleanup is enabled.<br />
+  * Returns its argument.
+  */
+ + (id) NS_RETURNS_RETAINED leak: (id)anObject;
+ 
+ /** This method retains the object at *anAddress so that it will never be
+  * deallocated during normal operation, but keeps track of the address
+  * so that the object is released and the address is zeroed during process
+  * exit if cleanup is enabled.<br />
+  * Returns the object at *anAddress.
+  */
+ + (id) NS_RETURNS_RETAINED leakAt: (id*)anAddress;
+ 
+ /** Sets the receiver to have its +atExit method called at the point when
+  * the process terminates.<br />
+  * Returns YES on success and NO on failure (if the class does not implement
+  * the method or if it is already registered to call it).<br />
+  * Implemented as a call to +registerAtExit: with the selector for the +atExit
+  * method as its argument.
+  */
+ + (BOOL) registerAtExit;
+ 
+ /** Sets the receiver to have the specified  method called at the point when
+  * the process terminates.<br />
+  * Returns YES on success and NO on failure (if the class does not implement
+  * the method ir if it is already registered to call it).
+  */
+ + (BOOL) registerAtExit: (SEL)aSelector;
+ 
+ /** Specifies the default cleanup behavior on process exit ... the value
+  * returned by the NSObject implementation of the +shouldClanUp method.<br />
+  * Calling this method with a YES argument implicitly calls the +enableAtExit
+  * method as well.<br />
+  * The GNUstep Base library calls this method with the value obtained from
+  * the GNUSTEP_SHOULD_CLEAN_UP environment variable when NSObject is
+  * initialised.
+  */
+ + (void) setShouldCleanUp: (BOOL)aFlag;
+ 
+ /** Returns a flag indicating whether the receiver should clean up
+  * its data structures etc at process exit.<br />
+  * The NSObject implementation returns the value set by the +setShouldCleanUp:
+  * method but subclasses may override this.
+  */
+ + (BOOL) shouldCleanUp;
+ 
+ @end
+ 
+ /* Macro to take an autoreleased object and either make it immutable or
+  * create an autoreleased copy of the original.
+  */
+ #define GS_IMMUTABLE(O) ([O makeImmutable] == YES ? O : AUTORELEASE([O copy]))
+ 
+ #endif	/* OS_API_VERSION */
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #endif	/* INCLUDED_NSObject_GNUstepBase_h */
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h
*** gcc-8.3.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,105 ----
+ /** Declaration of extension methods for base additions
+ 
+    Copyright (C) 2003-2010 Free Software Foundation, Inc.
+ 
+    Written by:  Richard Frith-Macdonald <rfm@gnu.org>
+    and:         Adam Fedor <fedor@gnu.org>
+ 
+    This file is part of the GNUstep Base Library.
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, 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
+    Library General Public License for more details.
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02111 USA.
+ 
+ */
+ 
+ #ifndef	INCLUDED_NSString_GNUstepBase_h
+ #define	INCLUDED_NSString_GNUstepBase_h
+ 
+ #import "GSVersionMacros.h"
+ #import "../Foundation/NSString.h"
+ 
+ #if	defined(__cplusplus)
+ extern "C" {
+ #endif
+ 
+ #if	OS_API_VERSION(GS_API_NONE,GS_API_LATEST)
+ 
+ /**
+  * Provides some additional (non-standard) utility methods.
+  */
+ @interface NSString (GNUstepBase)
+ 
+ /**
+  * Alternate way to invoke <code>stringWithFormat</code> if you have or wish
+  * to build an explicit <code>va_list</code> structure.
+  */
+ + (id) stringWithFormat: (NSString*)format
+ 	      arguments: (va_list)argList NS_FORMAT_FUNCTION(1,0);
+ 
+ /**
+  * Returns a string formed by removing the prefix string from the
+  * receiver.  Raises an exception if the prefix is not present.
+  */
+ - (NSString*) stringByDeletingPrefix: (NSString*)prefix;
+ 
+ /**
+  * Returns a string formed by removing the suffix string from the
+  * receiver.  Raises an exception if the suffix is not present.
+  */
+ - (NSString*) stringByDeletingSuffix: (NSString*)suffix;
+ 
+ /**
+  * Returns a string formed by removing leading white space from the
+  * receiver.
+  */
+ - (NSString*) stringByTrimmingLeadSpaces;
+ 
+ /**
+  * Returns a string formed by removing trailing white space from the
+  * receiver.
+  */
+ - (NSString*) stringByTrimmingTailSpaces;
+ 
+ /**
+  * Returns a string formed by removing both leading and trailing
+  * white space from the receiver.
+  */
+ - (NSString*) stringByTrimmingSpaces;
+ 
+ /**
+  * Returns a string in which any (and all) occurrences of
+  * replace in the receiver have been replaced with by.
+  * Returns the receiver if replace
+  * does not occur within the receiver.  NB. an empty string is
+  * not considered to exist within the receiver.
+  */
+ - (NSString*) stringByReplacingString: (NSString*)replace
+ 			   withString: (NSString*)by;
+ 
+ /**
+  * An obsolete name for -substringWithRange: ... deprecated.
+  */
+ - (NSString*) substringFromRange: (NSRange)aRange;
+ 
+ @end
+ 
+ #endif	/* OS_API_VERSION */
+ 
+ #if	defined(__cplusplus)
+ }
+ #endif
+ 
+ #endif	/* INCLUDED_NSString_GNUstepBase_h */
+ 
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/encode-7-next-64bit.m gcc-8.4.0/gcc/testsuite/objc.dg/encode-7-next-64bit.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/encode-7-next-64bit.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/encode-7-next-64bit.m	Wed Mar  4 08:30:02 2020
***************
*** 9,18 ****
  #include <stdbool.h>
  #include <string.h>
  #include <stdlib.h>
! #include <Foundation/NSObject.h>
  #include "../objc-obj-c++-shared/runtime.h"
  
- extern int printf(char *,...);
  void CHECK_IF(const char *s1, const char *s2)
  {
   if (strcmp(s1,s2) != 0) {
--- 9,19 ----
  #include <stdbool.h>
  #include <string.h>
  #include <stdlib.h>
! #include <stdio.h>
! #include "../objc-obj-c++-shared/F-NSObject.h"
! #include "../objc-obj-c++-shared/CF-CFString.h"
  #include "../objc-obj-c++-shared/runtime.h"
  
  void CHECK_IF(const char *s1, const char *s2)
  {
   if (strcmp(s1,s2) != 0) {
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/headers.m gcc-8.4.0/gcc/testsuite/objc.dg/headers.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/headers.m	Mon Jun  6 22:46:58 2011
--- gcc-8.4.0/gcc/testsuite/objc.dg/headers.m	Wed Mar  4 08:30:02 2020
***************
*** 2,7 ****
--- 2,8 ----
  // test in libstdc++-v3).  Author: Loren J. Rittle <ljrittle@acm.org>.
  // { dg-options "-Wall -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wshadow" }
  // { dg-do compile }
+ /* { dg-xfail-if "PR90709" { *-*-darwin1[4-9]* } { "-fnext-runtime" } { "" } } */
  
  #ifdef __NEXT_RUNTIME__
  #include <Foundation/NSString.h>
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/image-info.m gcc-8.4.0/gcc/testsuite/objc.dg/image-info.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/image-info.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/image-info.m	Wed Mar  4 08:30:02 2020
***************
*** 7,13 ****
  /* { dg-skip-if "NeXT-only" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-freplace-objc-classes" } */
  
! #include <Foundation/NSObject.h>
  
  extern void abort(void);
  #define CHECK_IF(expr) if(!(expr)) abort();
--- 7,13 ----
  /* { dg-skip-if "NeXT-only" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-freplace-objc-classes" } */
  
! #include "../objc-obj-c++-shared/F-NSObject.h"
  
  extern void abort(void);
  #define CHECK_IF(expr) if(!(expr)) abort();
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/instancetype-0.m gcc-8.4.0/gcc/testsuite/objc.dg/instancetype-0.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/instancetype-0.m	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/gcc/testsuite/objc.dg/instancetype-0.m	Wed Mar  4 08:30:02 2020
***************
*** 0 ****
--- 1,30 ----
+ /* Contributed by Iain Sandoe <iain@sandoe.co.uk>, May 2019.  */
+ /* { dg-do compile } */
+ 
+ /* Basic check of parsing instancetype.  */
+ 
+ extern id class_createInstance (id, int);
+ extern id class_getSuperclass (id);
+ 
+ @interface MyObject
+ {
+   Class isa;
+ }
+ + (instancetype)alloc;
+ - (instancetype)init;
+ + (instancetype)initialize;
+ + (instancetype)factoryMethodA;
+ + (id)factoryMethodB;
+ + (Class) class;
+ + (Class) superclass;
+ @end
+ 
+ @implementation MyObject
+ + (instancetype)alloc { return class_createInstance (self, 0); }
+ - (instancetype)init  { return self; }
+ + (instancetype)initialize { return self; }
+ + (instancetype)factoryMethodA { return [[[self class] alloc] init]; }
+ + (id)factoryMethodB { return [[[self class] alloc] init]; }
+ + (Class) class { return self; }
+ + (Class) superclass { return class_getSuperclass (self); }
+ @end
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/isa-field-1.m gcc-8.4.0/gcc/testsuite/objc.dg/isa-field-1.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/isa-field-1.m	Mon Jun  6 22:46:58 2011
--- gcc-8.4.0/gcc/testsuite/objc.dg/isa-field-1.m	Wed Mar  4 08:30:02 2020
***************
*** 1,5 ****
--- 1,7 ----
  /* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects.  */
  /* { dg-do compile } */
+ /* The use of isa is deprecated, but we still want to test that it works. */
+ /* { dg-additional-options "-Wno-deprecated-declarations" } */
  
  #include "../objc-obj-c++-shared/TestsuiteObject.h"
  #include "../objc-obj-c++-shared/runtime.h"
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/method-6.m gcc-8.4.0/gcc/testsuite/objc.dg/method-6.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/method-6.m	Fri Apr 28 21:24:00 2017
--- gcc-8.4.0/gcc/testsuite/objc.dg/method-6.m	Wed Mar  4 08:30:02 2020
***************
*** 5,16 ****
  /* { dg-options "-Wstrict-selector-match" } */
  
  #ifdef __NEXT_RUNTIME__
! #include <Foundation/NSObject.h>
! #define OBJECT NSObject
  #else
! #include <objc/Object.h>
! #include <objc/Protocol.h>
! #define OBJECT Object
  #endif
  
  @interface Base
--- 5,16 ----
  /* { dg-options "-Wstrict-selector-match" } */
  
  #ifdef __NEXT_RUNTIME__
! # include "../objc-obj-c++-shared/F-NSObject.h"
! # define OBJECT NSObject
  #else
! # include <objc/Object.h>
! # include <objc/Protocol.h>
! # define OBJECT Object
  #endif
  
  @interface Base
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/no-extra-load.m gcc-8.4.0/gcc/testsuite/objc.dg/no-extra-load.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/no-extra-load.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/no-extra-load.m	Wed Mar  4 08:30:02 2020
***************
*** 1,7 ****
  /* { dg-do compile { target *-*-darwin* } } */
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  
! #include <Foundation/NSObject.h>
  main() { [NSObject new]; }
  
  /* { dg-final { scan-assembler-not "L_objc_msgSend\\\$non_lazy_ptr" } } */
--- 1,7 ----
  /* { dg-do compile { target *-*-darwin* } } */
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  
! #include "../objc-obj-c++-shared/F-NSObject.h"
  main() { [NSObject new]; }
  
  /* { dg-final { scan-assembler-not "L_objc_msgSend\\\$non_lazy_ptr" } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/objc-foreach-4.m gcc-8.4.0/gcc/testsuite/objc.dg/objc-foreach-4.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/objc-foreach-4.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/objc-foreach-4.m	Wed Mar  4 08:30:02 2020
***************
*** 5,13 ****
  /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */
  /* { dg-additional-options "-framework Foundation" { target { *-*-darwin* } } } */
  
! #include <Foundation/NSString.h>
! #include <Foundation/NSAutoreleasePool.h>
! #include <Foundation/NSArray.h>
  
  // gcc -o foo foo.m -framework Foundation
  
--- 5,13 ----
  /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */
  /* { dg-additional-options "-framework Foundation" { target { *-*-darwin* } } } */
  
! #include "../objc-obj-c++-shared/F-NSString.h"
! #include "../objc-obj-c++-shared/F-NSAutoreleasePool.h"
! #include "../objc-obj-c++-shared/F-NSArray.h"
  
  // gcc -o foo foo.m -framework Foundation
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/objc-foreach-5.m gcc-8.4.0/gcc/testsuite/objc.dg/objc-foreach-5.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/objc-foreach-5.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/objc-foreach-5.m	Wed Mar  4 08:30:02 2020
***************
*** 4,11 ****
  /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */
  /* { dg-additional-options "-framework Foundation" { target { *-*-darwin* } } } */
  
! #include <Foundation/NSArray.h>
! #include <Foundation/NSAutoreleasePool.h>
  
  NSArray * createTestVictim(unsigned capacity) {
      NSMutableArray * arr = [[NSMutableArray alloc] initWithCapacity:capacity];
--- 4,12 ----
  /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */
  /* { dg-additional-options "-framework Foundation" { target { *-*-darwin* } } } */
  
! #include "../objc-obj-c++-shared/F-NSArray.h"
! #include "../objc-obj-c++-shared/F-NSAutoreleasePool.h"
! #include "../objc-obj-c++-shared/F-NSValue.h"
  
  NSArray * createTestVictim(unsigned capacity) {
      NSMutableArray * arr = [[NSMutableArray alloc] initWithCapacity:capacity];
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/objc-gc-4.m gcc-8.4.0/gcc/testsuite/objc.dg/objc-gc-4.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/objc-gc-4.m	Mon Jun  6 22:46:58 2011
--- gcc-8.4.0/gcc/testsuite/objc.dg/objc-gc-4.m	Wed Mar  4 08:30:02 2020
***************
*** 3,8 ****
--- 3,9 ----
  /* Contributed by Ziemowit Laski <zlaski@apple.com>  */
  
  /* { dg-do compile } */
+ /* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-8]* } { "-fnext-runtime" } { "" } } */
  /* { dg-options "-fobjc-gc" } */
  /* { dg-prune-output "cc1obj: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/proto-lossage-7.m gcc-8.4.0/gcc/testsuite/objc.dg/proto-lossage-7.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/proto-lossage-7.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/proto-lossage-7.m	Wed Mar  4 08:30:02 2020
***************
*** 3,9 ****
  /* { dg-do compile } */
  
  #ifdef __NEXT_RUNTIME__
! #include <Foundation/NSObject.h>
  #define OBJECT NSObject
  #else
  #include <objc/Object.h>
--- 3,9 ----
  /* { dg-do compile } */
  
  #ifdef __NEXT_RUNTIME__
! #include "../objc-obj-c++-shared/F-NSObject.h"
  #define OBJECT NSObject
  #else
  #include <objc/Object.h>
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/strings/const-cfstring-2.m gcc-8.4.0/gcc/testsuite/objc.dg/strings/const-cfstring-2.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/strings/const-cfstring-2.m	Fri Oct 22 10:30:29 2010
--- gcc-8.4.0/gcc/testsuite/objc.dg/strings/const-cfstring-2.m	Wed Mar  4 08:30:02 2020
***************
*** 8,15 ****
  /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-mconstant-cfstrings -Wnonportable-cfstrings" } */
  
! #import <Foundation/NSString.h>
! #import <CoreFoundation/CFString.h>
  
  #ifndef __CONSTANT_CFSTRINGS__
  #error The -fconstant-cfstrings option is not functioning properly
--- 8,15 ----
  /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-mconstant-cfstrings -Wnonportable-cfstrings" } */
  
! #include "../../objc-obj-c++-shared/F-NSString.h"
! #include "../../objc-obj-c++-shared/CF-CFString.h"
  
  #ifndef __CONSTANT_CFSTRINGS__
  #error The -fconstant-cfstrings option is not functioning properly
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/strings/const-cfstring-5.m gcc-8.4.0/gcc/testsuite/objc.dg/strings/const-cfstring-5.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/strings/const-cfstring-5.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/strings/const-cfstring-5.m	Wed Mar  4 08:30:02 2020
***************
*** 6,12 ****
  /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-mconstant-cfstrings" } */
  
! #include <Foundation/NSObject.h>
  
  @interface Foo: NSObject {
    char *cString;
--- 6,12 ----
  /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-mconstant-cfstrings" } */
  
! #include "../../objc-obj-c++-shared/F-NSObject.h"
  
  @interface Foo: NSObject {
    char *cString;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/strings/const-str-12b.m gcc-8.4.0/gcc/testsuite/objc.dg/strings/const-str-12b.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/strings/const-str-12b.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/strings/const-str-12b.m	Wed Mar  4 08:30:02 2020
***************
*** 6,16 ****
  /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */
  
  #ifdef __NEXT_RUNTIME__
! #include <Foundation/NSObject.h>
! #define OBJECT NSObject
  #else
! #include <objc/Object.h>
! #define OBJECT Object
  #endif
  #include "../../objc-obj-c++-shared/objc-test-suite-types.h"
  
--- 6,16 ----
  /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */
  
  #ifdef __NEXT_RUNTIME__
! # include "../../objc-obj-c++-shared/F-NSObject.h"
! # define OBJECT NSObject
  #else
! # include <objc/Object.h>
! # define OBJECT Object
  #endif
  #include "../../objc-obj-c++-shared/objc-test-suite-types.h"
  
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/stubify-1.m gcc-8.4.0/gcc/testsuite/objc.dg/stubify-1.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/stubify-1.m	Tue Apr 27 00:08:28 2010
--- gcc-8.4.0/gcc/testsuite/objc.dg/stubify-1.m	Wed Mar  4 08:30:02 2020
***************
*** 4,10 ****
  /* { dg-do compile { target *-*-darwin* } } */
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-require-effective-target ilp32 } */
! /* { dg-options "-Os -mdynamic-no-pic -mmacosx-version-min=10.4" } */
  
  typedef struct objc_object { } *id ;
  int x = 41 ;
--- 4,10 ----
  /* { dg-do compile { target *-*-darwin* } } */
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-require-effective-target ilp32 } */
! /* { dg-options "-Os -mdynamic-no-pic -mmacosx-version-min=10.4 -msymbol-stubs" } */
  
  typedef struct objc_object { } *id ;
  int x = 41 ;
*************** extern int bogonic (int, int, int) ;
*** 28,35 ****
  }
  @end
  
! /* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_objc_msgSend\n" } } */
! /* { dg-final { scan-assembler     "\(bl|call\)\[ \t\]+L_objc_msgSend\\\$stub\n" } } */
! /* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_bogonic\n" } } */
! /* { dg-final { scan-assembler     "\(bl|call\)\[ \t\]+L_bogonic\\\$stub\n" } } */
! /* { dg-final { scan-assembler-not "\\\$non_lazy_ptr" } } */
--- 28,35 ----
  }
  @end
  
! /* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */
! /* { dg-final { scan-assembler     {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */
! /* { dg-final { scan-assembler-not {(bl|call)[ \t]+_bogonic\n} } } */
! /* { dg-final { scan-assembler     {(bl|call)[ \t]+L_bogonic\$stub\n} } } */
! /* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/stubify-2.m gcc-8.4.0/gcc/testsuite/objc.dg/stubify-2.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/stubify-2.m	Tue Apr 27 00:08:28 2010
--- gcc-8.4.0/gcc/testsuite/objc.dg/stubify-2.m	Wed Mar  4 08:30:02 2020
***************
*** 1,10 ****
  /* All calls must be properly stubified, m32 only.  */
  /* Testcase extracted from TextEdit:Document.m.  */
  
! /* { dg-do compile { target powerpc*-*-darwin* } } */
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-require-effective-target ilp32 } */
! /* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4" } */
  
  typedef struct objc_object { } *id ;
  int x = 41 ;
--- 1,10 ----
  /* All calls must be properly stubified, m32 only.  */
  /* Testcase extracted from TextEdit:Document.m.  */
  
! /* { dg-do compile { target *-*-darwin* } } */
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-require-effective-target ilp32 } */
! /* { dg-options "-mdynamic-no-pic -mmacosx-version-min=10.4 -msymbol-stubs" } */
  
  typedef struct objc_object { } *id ;
  int x = 41 ;
*************** extern int bogonic (int, int, int) ;
*** 30,33 ****
  
  /* Any symbol_ref of an un-stubified objc_msgSend is an error; look
     for "objc_msgSend" in quotes, without the $stub suffix.  */
! /* { dg-final { scan-rtl-dump-not "symbol_ref.*\"objc_msgSend\"" "jump" } } */
--- 30,38 ----
  
  /* Any symbol_ref of an un-stubified objc_msgSend is an error; look
     for "objc_msgSend" in quotes, without the $stub suffix.  */
! 
! /* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */
! /* { dg-final { scan-assembler     {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */
! /* { dg-final { scan-assembler-not {(bl|call)[ \t]+_bogonic\n} } } */
! /* { dg-final { scan-assembler     {(bl|call)[ \t]+L_bogonic\$stub\n} } } */
! /* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/symtab-1.m gcc-8.4.0/gcc/testsuite/objc.dg/symtab-1.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/symtab-1.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/symtab-1.m	Wed Mar  4 08:30:02 2020
***************
*** 4,10 ****
  /* { dg-do compile { target { *-*-darwin* } } } */
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  
! #include <Foundation/NSObject.h>
  
  @interface Base: NSObject 
  - (void)setValues;
--- 4,10 ----
  /* { dg-do compile { target { *-*-darwin* } } } */
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  
! #include "../objc-obj-c++-shared/F-NSObject.h"
  
  @interface Base: NSObject 
  - (void)setValues;
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m gcc-8.4.0/gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m	Thu Nov  4 18:19:54 2010
--- gcc-8.4.0/gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m	Wed Mar  4 08:30:02 2020
***************
*** 13,20 ****
     Well, we don't implement writable ones at this juncture.  */
  /* { dg-options "-mconstant-cfstrings -framework Cocoa -Wl,-w" { target *-*-darwin[123]* } } */
  
! #import <Foundation/NSString.h>
! #import <CoreFoundation/CFString.h>
  #include <stdlib.h>
  
  void printOut(NSString *str) {
--- 13,20 ----
     Well, we don't implement writable ones at this juncture.  */
  /* { dg-options "-mconstant-cfstrings -framework Cocoa -Wl,-w" { target *-*-darwin[123]* } } */
  
! #include "../../../objc-obj-c++-shared/F-NSString.h"
! #include "../../../objc-obj-c++-shared/CF-CFString.h"
  #include <stdlib.h>
  
  void printOut(NSString *str) {
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/torture/strings/const-str-10.m gcc-8.4.0/gcc/testsuite/objc.dg/torture/strings/const-str-10.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/torture/strings/const-str-10.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/torture/strings/const-str-10.m	Wed Mar  4 08:30:02 2020
***************
*** 6,12 ****
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
  
! #include <Foundation/NSObject.h>
  #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
  
  @interface NSString: NSObject
--- 6,13 ----
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
  
! #include "../../../objc-obj-c++-shared/F-NSObject.h"
! #include <stdlib.h>
  #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
  
  @interface NSString: NSObject
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/torture/strings/const-str-11.m gcc-8.4.0/gcc/testsuite/objc.dg/torture/strings/const-str-11.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/torture/strings/const-str-11.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/torture/strings/const-str-11.m	Wed Mar  4 08:30:02 2020
***************
*** 7,13 ****
  /* { dg-options "-fconstant-string-class=XStr" } */
  /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */
  
! #include <Foundation/NSObject.h>
  #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
  
  @interface XString: NSObject {
--- 7,13 ----
  /* { dg-options "-fconstant-string-class=XStr" } */
  /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */
  
! #include "../../../objc-obj-c++-shared/F-NSObject.h"
  #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
  
  @interface XString: NSObject {
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/torture/strings/const-str-9.m gcc-8.4.0/gcc/testsuite/objc.dg/torture/strings/const-str-9.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/torture/strings/const-str-9.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/torture/strings/const-str-9.m	Wed Mar  4 08:30:02 2020
***************
*** 5,11 ****
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
  
! #include <Foundation/NSObject.h>
  #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
  
  @interface NSConstantString: NSObject {
--- 5,11 ----
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
  
! #include "../../../objc-obj-c++-shared/F-NSObject.h"
  #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
  
  @interface NSConstantString: NSObject {
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/zero-link-1.m gcc-8.4.0/gcc/testsuite/objc.dg/zero-link-1.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/zero-link-1.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/zero-link-1.m	Wed Mar  4 08:30:02 2020
***************
*** 5,11 ****
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-fzero-link" } */
  
! #include <Foundation/NSObject.h>
  
  extern void abort(void);
  #define CHECK_IF(expr) if(!(expr)) abort();
--- 5,11 ----
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-fzero-link" } */
  
! #include "../objc-obj-c++-shared/F-NSObject.h"
  
  extern void abort(void);
  #define CHECK_IF(expr) if(!(expr)) abort();
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/zero-link-2.m gcc-8.4.0/gcc/testsuite/objc.dg/zero-link-2.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/zero-link-2.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/zero-link-2.m	Wed Mar  4 08:30:02 2020
***************
*** 5,11 ****
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-fno-zero-link" } */
  
! #include <Foundation/NSObject.h>
  
  extern void abort(void);
  #define CHECK_IF(expr) if(!(expr)) abort();
--- 5,11 ----
  /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
  /* { dg-options "-fno-zero-link" } */
  
! #include "../objc-obj-c++-shared/F-NSObject.h"
  
  extern void abort(void);
  #define CHECK_IF(expr) if(!(expr)) abort();
diff -Nrcpad gcc-8.3.0/gcc/testsuite/objc.dg/zero-link-3.m gcc-8.4.0/gcc/testsuite/objc.dg/zero-link-3.m
*** gcc-8.3.0/gcc/testsuite/objc.dg/zero-link-3.m	Tue Jul 16 10:41:30 2013
--- gcc-8.4.0/gcc/testsuite/objc.dg/zero-link-3.m	Wed Mar  4 08:30:02 2020
***************
*** 7,18 ****
  /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
  
  #ifdef __NEXT_RUNTIME__
! #include <Foundation/NSObject.h>
! #define OBJECT NSObject
  #else
! #include <objc/Object.h>
! #include <objc/Protocol.h>
! #define OBJECT Object
  #endif
  
  extern void abort(void);
--- 7,18 ----
  /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
  
  #ifdef __NEXT_RUNTIME__
! # include "../objc-obj-c++-shared/F-NSObject.h"
! # define OBJECT NSObject
  #else
! # include <objc/Object.h>
! # include <objc/Protocol.h>
! # define OBJECT Object
  #endif
  
  extern void abort(void);
diff -Nrcpad gcc-8.3.0/gcc/toplev.c gcc-8.4.0/gcc/toplev.c
*** gcc-8.3.0/gcc/toplev.c	Tue Feb 13 16:18:37 2018
--- gcc-8.4.0/gcc/toplev.c	Wed Mar  4 08:30:02 2020
*************** do_compile ()
*** 2110,2115 ****
--- 2110,2143 ----
  	else
  	  int_n_enabled_p[i] = false;
  
+       /* Initialize mpfrs exponent range.  This is important to get
+          underflow/overflow in a reasonable timeframe.  */
+       machine_mode mode;
+       int min_exp = -1;
+       int max_exp = 1;
+       FOR_EACH_MODE_IN_CLASS (mode, MODE_FLOAT)
+ 	if (SCALAR_FLOAT_MODE_P (mode))
+ 	  {
+ 	    const real_format *fmt = REAL_MODE_FORMAT (mode);
+ 	    if (fmt)
+ 	      {
+ 		/* fmt->emin - fmt->p + 1 should be enough but the
+ 		   back-and-forth dance in real_to_decimal_for_mode we
+ 		   do for checking fails due to rounding effects then.  */
+ 		if ((fmt->emin - fmt->p) < min_exp)
+ 		  min_exp = fmt->emin - fmt->p;
+ 		if (fmt->emax > max_exp)
+ 		  max_exp = fmt->emax;
+ 	      }
+ 	  }
+       /* E.g. mpc_norm assumes it can square a number without bothering with
+ 	 with range scaling, so until that is fixed, double the minimum
+ 	 and maximum exponents, plus add some buffer for arithmetics
+ 	 on the squared numbers.  */
+       if (mpfr_set_emin (2 * (min_exp - 1))
+ 	  || mpfr_set_emax (2 * (max_exp + 1)))
+ 	sorry ("mpfr not configured to handle all float modes");
+ 
        /* Set up the back-end if requested.  */
        if (!no_backend)
  	backend_init ();
diff -Nrcpad gcc-8.3.0/gcc/tree-cfg.c gcc-8.4.0/gcc/tree-cfg.c
*** gcc-8.3.0/gcc/tree-cfg.c	Thu Feb  7 14:51:41 2019
--- gcc-8.4.0/gcc/tree-cfg.c	Wed Mar  4 08:30:02 2020
*************** remove_bb (basic_block bb)
*** 2307,2313 ****
  		  new_bb = single_succ (new_bb);
  		  gcc_assert (new_bb != bb);
  		}
! 	      new_gsi = gsi_start_bb (new_bb);
  	      gsi_remove (&i, false);
  	      gsi_insert_before (&new_gsi, stmt, GSI_NEW_STMT);
  	    }
--- 2307,2313 ----
  		  new_bb = single_succ (new_bb);
  		  gcc_assert (new_bb != bb);
  		}
! 	      new_gsi = gsi_after_labels (new_bb);
  	      gsi_remove (&i, false);
  	      gsi_insert_before (&new_gsi, stmt, GSI_NEW_STMT);
  	    }
*************** gimple_can_duplicate_bb_p (const_basic_b
*** 6308,6314 ****
     preserve SSA form.  */
  
  static basic_block
! gimple_duplicate_bb (basic_block bb)
  {
    basic_block new_bb;
    gimple_stmt_iterator gsi_tgt;
--- 6308,6314 ----
     preserve SSA form.  */
  
  static basic_block
! gimple_duplicate_bb (basic_block bb, copy_bb_data *id)
  {
    basic_block new_bb;
    gimple_stmt_iterator gsi_tgt;
*************** gimple_duplicate_bb (basic_block bb)
*** 6372,6377 ****
--- 6372,6410 ----
  	      && (!VAR_P (base) || !DECL_HAS_VALUE_EXPR_P (base)))
  	    DECL_NONSHAREABLE (base) = 1;
  	}
+  
+       /* If requested remap dependence info of cliques brought in
+          via inlining.  */
+       if (id)
+ 	for (unsigned i = 0; i < gimple_num_ops (copy); ++i)
+ 	  {
+ 	    tree op = gimple_op (copy, i);
+ 	    if (!op)
+ 	      continue;
+ 	    if (TREE_CODE (op) == ADDR_EXPR
+ 		|| TREE_CODE (op) == WITH_SIZE_EXPR)
+ 	      op = TREE_OPERAND (op, 0);
+ 	    while (handled_component_p (op))
+ 	      op = TREE_OPERAND (op, 0);
+ 	    if ((TREE_CODE (op) == MEM_REF
+ 		 || TREE_CODE (op) == TARGET_MEM_REF)
+ 		&& MR_DEPENDENCE_CLIQUE (op) > 1
+ 		&& MR_DEPENDENCE_CLIQUE (op) != bb->loop_father->owned_clique)
+ 	      {
+ 		if (!id->dependence_map)
+ 		  id->dependence_map = new hash_map<dependence_hash,
+ 						    unsigned short>;
+ 		bool existed;
+ 		unsigned short &newc = id->dependence_map->get_or_insert
+ 		    (MR_DEPENDENCE_CLIQUE (op), &existed);
+ 		if (!existed)
+ 		  {
+ 		    gcc_assert (MR_DEPENDENCE_CLIQUE (op) <= cfun->last_clique);
+ 		    newc = ++cfun->last_clique;
+ 		  }
+ 		MR_DEPENDENCE_CLIQUE (op) = newc;
+ 	      }
+ 	  }
  
        /* Create new names for all the definitions created by COPY and
  	 add replacement mappings for each new name.  */
*************** move_block_to_fn (struct function *dest_
*** 7199,7205 ****
        if (virtual_operand_p (op))
  	{
  	  /* Remove the phi nodes for virtual operands (alias analysis will be
! 	     run for the new function, anyway).  */
            remove_phi_node (&psi, true);
  	  continue;
  	}
--- 7232,7245 ----
        if (virtual_operand_p (op))
  	{
  	  /* Remove the phi nodes for virtual operands (alias analysis will be
! 	     run for the new function, anyway).  But replace all uses that
! 	     might be outside of the region we move.  */
! 	  use_operand_p use_p;
! 	  imm_use_iterator iter;
! 	  gimple *use_stmt;
! 	  FOR_EACH_IMM_USE_STMT (use_stmt, iter, op)
! 	    FOR_EACH_IMM_USE_ON_STMT (use_p, iter)
! 	      SET_USE (use_p, SSA_NAME_VAR (op));
            remove_phi_node (&psi, true);
  	  continue;
  	}
diff -Nrcpad gcc-8.3.0/gcc/tree-cfgcleanup.c gcc-8.4.0/gcc/tree-cfgcleanup.c
*** gcc-8.3.0/gcc/tree-cfgcleanup.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/tree-cfgcleanup.c	Wed Mar  4 08:30:02 2020
*************** along with GCC; see the file COPYING3.
*** 43,48 ****
--- 43,50 ----
  #include "gimple-match.h"
  #include "gimple-fold.h"
  #include "tree-ssa-loop-niter.h"
+ #include "tree-into-ssa.h"
+ #include "tree-cfgcleanup.h"
  
  
  /* The set of blocks in that at least one of the following changes happened:
*************** cleanup_control_flow_pre ()
*** 761,767 ****
  /* Iterate the cfg cleanups, while anything changes.  */
  
  static bool
! cleanup_tree_cfg_1 (void)
  {
    bool retval = false;
    basic_block bb;
--- 763,769 ----
  /* Iterate the cfg cleanups, while anything changes.  */
  
  static bool
! cleanup_tree_cfg_1 (unsigned ssa_update_flags)
  {
    bool retval = false;
    basic_block bb;
*************** cleanup_tree_cfg_1 (void)
*** 786,791 ****
--- 788,795 ----
  
    /* After doing the above SSA form should be valid (or an update SSA
       should be required).  */
+   if (ssa_update_flags)
+     update_ssa (ssa_update_flags);
  
    /* Continue by iterating over all basic blocks looking for BB merging
       opportunities.  */
*************** mfb_keep_latches (edge e)
*** 828,834 ****
     Return true if the flowgraph was modified, false otherwise.  */
  
  static bool
! cleanup_tree_cfg_noloop (void)
  {
    bool changed;
  
--- 832,838 ----
     Return true if the flowgraph was modified, false otherwise.  */
  
  static bool
! cleanup_tree_cfg_noloop (unsigned ssa_update_flags)
  {
    bool changed;
  
*************** cleanup_tree_cfg_noloop (void)
*** 908,914 ****
  	  }
      }
  
!   changed |= cleanup_tree_cfg_1 ();
  
    gcc_assert (dom_info_available_p (CDI_DOMINATORS));
  
--- 912,918 ----
  	  }
      }
  
!   changed |= cleanup_tree_cfg_1 (ssa_update_flags);
  
    gcc_assert (dom_info_available_p (CDI_DOMINATORS));
  
*************** repair_loop_structures (void)
*** 966,974 ****
  /* Cleanup cfg and repair loop structures.  */
  
  bool
! cleanup_tree_cfg (void)
  {
!   bool changed = cleanup_tree_cfg_noloop ();
  
    if (current_loops != NULL
        && loops_state_satisfies_p (LOOPS_NEED_FIXUP))
--- 970,978 ----
  /* Cleanup cfg and repair loop structures.  */
  
  bool
! cleanup_tree_cfg (unsigned ssa_update_flags)
  {
!   bool changed = cleanup_tree_cfg_noloop (ssa_update_flags);
  
    if (current_loops != NULL
        && loops_state_satisfies_p (LOOPS_NEED_FIXUP))
diff -Nrcpad gcc-8.3.0/gcc/tree-cfgcleanup.h gcc-8.4.0/gcc/tree-cfgcleanup.h
*** gcc-8.3.0/gcc/tree-cfgcleanup.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/tree-cfgcleanup.h	Wed Mar  4 08:30:02 2020
*************** along with GCC; see the file COPYING3.
*** 22,28 ****
  
  /* In tree-cfgcleanup.c  */
  extern bitmap cfgcleanup_altered_bbs;
! extern bool cleanup_tree_cfg (void);
  extern bool fixup_noreturn_call (gimple *stmt);
  
  #endif /* GCC_TREE_CFGCLEANUP_H */
--- 22,28 ----
  
  /* In tree-cfgcleanup.c  */
  extern bitmap cfgcleanup_altered_bbs;
! extern bool cleanup_tree_cfg (unsigned = 0);
  extern bool fixup_noreturn_call (gimple *stmt);
  
  #endif /* GCC_TREE_CFGCLEANUP_H */
diff -Nrcpad gcc-8.3.0/gcc/tree-chrec.c gcc-8.4.0/gcc/tree-chrec.c
*** gcc-8.3.0/gcc/tree-chrec.c	Thu Oct 18 08:51:32 2018
--- gcc-8.4.0/gcc/tree-chrec.c	Wed Mar  4 08:30:02 2020
*************** is_multivariate_chrec (const_tree chrec)
*** 979,988 ****
      return false;
  }
  
! /* Determines whether the chrec contains symbolic names or not.  */
  
  bool
! chrec_contains_symbols (const_tree chrec)
  {
    int i, n;
  
--- 979,989 ----
      return false;
  }
  
! /* Determines whether the chrec contains symbolic names or not.  If LOOP isn't
!    NULL, we also consider chrec wrto outer loops of LOOP as symbol.  */
  
  bool
! chrec_contains_symbols (const_tree chrec, struct loop *loop)
  {
    int i, n;
  
*************** chrec_contains_symbols (const_tree chrec
*** 999,1007 ****
        || TREE_CODE (chrec) == FIELD_DECL)
      return true;
  
    n = TREE_OPERAND_LENGTH (chrec);
    for (i = 0; i < n; i++)
!     if (chrec_contains_symbols (TREE_OPERAND (chrec, i)))
        return true;
    return false;
  }
--- 1000,1013 ----
        || TREE_CODE (chrec) == FIELD_DECL)
      return true;
  
+   if (loop != NULL
+       && TREE_CODE (chrec) == POLYNOMIAL_CHREC
+       && flow_loop_nested_p (get_chrec_loop (chrec), loop))
+     return true;
+ 
    n = TREE_OPERAND_LENGTH (chrec);
    for (i = 0; i < n; i++)
!     if (chrec_contains_symbols (TREE_OPERAND (chrec, i), loop))
        return true;
    return false;
  }
diff -Nrcpad gcc-8.3.0/gcc/tree-chrec.h gcc-8.4.0/gcc/tree-chrec.h
*** gcc-8.3.0/gcc/tree-chrec.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/tree-chrec.h	Wed Mar  4 08:30:02 2020
*************** extern bool convert_affine_scev (struct
*** 80,86 ****
  /* Observers.  */
  extern bool eq_evolutions_p (const_tree, const_tree);
  extern bool is_multivariate_chrec (const_tree);
! extern bool chrec_contains_symbols (const_tree);
  extern bool chrec_contains_symbols_defined_in_loop (const_tree, unsigned);
  extern bool chrec_contains_undetermined (const_tree);
  extern bool tree_contains_chrecs (const_tree, int *);
--- 80,86 ----
  /* Observers.  */
  extern bool eq_evolutions_p (const_tree, const_tree);
  extern bool is_multivariate_chrec (const_tree);
! extern bool chrec_contains_symbols (const_tree, struct loop * = NULL);
  extern bool chrec_contains_symbols_defined_in_loop (const_tree, unsigned);
  extern bool chrec_contains_undetermined (const_tree);
  extern bool tree_contains_chrecs (const_tree, int *);
diff -Nrcpad gcc-8.3.0/gcc/tree-core.h gcc-8.4.0/gcc/tree-core.h
*** gcc-8.3.0/gcc/tree-core.h	Wed Jan  2 22:34:36 2019
--- gcc-8.4.0/gcc/tree-core.h	Wed Mar  4 08:30:02 2020
*************** enum operand_equal_flag {
*** 819,825 ****
    /* Internal within inchash::add_expr:  */
    OEP_HASH_CHECK = 32,
    /* Makes operand_equal_p handle more expressions:  */
!   OEP_LEXICOGRAPHIC = 64
  };
  
  /* Enum and arrays used for tree allocation stats.
--- 819,826 ----
    /* Internal within inchash::add_expr:  */
    OEP_HASH_CHECK = 32,
    /* Makes operand_equal_p handle more expressions:  */
!   OEP_LEXICOGRAPHIC = 64,
!   OEP_BITWISE = 128
  };
  
  /* Enum and arrays used for tree allocation stats.
*************** struct GTY(()) tree_base {
*** 997,1003 ****
         expression trees and specify known data non-dependences.  For
         two memory references in a function they are known to not
         alias if dependence_info.clique are equal and dependence_info.base
!        are distinct.  */
      struct {
        unsigned short clique;
        unsigned short base;
--- 998,1006 ----
         expression trees and specify known data non-dependences.  For
         two memory references in a function they are known to not
         alias if dependence_info.clique are equal and dependence_info.base
!        are distinct.  Clique number zero means there is no information,
!        clique number one is populated from function global information
!        and thus needs no remapping on transforms like loop unrolling.  */
      struct {
        unsigned short clique;
        unsigned short base;
*************** struct GTY(()) tree_decl_common {
*** 1644,1649 ****
--- 1647,1653 ----
    /* In a VAR_DECL and PARM_DECL, this is DECL_READ_P.  */
    unsigned decl_read_flag : 1;
    /* In a VAR_DECL or RESULT_DECL, this is DECL_NONSHAREABLE.  */
+   /* In a PARM_DECL, this is DECL_HIDDEN_STRING_LENGTH.  */
    unsigned decl_nonshareable_flag : 1;
  
    /* DECL_OFFSET_ALIGN, used only for FIELD_DECLs.  */
diff -Nrcpad gcc-8.3.0/gcc/tree-data-ref.c gcc-8.4.0/gcc/tree-data-ref.c
*** gcc-8.3.0/gcc/tree-data-ref.c	Wed Feb 13 10:02:47 2019
--- gcc-8.4.0/gcc/tree-data-ref.c	Wed Mar  4 08:30:02 2020
*************** object_address_invariant_in_loop_p (cons
*** 2230,2236 ****
  
  bool
  dr_may_alias_p (const struct data_reference *a, const struct data_reference *b,
! 		bool loop_nest)
  {
    tree addr_a = DR_BASE_OBJECT (a);
    tree addr_b = DR_BASE_OBJECT (b);
--- 2230,2236 ----
  
  bool
  dr_may_alias_p (const struct data_reference *a, const struct data_reference *b,
! 		struct loop *loop_nest)
  {
    tree addr_a = DR_BASE_OBJECT (a);
    tree addr_b = DR_BASE_OBJECT (b);
*************** dr_may_alias_p (const struct data_refere
*** 2254,2259 ****
--- 2254,2264 ----
  
    if ((TREE_CODE (addr_a) == MEM_REF || TREE_CODE (addr_a) == TARGET_MEM_REF)
        && (TREE_CODE (addr_b) == MEM_REF || TREE_CODE (addr_b) == TARGET_MEM_REF)
+       /* For cross-iteration dependences the cliques must be valid for the
+ 	 whole loop, not just individual iterations.  */
+       && (!loop_nest
+ 	  || MR_DEPENDENCE_CLIQUE (addr_a) == 1
+ 	  || MR_DEPENDENCE_CLIQUE (addr_a) == loop_nest->owned_clique)
        && MR_DEPENDENCE_CLIQUE (addr_a) == MR_DEPENDENCE_CLIQUE (addr_b)
        && MR_DEPENDENCE_BASE (addr_a) != MR_DEPENDENCE_BASE (addr_b))
      return false;
*************** initialize_data_dependence_relation (str
*** 2365,2371 ****
      }
  
    /* If the data references do not alias, then they are independent.  */
!   if (!dr_may_alias_p (a, b, loop_nest.exists ()))
      {
        DDR_ARE_DEPENDENT (res) = chrec_known;
        return res;
--- 2370,2376 ----
      }
  
    /* If the data references do not alias, then they are independent.  */
!   if (!dr_may_alias_p (a, b, loop_nest.exists () ? loop_nest[0] : NULL))
      {
        DDR_ARE_DEPENDENT (res) = chrec_known;
        return res;
*************** analyze_miv_subscript (tree chrec_a,
*** 4048,4056 ****
      }
  
    else if (evolution_function_is_affine_multivariate_p (chrec_a, loop_nest->num)
! 	   && !chrec_contains_symbols (chrec_a)
  	   && evolution_function_is_affine_multivariate_p (chrec_b, loop_nest->num)
! 	   && !chrec_contains_symbols (chrec_b))
      {
        /* testsuite/.../ssa-chrec-35.c
  	 {0, +, 1}_2  vs.  {0, +, 1}_3
--- 4053,4061 ----
      }
  
    else if (evolution_function_is_affine_multivariate_p (chrec_a, loop_nest->num)
! 	   && !chrec_contains_symbols (chrec_a, loop_nest)
  	   && evolution_function_is_affine_multivariate_p (chrec_b, loop_nest->num)
! 	   && !chrec_contains_symbols (chrec_b, loop_nest))
      {
        /* testsuite/.../ssa-chrec-35.c
  	 {0, +, 1}_2  vs.  {0, +, 1}_3
*************** build_classic_dist_vector_1 (struct data
*** 4260,4265 ****
--- 4265,4271 ----
  {
    unsigned i;
    lambda_vector init_v = lambda_vector_new (DDR_NB_LOOPS (ddr));
+   struct loop *loop = DDR_LOOP_NEST (ddr)[0];
  
    for (i = 0; i < DDR_NUM_SUBSCRIPTS (ddr); i++)
      {
*************** build_classic_dist_vector_1 (struct data
*** 4290,4295 ****
--- 4296,4310 ----
  	      return false;
  	    }
  
+ 	  /* When data references are collected in a loop while data
+ 	     dependences are analyzed in loop nest nested in the loop, we
+ 	     would have more number of access functions than number of
+ 	     loops.  Skip access functions of loops not in the loop nest.
+ 
+ 	     See PR89725 for more information.  */
+ 	  if (flow_loop_nested_p (get_loop (cfun, var_a), loop))
+ 	    continue;
+ 
  	  dist = int_cst_value (SUB_DISTANCE (subscript));
  	  index = index_in_loop_nest (var_a, DDR_LOOP_NEST (ddr));
  	  *index_carry = MIN (index, *index_carry);
*************** add_other_self_distances (struct data_de
*** 4401,4406 ****
--- 4416,4422 ----
    unsigned i;
    int index_carry = DDR_NB_LOOPS (ddr);
    subscript *sub;
+   struct loop *loop = DDR_LOOP_NEST (ddr)[0];
  
    FOR_EACH_VEC_ELT (DDR_SUBSCRIPTS (ddr), i, sub)
      {
*************** add_other_self_distances (struct data_de
*** 4430,4435 ****
--- 4446,4461 ----
  	      return;
  	    }
  
+ 	  /* When data references are collected in a loop while data
+ 	     dependences are analyzed in loop nest nested in the loop, we
+ 	     would have more number of access functions than number of
+ 	     loops.  Skip access functions of loops not in the loop nest.
+ 
+ 	     See PR89725 for more information.  */
+ 	  if (flow_loop_nested_p (get_loop (cfun, CHREC_VARIABLE (access_fun)),
+ 				  loop))
+ 	    continue;
+ 
  	  index_carry = MIN (index_carry,
  			     index_in_loop_nest (CHREC_VARIABLE (access_fun),
  						 DDR_LOOP_NEST (ddr)));
diff -Nrcpad gcc-8.3.0/gcc/tree-data-ref.h gcc-8.4.0/gcc/tree-data-ref.h
*** gcc-8.3.0/gcc/tree-data-ref.h	Sat Mar 24 10:52:34 2018
--- gcc-8.4.0/gcc/tree-data-ref.h	Wed Mar  4 08:30:02 2020
*************** dr_alignment (data_reference *dr)
*** 475,481 ****
  }
  
  extern bool dr_may_alias_p (const struct data_reference *,
! 			    const struct data_reference *, bool);
  extern bool dr_equal_offsets_p (struct data_reference *,
                                  struct data_reference *);
  
--- 475,481 ----
  }
  
  extern bool dr_may_alias_p (const struct data_reference *,
! 			    const struct data_reference *, struct loop *);
  extern bool dr_equal_offsets_p (struct data_reference *,
                                  struct data_reference *);
  
diff -Nrcpad gcc-8.3.0/gcc/tree-if-conv.c gcc-8.4.0/gcc/tree-if-conv.c
*** gcc-8.3.0/gcc/tree-if-conv.c	Mon Mar 12 12:32:28 2018
--- gcc-8.4.0/gcc/tree-if-conv.c	Wed Mar  4 08:30:02 2020
*************** combine_blocks (struct loop *loop)
*** 2480,2485 ****
--- 2480,2490 ----
        vphi = get_virtual_phi (bb);
        if (vphi)
  	{
+ 	  /* When there's just loads inside the loop a stray virtual
+ 	     PHI merging the uses can appear, update last_vdef from
+ 	     it.  */
+ 	  if (!last_vdef)
+ 	    last_vdef = gimple_phi_arg_def (vphi, 0);
  	  imm_use_iterator iter;
  	  use_operand_p use_p;
  	  gimple *use_stmt;
*************** combine_blocks (struct loop *loop)
*** 2509,2514 ****
--- 2514,2523 ----
  	      if (gimple_vdef (stmt))
  		last_vdef = gimple_vdef (stmt);
  	    }
+ 	  else
+ 	    /* If this is the first load we arrive at update last_vdef
+ 	       so we handle stray PHIs correctly.  */
+ 	    last_vdef = gimple_vuse (stmt);
  	  if (predicated[i])
  	    {
  	      ssa_op_iter i;
diff -Nrcpad gcc-8.3.0/gcc/tree-inline.c gcc-8.4.0/gcc/tree-inline.c
*** gcc-8.3.0/gcc/tree-inline.c	Wed Jan  2 22:34:36 2019
--- gcc-8.4.0/gcc/tree-inline.c	Wed Mar  4 08:30:02 2020
*************** remap_type_1 (tree type, copy_body_data
*** 578,583 ****
--- 578,669 ----
    return new_tree;
  }
  
+ /* Helper function for remap_type_2, called through walk_tree.  */
+ 
+ static tree
+ remap_type_3 (tree *tp, int *walk_subtrees, void *data)
+ {
+   copy_body_data *id = (copy_body_data *) data;
+ 
+   if (TYPE_P (*tp))
+     *walk_subtrees = 0;
+ 
+   else if (DECL_P (*tp) && remap_decl (*tp, id) != *tp)
+     return *tp;
+ 
+   return NULL_TREE;
+ }
+ 
+ /* Return true if TYPE needs to be remapped because remap_decl on any
+    needed embedded decl returns something other than that decl.  */
+ 
+ static bool
+ remap_type_2 (tree type, copy_body_data *id)
+ {
+   tree t;
+ 
+ #define RETURN_TRUE_IF_VAR(T) \
+   do								\
+     {								\
+       tree _t = (T);						\
+       if (_t)							\
+ 	{							\
+ 	  if (DECL_P (_t) && remap_decl (_t, id) != _t)		\
+ 	    return true;					\
+ 	  if (!TYPE_SIZES_GIMPLIFIED (type)			\
+ 	      && walk_tree (&_t, remap_type_3, id, NULL))	\
+ 	    return true;					\
+ 	}							\
+     }								\
+   while (0)
+ 
+   switch (TREE_CODE (type))
+     {
+     case POINTER_TYPE:
+     case REFERENCE_TYPE:
+     case FUNCTION_TYPE:
+     case METHOD_TYPE:
+       return remap_type_2 (TREE_TYPE (type), id);
+ 
+     case INTEGER_TYPE:
+     case REAL_TYPE:
+     case FIXED_POINT_TYPE:
+     case ENUMERAL_TYPE:
+     case BOOLEAN_TYPE:
+       RETURN_TRUE_IF_VAR (TYPE_MIN_VALUE (type));
+       RETURN_TRUE_IF_VAR (TYPE_MAX_VALUE (type));
+       return false;
+ 
+     case ARRAY_TYPE:
+       if (remap_type_2 (TREE_TYPE (type), id)
+ 	  || (TYPE_DOMAIN (type) && remap_type_2 (TYPE_DOMAIN (type), id)))
+ 	return true;
+       break;
+ 
+     case RECORD_TYPE:
+     case UNION_TYPE:
+     case QUAL_UNION_TYPE:
+       for (t = TYPE_FIELDS (type); t; t = DECL_CHAIN (t))
+ 	if (TREE_CODE (t) == FIELD_DECL)
+ 	  {
+ 	    RETURN_TRUE_IF_VAR (DECL_FIELD_OFFSET (t));
+ 	    RETURN_TRUE_IF_VAR (DECL_SIZE (t));
+ 	    RETURN_TRUE_IF_VAR (DECL_SIZE_UNIT (t));
+ 	    if (TREE_CODE (type) == QUAL_UNION_TYPE)
+ 	      RETURN_TRUE_IF_VAR (DECL_QUALIFIER (t));
+ 	  }
+       break;
+ 
+     default:
+       return false;
+     }
+ 
+   RETURN_TRUE_IF_VAR (TYPE_SIZE (type));
+   RETURN_TRUE_IF_VAR (TYPE_SIZE_UNIT (type));
+   return false;
+ #undef RETURN_TRUE_IF_VAR
+ }
+ 
  tree
  remap_type (tree type, copy_body_data *id)
  {
*************** remap_type (tree type, copy_body_data *i
*** 593,599 ****
      return *node;
  
    /* The type only needs remapping if it's variably modified.  */
!   if (! variably_modified_type_p (type, id->src_fn))
      {
        insert_decl_map (id, type, type);
        return type;
--- 679,688 ----
      return *node;
  
    /* The type only needs remapping if it's variably modified.  */
!   if (! variably_modified_type_p (type, id->src_fn)
!       /* Don't remap if copy_decl method doesn't always return a new
! 	 decl and for all embedded decls returns the passed in decl.  */
!       || (id->dont_remap_vla_if_no_change && !remap_type_2 (type, id)))
      {
        insert_decl_map (id, type, type);
        return type;
*************** remap_dependence_clique (copy_body_data
*** 868,874 ****
    bool existed;
    unsigned short &newc = id->dependence_map->get_or_insert (clique, &existed);
    if (!existed)
!     newc = ++cfun->last_clique;
    return newc;
  }
  
--- 957,968 ----
    bool existed;
    unsigned short &newc = id->dependence_map->get_or_insert (clique, &existed);
    if (!existed)
!     {
!       /* Clique 1 is reserved for local ones set by PTA.  */
!       if (cfun->last_clique == 0)
! 	cfun->last_clique = 1;
!       newc = ++cfun->last_clique;
!     }
    return newc;
  }
  
*************** copy_loops (copy_body_data *id,
*** 2651,2657 ****
  	      dest_loop->simduid = remap_decl (src_loop->simduid, id);
  	      cfun->has_simduid_loops = true;
  	    }
! 
  	  /* Recurse.  */
  	  copy_loops (id, dest_loop, src_loop);
  	}
--- 2745,2755 ----
  	      dest_loop->simduid = remap_decl (src_loop->simduid, id);
  	      cfun->has_simduid_loops = true;
  	    }
! 	  if (id->src_cfun->last_clique != 0)
! 	    dest_loop->owned_clique
! 	      = remap_dependence_clique (id,
! 					 src_loop->owned_clique
! 					 ? src_loop->owned_clique : 1);
  	  /* Recurse.  */
  	  copy_loops (id, dest_loop, src_loop);
  	}
*************** reset_debug_bindings (copy_body_data *id
*** 4378,4384 ****
  /* If STMT is a GIMPLE_CALL, replace it with its inline expansion.  */
  
  static bool
! expand_call_inline (basic_block bb, gimple *stmt, copy_body_data *id)
  {
    tree use_retvar;
    tree fn;
--- 4476,4483 ----
  /* If STMT is a GIMPLE_CALL, replace it with its inline expansion.  */
  
  static bool
! expand_call_inline (basic_block bb, gimple *stmt, copy_body_data *id,
! 		    bitmap to_purge)
  {
    tree use_retvar;
    tree fn;
*************** expand_call_inline (basic_block bb, gimp
*** 4524,4530 ****
        gimple_call_set_fndecl (stmt, edge->callee->decl);
        update_stmt (stmt);
        id->src_node->remove ();
!       expand_call_inline (bb, stmt, id);
        maybe_remove_unused_call_args (cfun, stmt);
        return true;
      }
--- 4623,4629 ----
        gimple_call_set_fndecl (stmt, edge->callee->decl);
        update_stmt (stmt);
        id->src_node->remove ();
!       expand_call_inline (bb, stmt, id, to_purge);
        maybe_remove_unused_call_args (cfun, stmt);
        return true;
      }
*************** expand_call_inline (basic_block bb, gimp
*** 4912,4921 ****
      }
  
    if (purge_dead_abnormal_edges)
!     {
!       gimple_purge_dead_eh_edges (return_block);
!       gimple_purge_dead_abnormal_call_edges (return_block);
!     }
  
    /* If the value of the new expression is ignored, that's OK.  We
       don't warn about this for CALL_EXPRs, so we shouldn't warn about
--- 5011,5017 ----
      }
  
    if (purge_dead_abnormal_edges)
!     bitmap_set_bit (to_purge, return_block->index);
  
    /* If the value of the new expression is ignored, that's OK.  We
       don't warn about this for CALL_EXPRs, so we shouldn't warn about
*************** expand_call_inline (basic_block bb, gimp
*** 4957,4963 ****
     in a MODIFY_EXPR.  */
  
  static bool
! gimple_expand_calls_inline (basic_block bb, copy_body_data *id)
  {
    gimple_stmt_iterator gsi;
    bool inlined = false;
--- 5053,5060 ----
     in a MODIFY_EXPR.  */
  
  static bool
! gimple_expand_calls_inline (basic_block bb, copy_body_data *id,
! 			    bitmap to_purge)
  {
    gimple_stmt_iterator gsi;
    bool inlined = false;
*************** gimple_expand_calls_inline (basic_block
*** 4969,4975 ****
  
        if (is_gimple_call (stmt)
  	  && !gimple_call_internal_p (stmt))
! 	inlined |= expand_call_inline (bb, stmt, id);
      }
  
    return inlined;
--- 5066,5072 ----
  
        if (is_gimple_call (stmt)
  	  && !gimple_call_internal_p (stmt))
! 	inlined |= expand_call_inline (bb, stmt, id, to_purge);
      }
  
    return inlined;
*************** gimple_expand_calls_inline (basic_block
*** 4982,4988 ****
  static void
  fold_marked_statements (int first, hash_set<gimple *> *statements)
  {
!   for (; first < n_basic_blocks_for_fn (cfun); first++)
      if (BASIC_BLOCK_FOR_FN (cfun, first))
        {
          gimple_stmt_iterator gsi;
--- 5079,5086 ----
  static void
  fold_marked_statements (int first, hash_set<gimple *> *statements)
  {
!   auto_bitmap to_purge;
!   for (; first < last_basic_block_for_fn (cfun); first++)
      if (BASIC_BLOCK_FOR_FN (cfun, first))
        {
          gimple_stmt_iterator gsi;
*************** fold_marked_statements (int first, hash_
*** 4993,4999 ****
  	  if (statements->contains (gsi_stmt (gsi)))
  	    {
  	      gimple *old_stmt = gsi_stmt (gsi);
! 	      tree old_decl = is_gimple_call (old_stmt) ? gimple_call_fndecl (old_stmt) : 0;
  
  	      if (old_decl && DECL_BUILT_IN (old_decl))
  		{
--- 5091,5098 ----
  	  if (statements->contains (gsi_stmt (gsi)))
  	    {
  	      gimple *old_stmt = gsi_stmt (gsi);
! 	      tree old_decl
! 		= is_gimple_call (old_stmt) ? gimple_call_fndecl (old_stmt) : 0;
  
  	      if (old_decl && DECL_BUILT_IN (old_decl))
  		{
*************** fold_marked_statements (int first, hash_
*** 5037,5044 ****
  				 is mood anyway.  */
  			      if (maybe_clean_or_replace_eh_stmt (old_stmt,
  								  new_stmt))
! 				gimple_purge_dead_eh_edges (
! 				  BASIC_BLOCK_FOR_FN (cfun, first));
  			      break;
  			    }
  			  gsi_next (&i2);
--- 5136,5142 ----
  				 is mood anyway.  */
  			      if (maybe_clean_or_replace_eh_stmt (old_stmt,
  								  new_stmt))
! 				bitmap_set_bit (to_purge, first);
  			      break;
  			    }
  			  gsi_next (&i2);
*************** fold_marked_statements (int first, hash_
*** 5058,5068 ****
  						       new_stmt);
  
  		  if (maybe_clean_or_replace_eh_stmt (old_stmt, new_stmt))
! 		    gimple_purge_dead_eh_edges (BASIC_BLOCK_FOR_FN (cfun,
! 								    first));
  		}
  	    }
        }
  }
  
  /* Expand calls to inline functions in the body of FN.  */
--- 5156,5166 ----
  						       new_stmt);
  
  		  if (maybe_clean_or_replace_eh_stmt (old_stmt, new_stmt))
! 		    bitmap_set_bit (to_purge, first);
  		}
  	    }
        }
+   gimple_purge_all_dead_eh_edges (to_purge);
  }
  
  /* Expand calls to inline functions in the body of FN.  */
*************** optimize_inline_calls (tree fn)
*** 5108,5115 ****
       will split id->current_basic_block, and the new blocks will
       follow it; we'll trudge through them, processing their CALL_EXPRs
       along the way.  */
    FOR_EACH_BB_FN (bb, cfun)
!     inlined_p |= gimple_expand_calls_inline (bb, &id);
  
    pop_gimplify_context (NULL);
  
--- 5206,5214 ----
       will split id->current_basic_block, and the new blocks will
       follow it; we'll trudge through them, processing their CALL_EXPRs
       along the way.  */
+   auto_bitmap to_purge;
    FOR_EACH_BB_FN (bb, cfun)
!     inlined_p |= gimple_expand_calls_inline (bb, &id, to_purge);
  
    pop_gimplify_context (NULL);
  
*************** optimize_inline_calls (tree fn)
*** 5129,5134 ****
--- 5228,5248 ----
    fold_marked_statements (last, id.statements_to_fold);
    delete id.statements_to_fold;
  
+   /* Finally purge EH and abnormal edges from the call stmts we inlined.
+      We need to do this after fold_marked_statements since that may walk
+      the SSA use-def chain.  */
+   unsigned i;
+   bitmap_iterator bi;
+   EXECUTE_IF_SET_IN_BITMAP (to_purge, 0, i, bi)
+     {
+       basic_block bb = BASIC_BLOCK_FOR_FN (cfun, i);
+       if (bb)
+ 	{
+ 	  gimple_purge_dead_eh_edges (bb);
+ 	  gimple_purge_dead_abnormal_call_edges (bb);
+ 	}
+     }
+ 
    gcc_assert (!id.debug_stmts.exists ());
  
    /* If we didn't inline into the function there is nothing to do.  */
*************** copy_decl_for_dup_finish (copy_body_data
*** 5539,5544 ****
--- 5653,5662 ----
    if (CODE_CONTAINS_STRUCT (TREE_CODE (copy), TS_DECL_WRTL)
        && !TREE_STATIC (copy) && !DECL_EXTERNAL (copy))
      SET_DECL_RTL (copy, 0);
+   /* For vector typed decls make sure to update DECL_MODE according
+      to the new function context.  */
+   if (VECTOR_TYPE_P (TREE_TYPE (copy)))
+     SET_DECL_MODE (copy, TYPE_MODE (TREE_TYPE (copy)));
  
    /* These args would always appear unused, if not for this.  */
    TREE_USED (copy) = 1;
diff -Nrcpad gcc-8.3.0/gcc/tree-inline.h gcc-8.4.0/gcc/tree-inline.h
*** gcc-8.3.0/gcc/tree-inline.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/tree-inline.h	Wed Mar  4 08:30:02 2020
*************** struct copy_body_data
*** 119,124 ****
--- 119,131 ----
    /* > 0 if we are remapping a type currently.  */
    int remapping_type_depth;
  
+   /* Usually copy_decl callback always creates new decls, in that case
+      we want to remap all variably_modified_type_p types.  If this flag
+      is set, remap_type will do further checks to see if remap_decl
+      of any decls mentioned in the type will remap to anything but itself
+      and only in that case will actually remap the type.  */
+   bool dont_remap_vla_if_no_change;
+ 
    /* A function to be called when duplicating BLOCK nodes.  */
    void (*transform_lang_insert_block) (tree);
  
diff -Nrcpad gcc-8.3.0/gcc/tree-object-size.c gcc-8.4.0/gcc/tree-object-size.c
*** gcc-8.3.0/gcc/tree-object-size.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/tree-object-size.c	Wed Mar  4 08:30:02 2020
*************** cond_expr_object_size (struct object_siz
*** 899,904 ****
--- 899,907 ----
    else
      expr_object_size (osi, var, then_);
  
+   if (object_sizes[object_size_type][varno] == unknown[object_size_type])
+     return reexamine;
+ 
    if (TREE_CODE (else_) == SSA_NAME)
      reexamine |= merge_object_sizes (osi, var, else_, 0);
    else
diff -Nrcpad gcc-8.3.0/gcc/tree-outof-ssa.c gcc-8.4.0/gcc/tree-outof-ssa.c
*** gcc-8.3.0/gcc/tree-outof-ssa.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/tree-outof-ssa.c	Wed Mar  4 08:30:02 2020
*************** get_temp_reg (tree name)
*** 651,656 ****
--- 651,658 ----
    tree type = TREE_TYPE (name);
    int unsignedp;
    machine_mode reg_mode = promote_ssa_mode (name, &unsignedp);
+   if (reg_mode == BLKmode)
+     return assign_temp (type, 0, 0);
    rtx x = gen_reg_rtx (reg_mode);
    if (POINTER_TYPE_P (type))
      mark_reg_pointer (x, TYPE_ALIGN (TREE_TYPE (type)));
diff -Nrcpad gcc-8.3.0/gcc/tree-predcom.c gcc-8.4.0/gcc/tree-predcom.c
*** gcc-8.3.0/gcc/tree-predcom.c	Fri Feb  1 02:56:41 2019
--- gcc-8.4.0/gcc/tree-predcom.c	Wed Mar  4 08:30:02 2020
*************** split_data_refs_to_components (struct lo
*** 767,772 ****
--- 767,773 ----
    /* Don't do store elimination if loop has multiple exit edges.  */
    bool eliminate_store_p = single_exit (loop) != NULL;
    basic_block last_always_executed = last_always_executed_block (loop);
+   auto_bitmap no_store_store_comps;
  
    FOR_EACH_VEC_ELT (datarefs, i, dr)
      {
*************** split_data_refs_to_components (struct lo
*** 838,846 ****
        else if (DR_IS_READ (dra) && ib != bad)
  	{
  	  if (ia == bad)
! 	    continue;
  	  else if (!determine_offset (dra, drb, &dummy_off))
  	    {
  	      merge_comps (comp_father, comp_size, bad, ia);
  	      continue;
  	    }
--- 839,851 ----
        else if (DR_IS_READ (dra) && ib != bad)
  	{
  	  if (ia == bad)
! 	    {
! 	      bitmap_set_bit (no_store_store_comps, ib);
! 	      continue;
! 	    }
  	  else if (!determine_offset (dra, drb, &dummy_off))
  	    {
+ 	      bitmap_set_bit (no_store_store_comps, ib);
  	      merge_comps (comp_father, comp_size, bad, ia);
  	      continue;
  	    }
*************** split_data_refs_to_components (struct lo
*** 848,856 ****
        else if (DR_IS_READ (drb) && ia != bad)
  	{
  	  if (ib == bad)
! 	    continue;
  	  else if (!determine_offset (dra, drb, &dummy_off))
  	    {
  	      merge_comps (comp_father, comp_size, bad, ib);
  	      continue;
  	    }
--- 853,865 ----
        else if (DR_IS_READ (drb) && ia != bad)
  	{
  	  if (ib == bad)
! 	    {
! 	      bitmap_set_bit (no_store_store_comps, ia);
! 	      continue;
! 	    }
  	  else if (!determine_offset (dra, drb, &dummy_off))
  	    {
+ 	      bitmap_set_bit (no_store_store_comps, ia);
  	      merge_comps (comp_father, comp_size, bad, ib);
  	      continue;
  	    }
*************** split_data_refs_to_components (struct lo
*** 908,913 ****
--- 917,933 ----
        comp->refs.quick_push (dataref);
      }
  
+   if (eliminate_store_p)
+     {
+       bitmap_iterator bi;
+       EXECUTE_IF_SET_IN_BITMAP (no_store_store_comps, 0, ia, bi)
+ 	{
+ 	  ca = component_of (comp_father, ia);
+ 	  if (ca != bad)
+ 	    comps[ca]->eliminate_store_p = false;
+ 	}
+     }
+ 
    for (i = 0; i < n; i++)
      {
        comp = comps[i];
*************** is_inv_store_elimination_chain (struct l
*** 1712,1718 ****
  
    gcc_assert (!chain->has_max_use_after);
  
!   /* If loop iterates for unknown times or fewer times than chain->lenght,
       we still need to setup root variable and propagate it with PHI node.  */
    tree niters = number_of_latch_executions (loop);
    if (TREE_CODE (niters) != INTEGER_CST
--- 1732,1738 ----
  
    gcc_assert (!chain->has_max_use_after);
  
!   /* If loop iterates for unknown times or fewer times than chain->length,
       we still need to setup root variable and propagate it with PHI node.  */
    tree niters = number_of_latch_executions (loop);
    if (TREE_CODE (niters) != INTEGER_CST
diff -Nrcpad gcc-8.3.0/gcc/tree-scalar-evolution.c gcc-8.4.0/gcc/tree-scalar-evolution.c
*** gcc-8.3.0/gcc/tree-scalar-evolution.c	Thu Mar  8 14:41:39 2018
--- gcc-8.4.0/gcc/tree-scalar-evolution.c	Wed Mar  4 08:30:02 2020
*************** get_loop_exit_condition (const struct lo
*** 875,881 ****
        gimple *stmt;
  
        stmt = last_stmt (exit_edge->src);
!       if (gcond *cond_stmt = dyn_cast <gcond *> (stmt))
  	res = cond_stmt;
      }
  
--- 875,881 ----
        gimple *stmt;
  
        stmt = last_stmt (exit_edge->src);
!       if (gcond *cond_stmt = safe_dyn_cast <gcond *> (stmt))
  	res = cond_stmt;
      }
  
*************** simplify_peeled_chrec (struct loop *loop
*** 1421,1426 ****
--- 1421,1431 ----
        return build_polynomial_chrec (loop->num, init_cond, right);
      }
  
+   /* The affine code only deals with pointer and integer types.  */
+   if (!POINTER_TYPE_P (type)
+       && !INTEGRAL_TYPE_P (type))
+     return chrec_dont_know;
+ 
    /* Try harder to check if they are equal.  */
    tree_to_aff_combination_expand (left, type, &aff1, &peeled_chrec_map);
    tree_to_aff_combination_expand (step_val, type, &aff2, &peeled_chrec_map);
diff -Nrcpad gcc-8.3.0/gcc/tree-sra.c gcc-8.4.0/gcc/tree-sra.c
*** gcc-8.3.0/gcc/tree-sra.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/tree-sra.c	Wed Mar  4 08:30:02 2020
*************** contains_view_convert_expr_p (const_tree
*** 1150,1178 ****
    return false;
  }
  
! /* Return true if REF contains a VIEW_CONVERT_EXPR or a MEM_REF that performs
!    type conversion or a COMPONENT_REF with a bit-field field declaration.  */
  
  static bool
! contains_vce_or_bfcref_p (const_tree ref)
  {
    while (handled_component_p (ref))
      {
        if (TREE_CODE (ref) == VIEW_CONVERT_EXPR
  	  || (TREE_CODE (ref) == COMPONENT_REF
  	      && DECL_BIT_FIELD (TREE_OPERAND (ref, 1))))
! 	return true;
        ref = TREE_OPERAND (ref, 0);
      }
  
!   if (TREE_CODE (ref) != MEM_REF
        || TREE_CODE (TREE_OPERAND (ref, 0)) != ADDR_EXPR)
      return false;
  
    tree mem = TREE_OPERAND (TREE_OPERAND (ref, 0), 0);
    if (TYPE_MAIN_VARIANT (TREE_TYPE (ref))
        != TYPE_MAIN_VARIANT (TREE_TYPE (mem)))
!     return true;
  
    return false;
  }
--- 1150,1185 ----
    return false;
  }
  
! /* Return true if REF contains a VIEW_CONVERT_EXPR or a COMPONENT_REF with a
!    bit-field field declaration.  If TYPE_CHANGING_P is non-NULL, set the bool
!    it points to will be set if REF contains any of the above or a MEM_REF
!    expression that effectively performs type conversion.  */
  
  static bool
! contains_vce_or_bfcref_p (const_tree ref, bool *type_changing_p = NULL)
  {
    while (handled_component_p (ref))
      {
        if (TREE_CODE (ref) == VIEW_CONVERT_EXPR
  	  || (TREE_CODE (ref) == COMPONENT_REF
  	      && DECL_BIT_FIELD (TREE_OPERAND (ref, 1))))
! 	{
! 	  if (type_changing_p)
! 	    *type_changing_p = true;
! 	  return true;
! 	}
        ref = TREE_OPERAND (ref, 0);
      }
  
!   if (!type_changing_p
!       || TREE_CODE (ref) != MEM_REF
        || TREE_CODE (TREE_OPERAND (ref, 0)) != ADDR_EXPR)
      return false;
  
    tree mem = TREE_OPERAND (TREE_OPERAND (ref, 0), 0);
    if (TYPE_MAIN_VARIANT (TREE_TYPE (ref))
        != TYPE_MAIN_VARIANT (TREE_TYPE (mem)))
!     *type_changing_p = true;
  
    return false;
  }
*************** build_accesses_from_assign (gimple *stmt
*** 1368,1382 ****
        lacc->grp_assignment_write = 1;
        if (storage_order_barrier_p (rhs))
  	lacc->grp_unscalarizable_region = 1;
      }
  
    if (racc)
      {
        racc->grp_assignment_read = 1;
!       if (should_scalarize_away_bitmap && !gimple_has_volatile_ops (stmt)
! 	  && !is_gimple_reg_type (racc->type))
  	{
! 	  if (contains_vce_or_bfcref_p (rhs))
  	    bitmap_set_bit (cannot_scalarize_away_bitmap,
  			    DECL_UID (racc->base));
  	  else
--- 1375,1400 ----
        lacc->grp_assignment_write = 1;
        if (storage_order_barrier_p (rhs))
  	lacc->grp_unscalarizable_region = 1;
+ 
+       if (should_scalarize_away_bitmap && !is_gimple_reg_type (lacc->type))
+ 	{
+ 	  bool type_changing_p = false;
+ 	  contains_vce_or_bfcref_p (lhs, &type_changing_p);
+ 	  if (type_changing_p)
+ 	    bitmap_set_bit (cannot_scalarize_away_bitmap,
+ 			    DECL_UID (lacc->base));
+ 	}
      }
  
    if (racc)
      {
        racc->grp_assignment_read = 1;
!       if (should_scalarize_away_bitmap && !is_gimple_reg_type (racc->type))
  	{
! 	  bool type_changing_p = false;
! 	  contains_vce_or_bfcref_p (rhs, &type_changing_p);
! 
! 	  if (type_changing_p || gimple_has_volatile_ops (stmt))
  	    bitmap_set_bit (cannot_scalarize_away_bitmap,
  			    DECL_UID (racc->base));
  	  else
*************** propagate_subaccesses_across_link (struc
*** 2729,2736 ****
  
  	      rchild->grp_hint = 1;
  	      new_acc->grp_hint |= new_acc->grp_read;
! 	      if (rchild->first_child)
! 		ret |= propagate_subaccesses_across_link (new_acc, rchild);
  	    }
  	  else
  	    {
--- 2747,2758 ----
  
  	      rchild->grp_hint = 1;
  	      new_acc->grp_hint |= new_acc->grp_read;
! 	      if (rchild->first_child
! 		  && propagate_subaccesses_across_link (new_acc, rchild))
! 		{
! 		  ret = 1;
! 		  add_access_to_work_queue (new_acc);
! 		}
  	    }
  	  else
  	    {
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-address.c gcc-8.4.0/gcc/tree-ssa-address.c
*** gcc-8.3.0/gcc/tree-ssa-address.c	Sat Jan 13 17:50:01 2018
--- gcc-8.4.0/gcc/tree-ssa-address.c	Wed Mar  4 08:30:02 2020
*************** addr_for_mem_ref (struct mem_address *ad
*** 259,264 ****
--- 259,278 ----
  	 ? expand_expr (addr->index, NULL_RTX, pointer_mode, EXPAND_NORMAL)
  	 : NULL_RTX);
  
+   /* addr->base could be an SSA_NAME that was set to a constant value.  The
+      call to expand_expr may expose that constant.  If so, fold the value
+      into OFF and clear BSE.  Otherwise we may later try to pull a mode from
+      BSE to generate a REG, which won't work with constants because they
+      are modeless.  */
+   if (bse && GET_CODE (bse) == CONST_INT)
+     {
+       if (off)
+ 	off = simplify_gen_binary (PLUS, pointer_mode, bse, off);
+       else
+ 	off = bse;
+       gcc_assert (GET_CODE (off) == CONST_INT);
+       bse = NULL_RTX;
+     }
    gen_addr_rtx (pointer_mode, sym, bse, idx, st, off, &address, NULL, NULL);
    if (pointer_mode != address_mode)
      address = convert_memory_address (address_mode, address);
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-ccp.c gcc-8.4.0/gcc/tree-ssa-ccp.c
*** gcc-8.3.0/gcc/tree-ssa-ccp.c	Wed Oct 17 08:49:00 2018
--- gcc-8.4.0/gcc/tree-ssa-ccp.c	Wed Mar  4 08:30:02 2020
*************** insert_clobber_before_stack_restore (tre
*** 2082,2089 ****
  					   visited);
      else if (chkp_gimple_call_builtin_p (stmt, BUILT_IN_CHKP_BNDRET))
        continue;
-     else
-       gcc_assert (is_gimple_debug (stmt));
  }
  
  /* Advance the iterator to the previous non-debug gimple statement in the same
--- 2082,2087 ----
*************** gsi_prev_dom_bb_nondebug (gimple_stmt_it
*** 2108,2116 ****
  /* Find a BUILT_IN_STACK_SAVE dominating gsi_stmt (I), and insert
     a clobber of VAR before each matching BUILT_IN_STACK_RESTORE.
  
!    It is possible that BUILT_IN_STACK_SAVE cannot be find in a dominator when a
!    previous pass (such as DOM) duplicated it along multiple paths to a BB.  In
!    that case the function gives up without inserting the clobbers.  */
  
  static void
  insert_clobbers_for_var (gimple_stmt_iterator i, tree var)
--- 2106,2114 ----
  /* Find a BUILT_IN_STACK_SAVE dominating gsi_stmt (I), and insert
     a clobber of VAR before each matching BUILT_IN_STACK_RESTORE.
  
!    It is possible that BUILT_IN_STACK_SAVE cannot be found in a dominator when
!    a previous pass (such as DOM) duplicated it along multiple paths to a BB.
!    In that case the function gives up without inserting the clobbers.  */
  
  static void
  insert_clobbers_for_var (gimple_stmt_iterator i, tree var)
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-copy.c gcc-8.4.0/gcc/tree-ssa-copy.c
*** gcc-8.3.0/gcc/tree-ssa-copy.c	Tue Oct 23 09:35:31 2018
--- gcc-8.4.0/gcc/tree-ssa-copy.c	Wed Mar  4 08:30:02 2020
*************** fini_copy_prop (void)
*** 545,557 ****
  	      duplicate_ssa_name_ptr_info (copy_of[i].value,
  					   SSA_NAME_PTR_INFO (var));
  	      /* Points-to information is cfg insensitive,
! 		 but alignment info might be cfg sensitive, if it
! 		 e.g. is derived from VRP derived non-zero bits.
! 		 So, do not copy alignment info if the two SSA_NAMEs
! 		 aren't defined in the same basic block.  */
  	      if (var_bb != copy_of_bb)
! 		mark_ptr_info_alignment_unknown
! 				(SSA_NAME_PTR_INFO (copy_of[i].value));
  	    }
  	  else if (!POINTER_TYPE_P (TREE_TYPE (var))
  		   && SSA_NAME_RANGE_INFO (var)
--- 545,556 ----
  	      duplicate_ssa_name_ptr_info (copy_of[i].value,
  					   SSA_NAME_PTR_INFO (var));
  	      /* Points-to information is cfg insensitive,
! 		 but [E]VRP might record context sensitive alignment
! 		 info, non-nullness, etc.  So reset context sensitive
! 		 info if the two SSA_NAMEs aren't defined in the same
! 		 basic block.  */
  	      if (var_bb != copy_of_bb)
! 		reset_flow_sensitive_info (copy_of[i].value);
  	    }
  	  else if (!POINTER_TYPE_P (TREE_TYPE (var))
  		   && SSA_NAME_RANGE_INFO (var)
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-dom.c gcc-8.4.0/gcc/tree-ssa-dom.c
*** gcc-8.3.0/gcc/tree-ssa-dom.c	Thu Feb  7 08:22:01 2019
--- gcc-8.4.0/gcc/tree-ssa-dom.c	Wed Mar  4 08:30:02 2020
*************** edge_info::derive_equivalences (tree nam
*** 170,180 ****
    gimple *def_stmt = SSA_NAME_DEF_STMT (name);
    if (is_gimple_assign (def_stmt))
      {
-       /* We know the result of DEF_STMT was zero.  See if that allows
- 	 us to deduce anything about the SSA_NAMEs used on the RHS.  */
        enum tree_code code = gimple_assign_rhs_code (def_stmt);
        switch (code)
  	{
  	case BIT_IOR_EXPR:
  	  if (integer_zerop (value))
  	    {
--- 170,179 ----
    gimple *def_stmt = SSA_NAME_DEF_STMT (name);
    if (is_gimple_assign (def_stmt))
      {
        enum tree_code code = gimple_assign_rhs_code (def_stmt);
        switch (code)
  	{
+ 	/* If the result of an OR is zero, then its operands are, too.  */
  	case BIT_IOR_EXPR:
  	  if (integer_zerop (value))
  	    {
*************** edge_info::derive_equivalences (tree nam
*** 188,195 ****
  	    }
  	  break;
  
!       /* We know the result of DEF_STMT was one.  See if that allows
! 	 us to deduce anything about the SSA_NAMEs used on the RHS.  */
  	case BIT_AND_EXPR:
  	  if (!integer_zerop (value))
  	    {
--- 187,193 ----
  	    }
  	  break;
  
! 	/* If the result of an AND is nonzero, then its operands are, too.  */
  	case BIT_AND_EXPR:
  	  if (!integer_zerop (value))
  	    {
*************** edge_info::derive_equivalences (tree nam
*** 296,302 ****
  	    break;
  	  }
  
- 
  	case EQ_EXPR:
  	case NE_EXPR:
  	  {
--- 294,299 ----
*************** edge_info::derive_equivalences (tree nam
*** 336,342 ****
  	case NEGATE_EXPR:
  	  {
  	    tree rhs = gimple_assign_rhs1 (def_stmt);
! 	    tree res = fold_build1 (code, TREE_TYPE (rhs), value);
  	    derive_equivalences (rhs, res, recursion_limit - 1);
  	    break;
  	  }
--- 333,360 ----
  	case NEGATE_EXPR:
  	  {
  	    tree rhs = gimple_assign_rhs1 (def_stmt);
! 	    tree res;
! 	    /* If this is a NOT and the operand has a boolean range, then we
! 	       know its value must be zero or one.  We are not supposed to
! 	       have a BIT_NOT_EXPR for boolean types with precision > 1 in
! 	       the general case, see e.g. the handling of TRUTH_NOT_EXPR in
! 	       the gimplifier, but it can be generated by match.pd out of
! 	       a BIT_XOR_EXPR wrapped in a BIT_AND_EXPR.  Now the handling
! 	       of BIT_AND_EXPR above already forces a specific semantics for
! 	       boolean types with precision > 1 so we must do the same here,
! 	       otherwise we could change the semantics of TRUTH_NOT_EXPR for
! 	       boolean types with precision > 1.  */
! 	    if (code == BIT_NOT_EXPR
! 		&& TREE_CODE (rhs) == SSA_NAME
! 		&& ssa_name_has_boolean_range (rhs))
! 	      {
! 		if ((TREE_INT_CST_LOW (value) & 1) == 0)
! 		  res = build_one_cst (TREE_TYPE (rhs));
! 		else
! 		  res = build_zero_cst (TREE_TYPE (rhs));
! 	      }
! 	    else
! 	      res = fold_build1 (code, TREE_TYPE (rhs), value);
  	    derive_equivalences (rhs, res, recursion_limit - 1);
  	    break;
  	  }
*************** private:
*** 598,604 ****
       various tables mantained by DOM.  Returns the taken edge if
       the statement is a conditional with a statically determined
       value.  */
!   edge optimize_stmt (basic_block, gimple_stmt_iterator);
  };
  
  /* Jump threading, redundancy elimination and const/copy propagation.
--- 616,622 ----
       various tables mantained by DOM.  Returns the taken edge if
       the statement is a conditional with a statically determined
       value.  */
!   edge optimize_stmt (basic_block, gimple_stmt_iterator *, bool *);
  };
  
  /* Jump threading, redundancy elimination and const/copy propagation.
*************** dom_opt_dom_walker::before_dom_children
*** 1437,1446 ****
    m_avail_exprs_stack->pop_to_marker ();
  
    edge taken_edge = NULL;
    for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
      {
        evrp_range_analyzer.record_ranges_from_stmt (gsi_stmt (gsi), false);
!       taken_edge = this->optimize_stmt (bb, gsi);
      }
  
    /* Now prepare to process dominated blocks.  */
--- 1455,1502 ----
    m_avail_exprs_stack->pop_to_marker ();
  
    edge taken_edge = NULL;
+   /* Initialize visited flag ahead of us, it has undefined state on
+      pass entry.  */
    for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+     gimple_set_visited (gsi_stmt (gsi), false);
+   for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi);)
      {
+       /* Do not optimize a stmt twice, substitution might end up with
+          _3 = _3 which is not valid.  */
+       if (gimple_visited_p (gsi_stmt (gsi)))
+ 	{
+ 	  gsi_next (&gsi);
+ 	  continue;
+ 	}
+ 
+       /* Compute range information and optimize the stmt.  */
        evrp_range_analyzer.record_ranges_from_stmt (gsi_stmt (gsi), false);
!       bool removed_p = false;
!       taken_edge = this->optimize_stmt (bb, &gsi, &removed_p);
!       if (!removed_p)
! 	gimple_set_visited (gsi_stmt (gsi), true);
! 
!       /* Go back and visit stmts inserted by folding after substituting
! 	 into the stmt at gsi.  */
!       if (gsi_end_p (gsi))
! 	{
! 	  gcc_checking_assert (removed_p);
! 	  gsi = gsi_last_bb (bb);
! 	  while (!gsi_end_p (gsi) && !gimple_visited_p (gsi_stmt (gsi)))
! 	    gsi_prev (&gsi);
! 	}
!       else
! 	{
! 	  do
! 	    {
! 	      gsi_prev (&gsi);
! 	    }
! 	  while (!gsi_end_p (gsi) && !gimple_visited_p (gsi_stmt (gsi)));
! 	}
!       if (gsi_end_p (gsi))
! 	gsi = gsi_start_bb (bb);
!       else
! 	gsi_next (&gsi);
      }
  
    /* Now prepare to process dominated blocks.  */
*************** test_for_singularity (gimple *stmt, gcon
*** 1905,1911 ****
        condition to an equality condition.  */
  
  edge
! dom_opt_dom_walker::optimize_stmt (basic_block bb, gimple_stmt_iterator si)
  {
    gimple *stmt, *old_stmt;
    bool may_optimize_p;
--- 1961,1968 ----
        condition to an equality condition.  */
  
  edge
! dom_opt_dom_walker::optimize_stmt (basic_block bb, gimple_stmt_iterator *si,
! 				   bool *removed_p)
  {
    gimple *stmt, *old_stmt;
    bool may_optimize_p;
*************** dom_opt_dom_walker::optimize_stmt (basic
*** 1913,1919 ****
    bool was_noreturn;
    edge retval = NULL;
  
!   old_stmt = stmt = gsi_stmt (si);
    was_noreturn = is_gimple_call (stmt) && gimple_call_noreturn_p (stmt);
  
    if (dump_file && (dump_flags & TDF_DETAILS))
--- 1970,1976 ----
    bool was_noreturn;
    edge retval = NULL;
  
!   old_stmt = stmt = gsi_stmt (*si);
    was_noreturn = is_gimple_call (stmt) && gimple_call_noreturn_p (stmt);
  
    if (dump_file && (dump_flags & TDF_DETAILS))
*************** dom_opt_dom_walker::optimize_stmt (basic
*** 1936,1944 ****
  
        /* Try to fold the statement making sure that STMT is kept
  	 up to date.  */
!       if (fold_stmt (&si))
  	{
! 	  stmt = gsi_stmt (si);
  	  gimple_set_modified (stmt, true);
  
  	  if (dump_file && (dump_flags & TDF_DETAILS))
--- 1993,2001 ----
  
        /* Try to fold the statement making sure that STMT is kept
  	 up to date.  */
!       if (fold_stmt (si))
  	{
! 	  stmt = gsi_stmt (*si);
  	  gimple_set_modified (stmt, true);
  
  	  if (dump_file && (dump_flags & TDF_DETAILS))
*************** dom_opt_dom_walker::optimize_stmt (basic
*** 1987,1994 ****
  	      && DECL_BUILT_IN_CLASS (callee) == BUILT_IN_NORMAL
  	      && DECL_FUNCTION_CODE (callee) == BUILT_IN_CONSTANT_P)
  	    {
! 	      propagate_tree_value_into_stmt (&si, integer_zero_node);
! 	      stmt = gsi_stmt (si);
  	    }
  	}
  
--- 2044,2051 ----
  	      && DECL_BUILT_IN_CLASS (callee) == BUILT_IN_NORMAL
  	      && DECL_FUNCTION_CODE (callee) == BUILT_IN_CONSTANT_P)
  	    {
! 	      propagate_tree_value_into_stmt (si, integer_zero_node);
! 	      stmt = gsi_stmt (*si);
  	    }
  	}
  
*************** dom_opt_dom_walker::optimize_stmt (basic
*** 2044,2052 ****
  	}
  
        update_stmt_if_modified (stmt);
!       eliminate_redundant_computations (&si, m_const_and_copies,
  					m_avail_exprs_stack);
!       stmt = gsi_stmt (si);
  
        /* Perform simple redundant store elimination.  */
        if (gimple_assign_single_p (stmt)
--- 2101,2109 ----
  	}
  
        update_stmt_if_modified (stmt);
!       eliminate_redundant_computations (si, m_const_and_copies,
  					m_avail_exprs_stack);
!       stmt = gsi_stmt (*si);
  
        /* Perform simple redundant store elimination.  */
        if (gimple_assign_single_p (stmt)
*************** dom_opt_dom_walker::optimize_stmt (basic
*** 2073,2085 ****
  	    {
  	      basic_block bb = gimple_bb (stmt);
  	      unlink_stmt_vdef (stmt);
! 	      if (gsi_remove (&si, true))
  		{
  		  bitmap_set_bit (need_eh_cleanup, bb->index);
  		  if (dump_file && (dump_flags & TDF_DETAILS))
  		    fprintf (dump_file, "  Flagged to clear EH edges.\n");
  		}
  	      release_defs (stmt);
  	      return retval;
  	    }
  	}
--- 2130,2143 ----
  	    {
  	      basic_block bb = gimple_bb (stmt);
  	      unlink_stmt_vdef (stmt);
! 	      if (gsi_remove (si, true))
  		{
  		  bitmap_set_bit (need_eh_cleanup, bb->index);
  		  if (dump_file && (dump_flags & TDF_DETAILS))
  		    fprintf (dump_file, "  Flagged to clear EH edges.\n");
  		}
  	      release_defs (stmt);
+ 	      *removed_p = true;
  	      return retval;
  	    }
  	}
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-forwprop.c gcc-8.4.0/gcc/tree-ssa-forwprop.c
*** gcc-8.3.0/gcc/tree-ssa-forwprop.c	Thu Jan  4 18:04:54 2018
--- gcc-8.4.0/gcc/tree-ssa-forwprop.c	Wed Mar  4 08:30:02 2020
*************** pass_forwprop::execute (function *fun)
*** 2481,2486 ****
--- 2481,2488 ----
  		  {
  		    int did_something;
  		    did_something = forward_propagate_into_comparison (&gsi);
+ 		    if (maybe_clean_or_replace_eh_stmt (stmt, gsi_stmt (gsi)))
+ 		      bitmap_set_bit (to_purge, bb->index);
  		    if (did_something == 2)
  		      cfg_changed = true;
  		    changed = did_something != 0;
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-ifcombine.c gcc-8.4.0/gcc/tree-ssa-ifcombine.c
*** gcc-8.3.0/gcc/tree-ssa-ifcombine.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/tree-ssa-ifcombine.c	Wed Mar  4 08:30:02 2020
*************** along with GCC; see the file COPYING3.
*** 40,45 ****
--- 40,46 ----
  #include "gimplify-me.h"
  #include "tree-cfg.h"
  #include "tree-ssa.h"
+ #include "params.h"
  
  #ifndef LOGICAL_OP_NON_SHORT_CIRCUIT
  #define LOGICAL_OP_NON_SHORT_CIRCUIT \
*************** ifcombine_ifandif (basic_block inner_con
*** 556,562 ****
  	{
  	  tree t1, t2;
  	  gimple_stmt_iterator gsi;
! 	  if (!LOGICAL_OP_NON_SHORT_CIRCUIT || flag_sanitize_coverage)
  	    return false;
  	  /* Only do this optimization if the inner bb contains only the conditional. */
  	  if (!gsi_one_before_end_p (gsi_start_nondebug_after_labels_bb (inner_cond_bb)))
--- 557,567 ----
  	{
  	  tree t1, t2;
  	  gimple_stmt_iterator gsi;
! 	  bool logical_op_non_short_circuit = LOGICAL_OP_NON_SHORT_CIRCUIT;
! 	  if (PARAM_VALUE (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT) != -1)
! 	    logical_op_non_short_circuit
! 	      = PARAM_VALUE (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT);
! 	  if (!logical_op_non_short_circuit || flag_sanitize_coverage)
  	    return false;
  	  /* Only do this optimization if the inner bb contains only the conditional. */
  	  if (!gsi_one_before_end_p (gsi_start_nondebug_after_labels_bb (inner_cond_bb)))
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-loop-ch.c gcc-8.4.0/gcc/tree-ssa-loop-ch.c
*** gcc-8.3.0/gcc/tree-ssa-loop-ch.c	Mon Mar 12 08:45:54 2018
--- gcc-8.4.0/gcc/tree-ssa-loop-ch.c	Wed Mar  4 08:30:02 2020
*************** should_duplicate_loop_header_p (basic_bl
*** 99,105 ****
      }
  
    last = last_stmt (header);
!   if (gimple_code (last) != GIMPLE_COND)
      {
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file,
--- 99,105 ----
      }
  
    last = last_stmt (header);
!   if (!last || gimple_code (last) != GIMPLE_COND)
      {
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file,
*************** ch_base::copy_headers (function *fun)
*** 376,386 ****
  		{
  		  gimple *stmt = gsi_stmt (bsi);
  		  if (gimple_code (stmt) == GIMPLE_COND)
! 		    gimple_set_no_warning (stmt, true);
  		  else if (is_gimple_assign (stmt))
  		    {
  		      enum tree_code rhs_code = gimple_assign_rhs_code (stmt);
! 		      if (TREE_CODE_CLASS (rhs_code) == tcc_comparison)
  			gimple_set_no_warning (stmt, true);
  		    }
  		}
--- 376,398 ----
  		{
  		  gimple *stmt = gsi_stmt (bsi);
  		  if (gimple_code (stmt) == GIMPLE_COND)
! 		    {
! 		      tree lhs = gimple_cond_lhs (stmt);
! 		      if (gimple_cond_code (stmt) != EQ_EXPR
! 			  && gimple_cond_code (stmt) != NE_EXPR
! 			  && INTEGRAL_TYPE_P (TREE_TYPE (lhs))
! 			  && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (lhs)))
! 			gimple_set_no_warning (stmt, true);
! 		    }
  		  else if (is_gimple_assign (stmt))
  		    {
  		      enum tree_code rhs_code = gimple_assign_rhs_code (stmt);
! 		      tree rhs1 = gimple_assign_rhs1 (stmt);
! 		      if (TREE_CODE_CLASS (rhs_code) == tcc_comparison
! 			  && rhs_code != EQ_EXPR
! 			  && rhs_code != NE_EXPR
! 			  && INTEGRAL_TYPE_P (TREE_TYPE (rhs1))
! 			  && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (rhs1)))
  			gimple_set_no_warning (stmt, true);
  		    }
  		}
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-loop-ivcanon.c gcc-8.4.0/gcc/tree-ssa-loop-ivcanon.c
*** gcc-8.3.0/gcc/tree-ssa-loop-ivcanon.c	Tue Oct 16 07:28:49 2018
--- gcc-8.4.0/gcc/tree-ssa-loop-ivcanon.c	Wed Mar  4 08:30:02 2020
*************** canonicalize_loop_induction_variables (s
*** 1177,1183 ****
  	= niter_desc.may_be_zero && !integer_zerop (niter_desc.may_be_zero);
      }
    if (TREE_CODE (niter) == INTEGER_CST)
!     locus = gimple_location (last_stmt (exit->src));
    else
      {
        /* For non-constant niter fold may_be_zero into niter again.  */
--- 1177,1183 ----
  	= niter_desc.may_be_zero && !integer_zerop (niter_desc.may_be_zero);
      }
    if (TREE_CODE (niter) == INTEGER_CST)
!     locus = gimple_location_safe (last_stmt (exit->src));
    else
      {
        /* For non-constant niter fold may_be_zero into niter again.  */
*************** canonicalize_loop_induction_variables (s
*** 1204,1210 ****
  	niter = find_loop_niter_by_eval (loop, &exit);
  
        if (exit)
!         locus = gimple_location (last_stmt (exit->src));
  
        if (TREE_CODE (niter) != INTEGER_CST)
  	exit = NULL;
--- 1204,1210 ----
  	niter = find_loop_niter_by_eval (loop, &exit);
  
        if (exit)
!         locus = gimple_location_safe (last_stmt (exit->src));
  
        if (TREE_CODE (niter) != INTEGER_CST)
  	exit = NULL;
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-loop-ivopts.c gcc-8.4.0/gcc/tree-ssa-loop-ivopts.c
*** gcc-8.3.0/gcc/tree-ssa-loop-ivopts.c	Sat Jan 13 17:59:15 2018
--- gcc-8.4.0/gcc/tree-ssa-loop-ivopts.c	Wed Mar  4 08:30:02 2020
*************** struct ivopts_data
*** 582,587 ****
--- 582,590 ----
    /* The common candidates.  */
    vec<iv_common_cand *> iv_common_cands;
  
+   /* Hash map recording base object information of tree exp.  */
+   hash_map<tree, tree> *base_object_map;
+ 
    /* The maximum invariant variable id.  */
    unsigned max_inv_var_id;
  
*************** tree_ssa_iv_optimize_init (struct ivopts
*** 1093,1153 ****
    data->vcands.create (20);
    data->inv_expr_tab = new hash_table<iv_inv_expr_hasher> (10);
    data->name_expansion_cache = NULL;
    data->iv_common_cand_tab = new hash_table<iv_common_cand_hasher> (10);
    data->iv_common_cands.create (20);
    decl_rtl_to_reset.create (20);
    gcc_obstack_init (&data->iv_obstack);
  }
  
! /* Returns a memory object to that EXPR points.  In case we are able to
!    determine that it does not point to any such object, NULL is returned.  */
  
  static tree
! determine_base_object (tree expr)
  {
!   enum tree_code code = TREE_CODE (expr);
!   tree base, obj;
! 
!   /* If this is a pointer casted to any type, we need to determine
!      the base object for the pointer; so handle conversions before
!      throwing away non-pointer expressions.  */
!   if (CONVERT_EXPR_P (expr))
!     return determine_base_object (TREE_OPERAND (expr, 0));
! 
!   if (!POINTER_TYPE_P (TREE_TYPE (expr)))
!     return NULL_TREE;
! 
!   switch (code)
      {
!     case INTEGER_CST:
!       return NULL_TREE;
! 
!     case ADDR_EXPR:
!       obj = TREE_OPERAND (expr, 0);
!       base = get_base_address (obj);
! 
        if (!base)
! 	return expr;
! 
!       if (TREE_CODE (base) == MEM_REF)
! 	return determine_base_object (TREE_OPERAND (base, 0));
  
!       return fold_convert (ptr_type_node,
! 			   build_fold_addr_expr (base));
  
!     case POINTER_PLUS_EXPR:
!       return determine_base_object (TREE_OPERAND (expr, 0));
  
!     case PLUS_EXPR:
!     case MINUS_EXPR:
!       /* Pointer addition is done solely using POINTER_PLUS_EXPR.  */
!       gcc_unreachable ();
  
!     default:
!       if (POLY_INT_CST_P (expr))
! 	return NULL_TREE;
!       return fold_convert (ptr_type_node, expr);
      }
  }
  
  /* Return true if address expression with non-DECL_P operand appears
--- 1096,1163 ----
    data->vcands.create (20);
    data->inv_expr_tab = new hash_table<iv_inv_expr_hasher> (10);
    data->name_expansion_cache = NULL;
+   data->base_object_map = NULL;
    data->iv_common_cand_tab = new hash_table<iv_common_cand_hasher> (10);
    data->iv_common_cands.create (20);
    decl_rtl_to_reset.create (20);
    gcc_obstack_init (&data->iv_obstack);
  }
  
! /* walk_tree callback for determine_base_object.  */
  
  static tree
! determine_base_object_1 (tree *tp, int *walk_subtrees, void *wdata)
  {
!   tree_code code = TREE_CODE (*tp);
!   tree obj = NULL_TREE;
!   if (code == ADDR_EXPR)
      {
!       tree base = get_base_address (TREE_OPERAND (*tp, 0));
        if (!base)
! 	obj = *tp;
!       else if (TREE_CODE (base) != MEM_REF)
! 	obj = fold_convert (ptr_type_node, build_fold_addr_expr (base));
!     }
!   else if (code == SSA_NAME && POINTER_TYPE_P (TREE_TYPE (*tp)))
! 	obj = fold_convert (ptr_type_node, *tp);
  
!   if (!obj)
!     {
!       if (!EXPR_P (*tp))
! 	*walk_subtrees = 0;
  
!       return NULL_TREE;
!     }
!   /* Record special node for multiple base objects and stop.  */
!   if (*static_cast<tree *> (wdata))
!     {
!       *static_cast<tree *> (wdata) = integer_zero_node;
!       return integer_zero_node;
!     }
!   /* Record the base object and continue looking.  */
!   *static_cast<tree *> (wdata) = obj;
!   return NULL_TREE;
! }
  
! /* Returns a memory object to that EXPR points with caching.  Return NULL if we
!    are able to determine that it does not point to any such object; specially
!    return integer_zero_node if EXPR contains multiple base objects.  */
  
! static tree
! determine_base_object (struct ivopts_data *data, tree expr)
! {
!   tree *slot, obj = NULL_TREE;
!   if (data->base_object_map)
!     {
!       if ((slot = data->base_object_map->get(expr)) != NULL)
! 	return *slot;
      }
+   else
+     data->base_object_map = new hash_map<tree, tree>;
+ 
+   (void) walk_tree_without_duplicates (&expr, determine_base_object_1, &obj);
+   data->base_object_map->put (expr, obj);
+   return obj;
  }
  
  /* Return true if address expression with non-DECL_P operand appears
*************** alloc_iv (struct ivopts_data *data, tree
*** 1205,1211 ****
      }
  
    iv->base = base;
!   iv->base_object = determine_base_object (base);
    iv->step = step;
    iv->biv_p = false;
    iv->nonlin_use = NULL;
--- 1215,1221 ----
      }
  
    iv->base = base;
!   iv->base_object = determine_base_object (data, base);
    iv->step = step;
    iv->biv_p = false;
    iv->nonlin_use = NULL;
*************** tree_ssa_iv_optimize_finalize (struct iv
*** 7487,7492 ****
--- 7497,7504 ----
    delete data->inv_expr_tab;
    data->inv_expr_tab = NULL;
    free_affine_expand_cache (&data->name_expansion_cache);
+   if (data->base_object_map)
+     delete data->base_object_map;
    delete data->iv_common_cand_tab;
    data->iv_common_cand_tab = NULL;
    data->iv_common_cands.release ();
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-math-opts.c gcc-8.4.0/gcc/tree-ssa-math-opts.c
*** gcc-8.3.0/gcc/tree-ssa-math-opts.c	Wed Sep  5 07:21:15 2018
--- gcc-8.4.0/gcc/tree-ssa-math-opts.c	Wed Mar  4 08:30:02 2020
*************** is_division_by (gimple *use_stmt, tree d
*** 334,340 ****
  	 /* Do not recognize x / x as valid division, as we are getting
  	    confused later by replacing all immediate uses x in such
  	    a stmt.  */
! 	 && gimple_assign_rhs1 (use_stmt) != def;
  }
  
  /* Return whether USE_STMT is DEF * DEF.  */
--- 334,341 ----
  	 /* Do not recognize x / x as valid division, as we are getting
  	    confused later by replacing all immediate uses x in such
  	    a stmt.  */
! 	 && gimple_assign_rhs1 (use_stmt) != def
! 	 && !stmt_can_throw_internal (use_stmt);
  }
  
  /* Return whether USE_STMT is DEF * DEF.  */
*************** is_division_by_square (gimple *use_stmt,
*** 359,371 ****
  {
    if (gimple_code (use_stmt) == GIMPLE_ASSIGN
        && gimple_assign_rhs_code (use_stmt) == RDIV_EXPR
!       && gimple_assign_rhs1 (use_stmt) != gimple_assign_rhs2 (use_stmt))
      {
        tree denominator = gimple_assign_rhs2 (use_stmt);
        if (TREE_CODE (denominator) == SSA_NAME)
! 	{
! 	  return is_square_of (SSA_NAME_DEF_STMT (denominator), def);
! 	}
      }
    return 0;
  }
--- 360,371 ----
  {
    if (gimple_code (use_stmt) == GIMPLE_ASSIGN
        && gimple_assign_rhs_code (use_stmt) == RDIV_EXPR
!       && gimple_assign_rhs1 (use_stmt) != gimple_assign_rhs2 (use_stmt)
!       && !stmt_can_throw_internal (use_stmt))
      {
        tree denominator = gimple_assign_rhs2 (use_stmt);
        if (TREE_CODE (denominator) == SSA_NAME)
! 	return is_square_of (SSA_NAME_DEF_STMT (denominator), def);
      }
    return 0;
  }
*************** execute_cse_reciprocals_1 (gimple_stmt_i
*** 603,609 ****
  
    /* If it is more profitable to optimize 1 / x, don't optimize 1 / (x * x).  */
    if (sqrt_recip_count > square_recip_count)
!     return;
  
    /* Do the expensive part only if we can hope to optimize something.  */
    if (count + square_recip_count >= threshold && count >= 1)
--- 603,609 ----
  
    /* If it is more profitable to optimize 1 / x, don't optimize 1 / (x * x).  */
    if (sqrt_recip_count > square_recip_count)
!     goto out;
  
    /* Do the expensive part only if we can hope to optimize something.  */
    if (count + square_recip_count >= threshold && count >= 1)
*************** execute_cse_reciprocals_1 (gimple_stmt_i
*** 646,651 ****
--- 646,652 ----
  	}
      }
  
+ out:
    for (occ = occ_head; occ; )
      occ = free_bb (occ);
  
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-phiopt.c gcc-8.4.0/gcc/tree-ssa-phiopt.c
*** gcc-8.3.0/gcc/tree-ssa-phiopt.c	Mon Mar 19 14:08:58 2018
--- gcc-8.4.0/gcc/tree-ssa-phiopt.c	Wed Mar  4 08:30:02 2020
*************** cond_store_replacement (basic_block midd
*** 1894,1899 ****
--- 1894,1904 ----
        || gimple_has_volatile_ops (assign))
      return false;
  
+   /* And no PHI nodes so all uses in the single stmt are also
+      available where we insert to.  */
+   if (!gimple_seq_empty_p (phi_nodes (middle_bb)))
+     return false;
+ 
    locus = gimple_location (assign);
    lhs = gimple_assign_lhs (assign);
    rhs = gimple_assign_rhs1 (assign);
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-phiprop.c gcc-8.4.0/gcc/tree-ssa-phiprop.c
*** gcc-8.3.0/gcc/tree-ssa-phiprop.c	Wed Feb  6 12:56:02 2019
--- gcc-8.4.0/gcc/tree-ssa-phiprop.c	Wed Mar  4 08:30:02 2020
*************** propagate_with_phi (basic_block bb, gphi
*** 338,345 ****
  	    && (!type
  		|| types_compatible_p
  		     (TREE_TYPE (gimple_assign_lhs (use_stmt)), type))
! 	    /* We cannot replace a load that may throw or is volatile.  */
! 	    && !stmt_can_throw_internal (use_stmt)))
  	continue;
  
        /* Check if we can move the loads.  The def stmt of the virtual use
--- 338,352 ----
  	    && (!type
  		|| types_compatible_p
  		     (TREE_TYPE (gimple_assign_lhs (use_stmt)), type))
! 	    /* We cannot replace a load that may throw or is volatile.
! 	       For volatiles the transform can change the number of
! 	       executions if the load is inside a loop but the address
! 	       computations outside (PR91812).  We could relax this
! 	       if we guard against that appropriately.  For loads that can
! 	       throw we could relax things if the moved loads all are
! 	       known to not throw.  */
! 	    && !stmt_can_throw_internal (use_stmt)
! 	    && !gimple_has_volatile_ops (use_stmt)))
  	continue;
  
        /* Check if we can move the loads.  The def stmt of the virtual use
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-pre.c gcc-8.4.0/gcc/tree-ssa-pre.c
*** gcc-8.3.0/gcc/tree-ssa-pre.c	Wed Mar 14 10:55:45 2018
--- gcc-8.4.0/gcc/tree-ssa-pre.c	Wed Mar  4 08:30:02 2020
*************** compute_avail (void)
*** 3919,3924 ****
--- 3919,3931 ----
  			  continue;
  			}
  
+ 		      /* If the REFERENCE traps and there was a preceding
+ 		         point in the block that might not return avoid
+ 			 adding the reference to EXP_GEN.  */
+ 		      if (BB_MAY_NOTRETURN (block)
+ 			  && vn_reference_may_trap (ref))
+ 			continue;
+ 
  		      /* If the value of the reference is not invalidated in
  			 this block until it is computed, add the expression
  			 to EXP_GEN.  */
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-reassoc.c gcc-8.4.0/gcc/tree-ssa-reassoc.c
*** gcc-8.3.0/gcc/tree-ssa-reassoc.c	Thu Jan 24 09:31:51 2019
--- gcc-8.4.0/gcc/tree-ssa-reassoc.c	Wed Mar  4 08:30:02 2020
*************** init_range_entry (struct range_entry *r,
*** 2143,2149 ****
  	  exp_type = boolean_type_node;
  	}
  
!       if (TREE_CODE (arg0) != SSA_NAME)
  	break;
        loc = gimple_location (stmt);
        switch (code)
--- 2143,2150 ----
  	  exp_type = boolean_type_node;
  	}
  
!       if (TREE_CODE (arg0) != SSA_NAME
! 	  || SSA_NAME_OCCURS_IN_ABNORMAL_PHI (arg0))
  	break;
        loc = gimple_location (stmt);
        switch (code)
*************** rewrite_expr_tree_parallel (gassign *stm
*** 4768,4773 ****
--- 4769,4775 ----
        else
  	{
  	  stmts[i] = build_and_add_sum (TREE_TYPE (last_rhs1), op1, op2, opcode);
+ 	  gimple_set_visited (stmts[i], true);
  	}
        if (dump_file && (dump_flags & TDF_DETAILS))
  	{
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-sccvn.c gcc-8.4.0/gcc/tree-ssa-sccvn.c
*** gcc-8.3.0/gcc/tree-ssa-sccvn.c	Wed Feb 13 14:22:06 2019
--- gcc-8.4.0/gcc/tree-ssa-sccvn.c	Wed Mar  4 08:30:02 2020
*************** along with GCC; see the file COPYING3.
*** 69,74 ****
--- 69,75 ----
  #include "tree-cfgcleanup.h"
  #include "tree-ssa-loop.h"
  #include "tree-scalar-evolution.h"
+ #include "builtins.h"
  #include "tree-ssa-sccvn.h"
  
  /* This algorithm is based on the SCC algorithm presented by Keith
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 1857,1879 ****
        /* If we reach a clobbering statement try to skip it and see if
           we find a VN result with exactly the same value as the
  	 possible clobber.  In this case we can ignore the clobber
! 	 and return the found value.
! 	 Note that we don't need to worry about partial overlapping
! 	 accesses as we then can use TBAA to disambiguate against the
! 	 clobbering statement when looking up a load (thus the
! 	 VN_WALKREWRITE guard).  */
        if (vn_walk_kind == VN_WALKREWRITE
  	  && is_gimple_reg_type (TREE_TYPE (lhs))
  	  && types_compatible_p (TREE_TYPE (lhs), vr->type)
! 	  /* The overlap restriction breaks down when either access
! 	     alias-set is zero.  Still for accesses of the size of
! 	     an addressable unit there can be no overlaps.  Overlaps
! 	     between different union members are not an issue since
! 	     activation of a union member via a store makes the
! 	     values of untouched bytes unspecified.  */
! 	  && (known_eq (ref->size, BITS_PER_UNIT)
! 	      || (get_alias_set (lhs) != 0
! 		  && ao_ref_alias_set (ref) != 0)))
  	{
  	  tree *saved_last_vuse_ptr = last_vuse_ptr;
  	  /* Do not update last_vuse_ptr in vn_reference_lookup_2.  */
--- 1858,1868 ----
        /* If we reach a clobbering statement try to skip it and see if
           we find a VN result with exactly the same value as the
  	 possible clobber.  In this case we can ignore the clobber
! 	 and return the found value.  */
        if (vn_walk_kind == VN_WALKREWRITE
  	  && is_gimple_reg_type (TREE_TYPE (lhs))
  	  && types_compatible_p (TREE_TYPE (lhs), vr->type)
! 	  && ref->ref)
  	{
  	  tree *saved_last_vuse_ptr = last_vuse_ptr;
  	  /* Do not update last_vuse_ptr in vn_reference_lookup_2.  */
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 1891,1897 ****
  	      vn_reference_t vnresult = (vn_reference_t) res;
  	      if (vnresult->result
  		  && operand_equal_p (vnresult->result,
! 				      gimple_assign_rhs1 (def_stmt), 0))
  		return res;
  	    }
  	}
--- 1880,1893 ----
  	      vn_reference_t vnresult = (vn_reference_t) res;
  	      if (vnresult->result
  		  && operand_equal_p (vnresult->result,
! 				      gimple_assign_rhs1 (def_stmt), 0)
! 		  /* We have to honor our promise about union type punning
! 		     and also support arbitrary overlaps with
! 		     -fno-strict-aliasing.  So simply resort to alignment to
! 		     rule out overlaps.  Do this check last because it is
! 		     quite expensive compared to the hash-lookup above.  */
! 		  && multiple_p (get_object_alignment (ref->ref), ref->size)
! 		  && multiple_p (get_object_alignment (lhs), ref->size))
  		return res;
  	    }
  	}
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 2031,2039 ****
  	  tree rhs = gimple_assign_rhs1 (def_stmt);
  	  if (TREE_CODE (rhs) == SSA_NAME)
  	    rhs = SSA_VAL (rhs);
! 	  len = native_encode_expr (gimple_assign_rhs1 (def_stmt),
  				    buffer, sizeof (buffer),
! 				    (offseti - offset2) / BITS_PER_UNIT);
  	  if (len > 0 && len * BITS_PER_UNIT >= maxsizei)
  	    {
  	      tree type = vr->type;
--- 2027,2046 ----
  	  tree rhs = gimple_assign_rhs1 (def_stmt);
  	  if (TREE_CODE (rhs) == SSA_NAME)
  	    rhs = SSA_VAL (rhs);
! 	  unsigned pad = 0;
! 	  if (BYTES_BIG_ENDIAN
! 	      && is_a <scalar_mode> (TYPE_MODE (TREE_TYPE (rhs))))
! 	    {
! 	      /* On big-endian the padding is at the 'front' so
! 		 just skip the initial bytes.  */
! 	      fixed_size_mode mode
! 		  = as_a <fixed_size_mode> (TYPE_MODE (TREE_TYPE (rhs)));
! 	      pad = GET_MODE_SIZE (mode) - size2 / BITS_PER_UNIT;
! 	    }
! 	  len = native_encode_expr (rhs,
  				    buffer, sizeof (buffer),
! 				    ((offseti - offset2) / BITS_PER_UNIT
! 				     + pad));
  	  if (len > 0 && len * BITS_PER_UNIT >= maxsizei)
  	    {
  	      tree type = vr->type;
*************** public:
*** 5207,5212 ****
--- 5214,5270 ----
    auto_vec<tree> avail_stack;
  };
  
+ /* Return true if the reference operation REF may trap.  */
+ 
+ bool
+ vn_reference_may_trap (vn_reference_t ref)
+ {
+   switch (ref->operands[0].opcode)
+     {
+     case MODIFY_EXPR:
+     case CALL_EXPR:
+       /* We do not handle calls.  */
+     case ADDR_EXPR:
+       /* And toplevel address computations never trap.  */
+       return false;
+     default:;
+     }
+ 
+   vn_reference_op_t op;
+   unsigned i;
+   FOR_EACH_VEC_ELT (ref->operands, i, op)
+     {
+       switch (op->opcode)
+ 	{
+ 	case WITH_SIZE_EXPR:
+ 	case TARGET_MEM_REF:
+ 	  /* Always variable.  */
+ 	  return true;
+ 	case COMPONENT_REF:
+ 	  if (op->op1 && TREE_CODE (op->op1) == SSA_NAME)
+ 	    return true;
+ 	  break;
+ 	case ARRAY_RANGE_REF:
+ 	case ARRAY_REF:
+ 	  if (TREE_CODE (op->op0) == SSA_NAME)
+ 	    return true;
+ 	  break;
+ 	case MEM_REF:
+ 	  /* Nothing interesting in itself, the base is separate.  */
+ 	  break;
+ 	/* The following are the address bases.  */
+ 	case SSA_NAME:
+ 	  return true;
+ 	case ADDR_EXPR:
+ 	  if (op->op0)
+ 	    return tree_could_trap_p (TREE_OPERAND (op->op0, 0));
+ 	  return false;
+ 	default:;
+ 	}
+     }
+   return false;
+ }
+ 
  eliminate_dom_walker::eliminate_dom_walker (cdi_direction direction,
  					    bitmap inserted_exprs_)
    : dom_walker (direction), do_pre (inserted_exprs_ != NULL),
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-sccvn.h gcc-8.4.0/gcc/tree-ssa-sccvn.h
*** gcc-8.3.0/gcc/tree-ssa-sccvn.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/tree-ssa-sccvn.h	Wed Mar  4 08:30:02 2020
*************** vn_reference_t vn_reference_insert_piece
*** 239,244 ****
--- 239,245 ----
  bool vn_nary_op_eq (const_vn_nary_op_t const vno1,
  		    const_vn_nary_op_t const vno2);
  bool vn_nary_may_trap (vn_nary_op_t);
+ bool vn_reference_may_trap (vn_reference_t);
  bool vn_reference_eq (const_vn_reference_t const, const_vn_reference_t const);
  unsigned int get_max_value_id (void);
  unsigned int get_next_value_id (void);
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-sink.c gcc-8.4.0/gcc/tree-ssa-sink.c
*** gcc-8.3.0/gcc/tree-ssa-sink.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/tree-ssa-sink.c	Wed Mar  4 08:30:02 2020
*************** select_best_block (basic_block early_bb,
*** 229,235 ****
        /* If result of comparsion is unknown, preffer EARLY_BB.
  	 Thus use !(...>=..) rather than (...<...)  */
        && !(best_bb->count.apply_scale (100, 1)
! 	   > (early_bb->count.apply_scale (threshold, 1))))
      return best_bb;
  
    /* No better block found, so return EARLY_BB, which happens to be the
--- 229,235 ----
        /* If result of comparsion is unknown, preffer EARLY_BB.
  	 Thus use !(...>=..) rather than (...<...)  */
        && !(best_bb->count.apply_scale (100, 1)
! 	   >= early_bb->count.apply_scale (threshold, 1)))
      return best_bb;
  
    /* No better block found, so return EARLY_BB, which happens to be the
*************** statement_sink_location (gimple *stmt, b
*** 439,445 ****
  	  if (sinkbb == frombb)
  	    return false;
  
! 	  *togsi = gsi_for_stmt (use);
  
  	  return true;
  	}
--- 439,448 ----
  	  if (sinkbb == frombb)
  	    return false;
  
! 	  if (sinkbb == gimple_bb (use))
! 	    *togsi = gsi_for_stmt (use);
! 	  else
! 	    *togsi = gsi_after_labels (sinkbb);
  
  	  return true;
  	}
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-strlen.c gcc-8.4.0/gcc/tree-ssa-strlen.c
*** gcc-8.3.0/gcc/tree-ssa-strlen.c	Tue Aug 28 16:43:58 2018
--- gcc-8.4.0/gcc/tree-ssa-strlen.c	Wed Mar  4 08:30:02 2020
*************** valid_builtin_call (gimple *stmt)
*** 996,1005 ****
--- 996,1013 ----
      return false;
  
    tree callee = gimple_call_fndecl (stmt);
+   tree decl = builtin_decl_explicit (DECL_FUNCTION_CODE (callee));
+   if (decl
+       && decl != callee
+       && !gimple_builtin_call_types_compatible_p (stmt, decl))
+     return false;
+ 
    switch (DECL_FUNCTION_CODE (callee))
      {
      case BUILT_IN_MEMCMP:
      case BUILT_IN_MEMCMP_EQ:
+     case BUILT_IN_STRCMP:
+     case BUILT_IN_STRNCMP:
      case BUILT_IN_STRCHR:
      case BUILT_IN_STRCHR_CHKP:
      case BUILT_IN_STRLEN:
*************** valid_builtin_call (gimple *stmt)
*** 1024,1029 ****
--- 1032,1039 ----
      case BUILT_IN_STPCPY_CHK:
      case BUILT_IN_STPCPY_CHKP:
      case BUILT_IN_STPCPY_CHK_CHKP:
+     case BUILT_IN_STPNCPY:
+     case BUILT_IN_STPNCPY_CHK:
      case BUILT_IN_STRCAT:
      case BUILT_IN_STRCAT_CHK:
      case BUILT_IN_STRCAT_CHKP:
*************** valid_builtin_call (gimple *stmt)
*** 1032,1037 ****
--- 1042,1051 ----
      case BUILT_IN_STRCPY_CHK:
      case BUILT_IN_STRCPY_CHKP:
      case BUILT_IN_STRCPY_CHK_CHKP:
+     case BUILT_IN_STRNCAT:
+     case BUILT_IN_STRNCAT_CHK:
+     case BUILT_IN_STRNCPY:
+     case BUILT_IN_STRNCPY_CHK:
        /* The above functions should be neither const nor pure.  Punt if they
  	 aren't.  */
        if (gimple_vdef (stmt) == NULL_TREE || gimple_vuse (stmt) == NULL_TREE)
diff -Nrcpad gcc-8.3.0/gcc/tree-ssa-structalias.c gcc-8.4.0/gcc/tree-ssa-structalias.c
*** gcc-8.3.0/gcc/tree-ssa-structalias.c	Thu Feb 14 07:41:51 2019
--- gcc-8.4.0/gcc/tree-ssa-structalias.c	Wed Mar  4 08:30:02 2020
*************** get_constraint_for_component_ref (tree t
*** 3232,3240 ****
        return;
      }
  
!   /* Pretend to take the address of the base, we'll take care of
!      adding the required subset of sub-fields below.  */
!   get_constraint_for_1 (t, results, true, lhs_p);
    /* Strip off nothing_id.  */
    if (results->length () == 2)
      {
--- 3232,3260 ----
        return;
      }
  
!   /* Avoid creating pointer-offset constraints, so handle MEM_REF
!      offsets directly.  Pretend to take the address of the base,
!      we'll take care of adding the required subset of sub-fields below.  */
!   if (TREE_CODE (t) == MEM_REF
!       && !integer_zerop (TREE_OPERAND (t, 0)))
!     {
!       poly_offset_int off = mem_ref_offset (t);
!       off <<= LOG2_BITS_PER_UNIT;
!       off += bitpos;
!       poly_int64 off_hwi;
!       if (off.to_shwi (&off_hwi))
! 	bitpos = off_hwi;
!       else
! 	{
! 	  bitpos = 0;
! 	  bitmaxsize = -1;
! 	}
!       get_constraint_for_1 (TREE_OPERAND (t, 0), results, false, lhs_p);
!       do_deref (results);
!     }
!   else
!     get_constraint_for_1 (t, results, true, lhs_p);
! 
    /* Strip off nothing_id.  */
    if (results->length () == 2)
      {
*************** find_func_aliases (struct function *fn,
*** 4904,4913 ****
  	      get_constraint_for_ptr_offset (gimple_assign_rhs1 (t),
  					     NULL_TREE, &rhsc);
  	    }
! 	  else if ((CONVERT_EXPR_CODE_P (code)
! 		    && !(POINTER_TYPE_P (gimple_expr_type (t))
! 			 && !POINTER_TYPE_P (TREE_TYPE (rhsop))))
  		   || gimple_assign_single_p (t))
  	    get_constraint_for_rhs (rhsop, &rhsc);
  	  else if (code == COND_EXPR)
  	    {
--- 4924,4933 ----
  	      get_constraint_for_ptr_offset (gimple_assign_rhs1 (t),
  					     NULL_TREE, &rhsc);
  	    }
! 	  else if (CONVERT_EXPR_CODE_P (code)
  		   || gimple_assign_single_p (t))
+ 	    /* See through conversions, single RHS are handled by
+ 	       get_constraint_for_rhs.  */
  	    get_constraint_for_rhs (rhsop, &rhsc);
  	  else if (code == COND_EXPR)
  	    {
*************** find_func_aliases (struct function *fn,
*** 4926,4939 ****
  	    ;
  	  else
  	    {
! 	      /* All other operations are merges.  */
  	      auto_vec<ce_s, 4> tmp;
  	      struct constraint_expr *rhsp;
  	      unsigned i, j;
! 	      get_constraint_for_rhs (gimple_assign_rhs1 (t), &rhsc);
  	      for (i = 2; i < gimple_num_ops (t); ++i)
  		{
! 		  get_constraint_for_rhs (gimple_op (t, i), &tmp);
  		  FOR_EACH_VEC_ELT (tmp, j, rhsp)
  		    rhsc.safe_push (*rhsp);
  		  tmp.truncate (0);
--- 4946,4961 ----
  	    ;
  	  else
  	    {
! 	      /* All other operations are possibly offsetting merges.  */
  	      auto_vec<ce_s, 4> tmp;
  	      struct constraint_expr *rhsp;
  	      unsigned i, j;
! 	      get_constraint_for_ptr_offset (gimple_assign_rhs1 (t),
! 					     NULL_TREE, &rhsc);
  	      for (i = 2; i < gimple_num_ops (t); ++i)
  		{
! 		  get_constraint_for_ptr_offset (gimple_op (t, i),
! 						 NULL_TREE, &tmp);
  		  FOR_EACH_VEC_ELT (tmp, j, rhsp)
  		    rhsc.safe_push (*rhsp);
  		  tmp.truncate (0);
*************** maybe_set_dependence_info (tree ref, tre
*** 7461,7467 ****
        if (MR_DEPENDENCE_CLIQUE (ref) == 0)
  	{
  	  if (clique == 0)
! 	    clique = ++cfun->last_clique;
  	  if (restrict_var->ruid == 0)
  	    restrict_var->ruid = ++last_ruid;
  	  MR_DEPENDENCE_CLIQUE (ref) = clique;
--- 7483,7493 ----
        if (MR_DEPENDENCE_CLIQUE (ref) == 0)
  	{
  	  if (clique == 0)
! 	    {
! 	      if (cfun->last_clique == 0)
! 		cfun->last_clique = 1;
! 	      clique = 1;
! 	    }
  	  if (restrict_var->ruid == 0)
  	    restrict_var->ruid = ++last_ruid;
  	  MR_DEPENDENCE_CLIQUE (ref) = clique;
*************** maybe_set_dependence_info (tree ref, tre
*** 7472,7483 ****
--- 7498,7539 ----
    return false;
  }
  
+ /* Clear dependence info for the clique DATA.  */
+ 
+ static bool
+ clear_dependence_clique (gimple *, tree base, tree, void *data)
+ {
+   unsigned short clique = (uintptr_t)data;
+   if ((TREE_CODE (base) == MEM_REF
+        || TREE_CODE (base) == TARGET_MEM_REF)
+       && MR_DEPENDENCE_CLIQUE (base) == clique)
+     {
+       MR_DEPENDENCE_CLIQUE (base) = 0;
+       MR_DEPENDENCE_BASE (base) = 0;
+     }
+ 
+   return false;
+ }
+ 
  /* Compute the set of independend memory references based on restrict
     tags and their conservative propagation to the points-to sets.  */
  
  static void
  compute_dependence_clique (void)
  {
+   /* First clear the special "local" clique.  */
+   basic_block bb;
+   if (cfun->last_clique != 0)
+     FOR_EACH_BB_FN (bb, cfun)
+       for (gimple_stmt_iterator gsi = gsi_start_bb (bb);
+ 	   !gsi_end_p (gsi); gsi_next (&gsi))
+ 	{
+ 	  gimple *stmt = gsi_stmt (gsi);
+ 	  walk_stmt_load_store_ops (stmt, (void *)(uintptr_t) 1,
+ 				    clear_dependence_clique,
+ 				    clear_dependence_clique);
+ 	}
+ 
    unsigned short clique = 0;
    unsigned short last_ruid = 0;
    bitmap rvars = BITMAP_ALLOC (NULL);
*************** compute_dependence_clique (void)
*** 7552,7558 ****
  	    }
  	  if (used)
  	    {
! 	      bitmap_set_bit (rvars, restrict_var->id);
  	      varinfo_t escaped = get_varinfo (find (escaped_id));
  	      if (bitmap_bit_p (escaped->solution, restrict_var->id))
  		escaped_p = true;
--- 7608,7617 ----
  	    }
  	  if (used)
  	    {
! 	      /* Add all subvars to the set of restrict pointed-to set. */
! 	      for (unsigned sv = restrict_var->head; sv != 0;
! 		   sv = get_varinfo (sv)->next)
! 		bitmap_set_bit (rvars, sv);
  	      varinfo_t escaped = get_varinfo (find (escaped_id));
  	      if (bitmap_bit_p (escaped->solution, restrict_var->id))
  		escaped_p = true;
diff -Nrcpad gcc-8.3.0/gcc/tree-ssanames.c gcc-8.4.0/gcc/tree-ssanames.c
*** gcc-8.3.0/gcc/tree-ssanames.c	Mon Jan 29 15:22:55 2018
--- gcc-8.4.0/gcc/tree-ssanames.c	Wed Mar  4 08:30:02 2020
*************** reset_flow_sensitive_info (tree name)
*** 788,794 ****
      {
        /* points-to info is not flow-sensitive.  */
        if (SSA_NAME_PTR_INFO (name))
! 	mark_ptr_info_alignment_unknown (SSA_NAME_PTR_INFO (name));
      }
    else
      SSA_NAME_RANGE_INFO (name) = NULL;
--- 788,799 ----
      {
        /* points-to info is not flow-sensitive.  */
        if (SSA_NAME_PTR_INFO (name))
! 	{
! 	  /* [E]VRP can derive context sensitive alignment info and
! 	     non-nullness properties.  We must reset both.  */
! 	  mark_ptr_info_alignment_unknown (SSA_NAME_PTR_INFO (name));
! 	  SSA_NAME_PTR_INFO (name)->pt.null = 1;
! 	}
      }
    else
      SSA_NAME_RANGE_INFO (name) = NULL;
diff -Nrcpad gcc-8.3.0/gcc/tree-streamer-in.c gcc-8.4.0/gcc/tree-streamer-in.c
*** gcc-8.3.0/gcc/tree-streamer-in.c	Fri Feb  8 14:34:49 2019
--- gcc-8.4.0/gcc/tree-streamer-in.c	Wed Mar  4 08:30:02 2020
*************** unpack_ts_decl_common_value_fields (stru
*** 252,258 ****
        LABEL_DECL_UID (expr) = -1;
      }
  
!   if (TREE_CODE (expr) == FIELD_DECL)
      {
        DECL_PACKED (expr) = (unsigned) bp_unpack_value (bp, 1);
        DECL_NONADDRESSABLE_P (expr) = (unsigned) bp_unpack_value (bp, 1);
--- 252,258 ----
        LABEL_DECL_UID (expr) = -1;
      }
  
!   else if (TREE_CODE (expr) == FIELD_DECL)
      {
        DECL_PACKED (expr) = (unsigned) bp_unpack_value (bp, 1);
        DECL_NONADDRESSABLE_P (expr) = (unsigned) bp_unpack_value (bp, 1);
*************** unpack_ts_decl_common_value_fields (stru
*** 260,271 ****
        expr->decl_common.off_align = bp_unpack_value (bp, 8);
      }
  
!   if (VAR_P (expr))
      {
        DECL_HAS_DEBUG_EXPR_P (expr) = (unsigned) bp_unpack_value (bp, 1);
        DECL_NONLOCAL_FRAME (expr) = (unsigned) bp_unpack_value (bp, 1);
      }
  
    if (TREE_CODE (expr) == RESULT_DECL
        || TREE_CODE (expr) == PARM_DECL
        || VAR_P (expr))
--- 260,274 ----
        expr->decl_common.off_align = bp_unpack_value (bp, 8);
      }
  
!   else if (VAR_P (expr))
      {
        DECL_HAS_DEBUG_EXPR_P (expr) = (unsigned) bp_unpack_value (bp, 1);
        DECL_NONLOCAL_FRAME (expr) = (unsigned) bp_unpack_value (bp, 1);
      }
  
+   else if (TREE_CODE (expr) == PARM_DECL)
+     DECL_HIDDEN_STRING_LENGTH (expr) = (unsigned) bp_unpack_value (bp, 1);
+ 
    if (TREE_CODE (expr) == RESULT_DECL
        || TREE_CODE (expr) == PARM_DECL
        || VAR_P (expr))
diff -Nrcpad gcc-8.3.0/gcc/tree-streamer-out.c gcc-8.4.0/gcc/tree-streamer-out.c
*** gcc-8.3.0/gcc/tree-streamer-out.c	Fri Feb  8 14:34:49 2019
--- gcc-8.4.0/gcc/tree-streamer-out.c	Wed Mar  4 08:30:02 2020
*************** pack_ts_decl_common_value_fields (struct
*** 212,218 ****
        bp_pack_var_len_unsigned (bp, EH_LANDING_PAD_NR (expr));
      }
  
!   if (TREE_CODE (expr) == FIELD_DECL)
      {
        bp_pack_value (bp, DECL_PACKED (expr), 1);
        bp_pack_value (bp, DECL_NONADDRESSABLE_P (expr), 1);
--- 212,218 ----
        bp_pack_var_len_unsigned (bp, EH_LANDING_PAD_NR (expr));
      }
  
!   else if (TREE_CODE (expr) == FIELD_DECL)
      {
        bp_pack_value (bp, DECL_PACKED (expr), 1);
        bp_pack_value (bp, DECL_NONADDRESSABLE_P (expr), 1);
*************** pack_ts_decl_common_value_fields (struct
*** 220,231 ****
        bp_pack_value (bp, expr->decl_common.off_align, 8);
      }
  
!   if (VAR_P (expr))
      {
        bp_pack_value (bp, DECL_HAS_DEBUG_EXPR_P (expr), 1);
        bp_pack_value (bp, DECL_NONLOCAL_FRAME (expr), 1);
      }
  
    if (TREE_CODE (expr) == RESULT_DECL
        || TREE_CODE (expr) == PARM_DECL
        || VAR_P (expr))
--- 220,234 ----
        bp_pack_value (bp, expr->decl_common.off_align, 8);
      }
  
!   else if (VAR_P (expr))
      {
        bp_pack_value (bp, DECL_HAS_DEBUG_EXPR_P (expr), 1);
        bp_pack_value (bp, DECL_NONLOCAL_FRAME (expr), 1);
      }
  
+   else if (TREE_CODE (expr) == PARM_DECL)
+     bp_pack_value (bp, DECL_HIDDEN_STRING_LENGTH (expr), 1);
+ 
    if (TREE_CODE (expr) == RESULT_DECL
        || TREE_CODE (expr) == PARM_DECL
        || VAR_P (expr))
diff -Nrcpad gcc-8.3.0/gcc/tree-tailcall.c gcc-8.4.0/gcc/tree-tailcall.c
*** gcc-8.3.0/gcc/tree-tailcall.c	Thu Mar  8 06:56:59 2018
--- gcc-8.4.0/gcc/tree-tailcall.c	Wed Mar  4 08:30:02 2020
*************** along with GCC; see the file COPYING3.
*** 37,42 ****
--- 37,43 ----
  #include "tree-into-ssa.h"
  #include "tree-dfa.h"
  #include "except.h"
+ #include "tree-eh.h"
  #include "dbgcnt.h"
  #include "cfgloop.h"
  #include "common/common-target.h"
*************** find_tail_calls (basic_block bb, struct
*** 472,477 ****
--- 473,513 ----
        && !auto_var_in_fn_p (ass_var, cfun->decl))
      return;
  
+   /* If the call might throw an exception that wouldn't propagate out of
+      cfun, we can't transform to a tail or sibling call (82081).  */
+   if (stmt_could_throw_p (stmt)
+       && !stmt_can_throw_external (stmt))
+     return;
+ 
+   /* If the function returns a value, then at present, the tail call
+      must return the same type of value.  There is conceptually a copy
+      between the object returned by the tail call candidate and the
+      object returned by CFUN itself.
+ 
+      This means that if we have:
+ 
+ 	 lhs = f (&<retval>);    // f reads from <retval>
+ 				 // (lhs is usually also <retval>)
+ 
+      there is a copy between the temporary object returned by f and lhs,
+      meaning that any use of <retval> in f occurs before the assignment
+      to lhs begins.  Thus the <retval> that is live on entry to the call
+      to f is really an independent local variable V that happens to be
+      stored in the RESULT_DECL rather than a local VAR_DECL.
+ 
+      Turning this into a tail call would remove the copy and make the
+      lifetimes of the return value and V overlap.  The same applies to
+      tail recursion, since if f can read from <retval>, we have to assume
+      that CFUN might already have written to <retval> before the call.
+ 
+      The problem doesn't apply when <retval> is passed by value, but that
+      isn't a case we handle anyway.  */
+   tree result_decl = DECL_RESULT (cfun->decl);
+   if (result_decl
+       && may_be_aliased (result_decl)
+       && ref_maybe_used_by_stmt_p (call, result_decl))
+     return;
+ 
    /* We found the call, check whether it is suitable.  */
    tail_recursion = false;
    func = gimple_call_fndecl (call);
diff -Nrcpad gcc-8.3.0/gcc/tree-vect-data-refs.c gcc-8.4.0/gcc/tree-vect-data-refs.c
*** gcc-8.3.0/gcc/tree-vect-data-refs.c	Wed Oct 24 06:53:57 2018
--- gcc-8.4.0/gcc/tree-vect-data-refs.c	Wed Mar  4 08:30:02 2020
*************** vect_get_smallest_scalar_type (gimple *s
*** 144,149 ****
--- 144,173 ----
        if (rhs < lhs)
          scalar_type = rhs_type;
      }
+   else if (gcall *call = dyn_cast <gcall *> (stmt))
+     {
+       unsigned int i = 0;
+       if (gimple_call_internal_p (call))
+ 	{
+ 	  internal_fn ifn = gimple_call_internal_fn (call);
+ 	  if (internal_load_fn_p (ifn) || internal_store_fn_p (ifn))
+ 	    /* gimple_expr_type already picked the type of the loaded
+ 	       or stored data.  */
+ 	    i = ~0U;
+ 	  else if (internal_fn_mask_index (ifn) == 0)
+ 	    i = 1;
+ 	}
+       if (i < gimple_call_num_args (call))
+ 	{
+ 	  tree rhs_type = TREE_TYPE (gimple_call_arg (call, i));
+ 	  if (tree_fits_uhwi_p (TYPE_SIZE_UNIT (rhs_type)))
+ 	    {
+ 	      rhs = TREE_INT_CST_LOW (TYPE_SIZE_UNIT (rhs_type));
+ 	      if (rhs < lhs)
+ 		scalar_type = rhs_type;
+ 	    }
+ 	}
+     }
  
    *lhs_size_unit = lhs;
    *rhs_size_unit = rhs;
*************** vect_preserves_scalar_order_p (gimple *s
*** 206,231 ****
      return true;
  
    /* STMT_A and STMT_B belong to overlapping groups.  All loads in a
!      group are emitted at the position of the last scalar load and all
!      stores in a group are emitted at the position of the last scalar store.
       Compute that position and check whether the resulting order matches
!      the current one.  */
!   gimple *last_a = GROUP_FIRST_ELEMENT (stmtinfo_a);
    if (last_a)
!     for (gimple *s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (last_a)); s;
! 	 s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (s)))
!       last_a = get_later_stmt (last_a, s);
    else
!     last_a = stmt_a;
!   gimple *last_b = GROUP_FIRST_ELEMENT (stmtinfo_b);
    if (last_b)
!     for (gimple *s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (last_b)); s;
! 	 s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (s)))
!       last_b = get_later_stmt (last_b, s);
    else
!     last_b = stmt_b;
!   return ((get_later_stmt (last_a, last_b) == last_a)
! 	  == (get_later_stmt (stmt_a, stmt_b) == stmt_a));
  }
  
  /* A subroutine of vect_analyze_data_ref_dependence.  Handle
--- 230,289 ----
      return true;
  
    /* STMT_A and STMT_B belong to overlapping groups.  All loads in a
!      SLP group are emitted at the position of the last scalar load and
!      all loads in an interleaving group are emitted at the position
!      of the first scalar load.
!      Stores in a group are emitted at the position of the last scalar store.
       Compute that position and check whether the resulting order matches
!      the current one.
!      We have not yet decided between SLP and interleaving so we have
!      to conservatively assume both.  */
!   gimple *il_a;
!   gimple *last_a = il_a = GROUP_FIRST_ELEMENT (stmtinfo_a);
    if (last_a)
!     {
!       for (gimple *s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (last_a)); s;
! 	   s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (s)))
! 	last_a = get_later_stmt (last_a, s);
!       if (!DR_IS_WRITE (STMT_VINFO_DATA_REF (stmtinfo_a)))
! 	{
! 	  for (gimple *s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (il_a)); s;
! 	       s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (s)))
! 	    if (get_later_stmt (il_a, s) == il_a)
! 	      il_a = s;
! 	}
!       else
! 	il_a = last_a;
!     }
    else
!     last_a = il_a = stmt_a;
!   gimple *il_b;
!   gimple *last_b = il_b = GROUP_FIRST_ELEMENT (stmtinfo_b);
    if (last_b)
!     {
!       for (gimple *s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (last_b)); s;
! 	   s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (s)))
! 	last_b = get_later_stmt (last_b, s);
!       if (!DR_IS_WRITE (STMT_VINFO_DATA_REF (stmtinfo_b)))
! 	{
! 	  for (gimple *s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (il_b)); s;
! 	       s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (s)))
! 	    if (get_later_stmt (il_b, s) == il_b)
! 	      il_b = s;
! 	}
!       else
! 	il_b = last_b;
!     }
    else
!     last_b = il_b = stmt_b;
!   bool a_after_b = (get_later_stmt (stmt_a, stmt_b) == stmt_a);
!   return (/* SLP */
! 	  (get_later_stmt (last_a, last_b) == last_a) == a_after_b
! 	  /* Interleaving */
! 	  && (get_later_stmt (il_a, il_b) == il_a) == a_after_b
! 	  /* Mixed */
! 	  && (get_later_stmt (il_a, last_b) == il_a) == a_after_b
! 	  && (get_later_stmt (last_a, il_b) == last_a) == a_after_b);
  }
  
  /* A subroutine of vect_analyze_data_ref_dependence.  Handle
*************** vect_analyze_data_ref_dependence (struct
*** 504,511 ****
  	     reversed (to make distance vector positive), and the actual
  	     distance is negative.  */
  	  if (dump_enabled_p ())
! 	    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
  	                     "dependence distance negative.\n");
  	  /* Record a negative dependence distance to later limit the
  	     amount of stmt copying / unrolling we can perform.
  	     Only need to handle read-after-write dependence.  */
--- 562,580 ----
  	     reversed (to make distance vector positive), and the actual
  	     distance is negative.  */
  	  if (dump_enabled_p ())
! 	    dump_printf_loc (MSG_NOTE, vect_location,
  	                     "dependence distance negative.\n");
+ 	  /* When doing outer loop vectorization, we need to check if there is
+ 	     a backward dependence at the inner loop level if the dependence
+ 	     at the outer loop is reversed.  See PR81740.  */
+ 	  if (nested_in_vect_loop_p (loop, DR_STMT (dra))
+ 	      || nested_in_vect_loop_p (loop, DR_STMT (drb)))
+ 	    {
+ 	      unsigned inner_depth = index_in_loop_nest (loop->inner->num,
+ 							 DDR_LOOP_NEST (ddr));
+ 	      if (dist_v[inner_depth] < 0)
+ 		return true;
+ 	    }
  	  /* Record a negative dependence distance to later limit the
  	     amount of stmt copying / unrolling we can perform.
  	     Only need to handle read-after-write dependence.  */
*************** vect_analyze_data_ref_dependence (struct
*** 521,527 ****
  	{
  	  /* The dependence distance requires reduction of the maximal
  	     vectorization factor.  */
! 	  *max_vf = abs (dist);
  	  if (dump_enabled_p ())
  	    dump_printf_loc (MSG_NOTE, vect_location,
  	                     "adjusting maximal vectorization factor to %i\n",
--- 590,596 ----
  	{
  	  /* The dependence distance requires reduction of the maximal
  	     vectorization factor.  */
! 	  *max_vf = abs_dist;
  	  if (dump_enabled_p ())
  	    dump_printf_loc (MSG_NOTE, vect_location,
  	                     "adjusting maximal vectorization factor to %i\n",
*************** vect_compile_time_alias (struct data_ref
*** 3176,3189 ****
    if (tree_int_cst_compare (DR_STEP (a), size_zero_node) < 0)
      {
        const_length_a = (-wi::to_poly_wide (segment_length_a)).force_uhwi ();
!       offset_a = (offset_a + access_size_a) - const_length_a;
      }
    else
      const_length_a = tree_to_poly_uint64 (segment_length_a);
    if (tree_int_cst_compare (DR_STEP (b), size_zero_node) < 0)
      {
        const_length_b = (-wi::to_poly_wide (segment_length_b)).force_uhwi ();
!       offset_b = (offset_b + access_size_b) - const_length_b;
      }
    else
      const_length_b = tree_to_poly_uint64 (segment_length_b);
--- 3245,3258 ----
    if (tree_int_cst_compare (DR_STEP (a), size_zero_node) < 0)
      {
        const_length_a = (-wi::to_poly_wide (segment_length_a)).force_uhwi ();
!       offset_a -= const_length_a;
      }
    else
      const_length_a = tree_to_poly_uint64 (segment_length_a);
    if (tree_int_cst_compare (DR_STEP (b), size_zero_node) < 0)
      {
        const_length_b = (-wi::to_poly_wide (segment_length_b)).force_uhwi ();
!       offset_b -= const_length_b;
      }
    else
      const_length_b = tree_to_poly_uint64 (segment_length_b);
diff -Nrcpad gcc-8.3.0/gcc/tree-vect-loop.c gcc-8.4.0/gcc/tree-vect-loop.c
*** gcc-8.3.0/gcc/tree-vect-loop.c	Fri Feb  8 14:38:31 2019
--- gcc-8.4.0/gcc/tree-vect-loop.c	Wed Mar  4 08:30:02 2020
*************** get_initial_defs_for_reduction (slp_tree
*** 4551,4564 ****
    unsigned HOST_WIDE_INT nunits;
    unsigned j, number_of_places_left_in_vector;
    tree vector_type;
!   tree vop;
!   int group_size = stmts.length ();
!   unsigned int vec_num, i;
!   unsigned number_of_copies = 1;
!   vec<tree> voprnds;
!   voprnds.create (number_of_vectors);
    struct loop *loop;
-   auto_vec<tree, 16> permute_results;
  
    vector_type = STMT_VINFO_VECTYPE (stmt_vinfo);
  
--- 4551,4559 ----
    unsigned HOST_WIDE_INT nunits;
    unsigned j, number_of_places_left_in_vector;
    tree vector_type;
!   unsigned int group_size = stmts.length ();
!   unsigned int i;
    struct loop *loop;
  
    vector_type = STMT_VINFO_VECTYPE (stmt_vinfo);
  
*************** get_initial_defs_for_reduction (slp_tree
*** 4589,4707 ****
    if (!TYPE_VECTOR_SUBPARTS (vector_type).is_constant (&nunits))
      nunits = group_size;
  
-   number_of_copies = nunits * number_of_vectors / group_size;
- 
    number_of_places_left_in_vector = nunits;
    bool constant_p = true;
    tree_vector_builder elts (vector_type, nunits, 1);
    elts.quick_grow (nunits);
!   for (j = 0; j < number_of_copies; j++)
      {
!       for (i = group_size - 1; stmts.iterate (i, &stmt); i--)
!         {
! 	  tree op;
! 	  /* Get the def before the loop.  In reduction chain we have only
! 	     one initial value.  */
! 	  if ((j != (number_of_copies - 1)
! 	       || (reduc_chain && i != 0))
! 	      && neutral_op)
! 	    op = neutral_op;
! 	  else
! 	    op = PHI_ARG_DEF_FROM_EDGE (stmt, pe);
  
!           /* Create 'vect_ = {op0,op1,...,opn}'.  */
!           number_of_places_left_in_vector--;
! 	  elts[number_of_places_left_in_vector] = op;
! 	  if (!CONSTANT_CLASS_P (op))
! 	    constant_p = false;
  
!           if (number_of_places_left_in_vector == 0)
!             {
! 	      gimple_seq ctor_seq = NULL;
! 	      tree init;
! 	      if (constant_p && !neutral_op
! 		  ? multiple_p (TYPE_VECTOR_SUBPARTS (vector_type), nunits)
! 		  : known_eq (TYPE_VECTOR_SUBPARTS (vector_type), nunits))
! 		/* Build the vector directly from ELTS.  */
! 		init = gimple_build_vector (&ctor_seq, &elts);
! 	      else if (neutral_op)
! 		{
! 		  /* Build a vector of the neutral value and shift the
! 		     other elements into place.  */
! 		  init = gimple_build_vector_from_val (&ctor_seq, vector_type,
! 						       neutral_op);
! 		  int k = nunits;
! 		  while (k > 0 && elts[k - 1] == neutral_op)
! 		    k -= 1;
! 		  while (k > 0)
! 		    {
! 		      k -= 1;
! 		      gcall *call = gimple_build_call_internal
! 			(IFN_VEC_SHL_INSERT, 2, init, elts[k]);
! 		      init = make_ssa_name (vector_type);
! 		      gimple_call_set_lhs (call, init);
! 		      gimple_seq_add_stmt (&ctor_seq, call);
! 		    }
! 		}
! 	      else
  		{
! 		  /* First time round, duplicate ELTS to fill the
! 		     required number of vectors, then cherry pick the
! 		     appropriate result for each iteration.  */
! 		  if (vec_oprnds->is_empty ())
! 		    duplicate_and_interleave (&ctor_seq, vector_type, elts,
! 					      number_of_vectors,
! 					      permute_results);
! 		  init = permute_results[number_of_vectors - j - 1];
  		}
! 	      if (ctor_seq != NULL)
! 		gsi_insert_seq_on_edge_immediate (pe, ctor_seq);
! 	      voprnds.quick_push (init);
! 
!               number_of_places_left_in_vector = nunits;
! 	      elts.new_vector (vector_type, nunits, 1);
! 	      elts.quick_grow (nunits);
! 	      constant_p = true;
!             }
!         }
!     }
! 
!   /* Since the vectors are created in the reverse order, we should invert
!      them.  */
!   vec_num = voprnds.length ();
!   for (j = vec_num; j != 0; j--)
!     {
!       vop = voprnds[j - 1];
!       vec_oprnds->quick_push (vop);
!     }
! 
!   voprnds.release ();
! 
!   /* In case that VF is greater than the unrolling factor needed for the SLP
!      group of stmts, NUMBER_OF_VECTORS to be created is greater than
!      NUMBER_OF_SCALARS/NUNITS or NUNITS/NUMBER_OF_SCALARS, and hence we have
!      to replicate the vectors.  */
!   tree neutral_vec = NULL;
!   while (number_of_vectors > vec_oprnds->length ())
!     {
!       if (neutral_op)
!         {
!           if (!neutral_vec)
  	    {
! 	      gimple_seq ctor_seq = NULL;
! 	      neutral_vec = gimple_build_vector_from_val
! 		(&ctor_seq, vector_type, neutral_op);
! 	      if (ctor_seq != NULL)
! 		gsi_insert_seq_on_edge_immediate (pe, ctor_seq);
  	    }
!           vec_oprnds->quick_push (neutral_vec);
!         }
!       else
!         {
!           for (i = 0; vec_oprnds->iterate (i, &vop) && i < vec_num; i++)
!             vec_oprnds->quick_push (vop);
!         }
      }
  }
  
  
--- 4584,4662 ----
    if (!TYPE_VECTOR_SUBPARTS (vector_type).is_constant (&nunits))
      nunits = group_size;
  
    number_of_places_left_in_vector = nunits;
    bool constant_p = true;
    tree_vector_builder elts (vector_type, nunits, 1);
    elts.quick_grow (nunits);
!   gimple_seq ctor_seq = NULL;
!   for (j = 0; j < nunits * number_of_vectors; ++j)
      {
!       tree op;
!       i = j % group_size;
!       stmt_vinfo = vinfo_for_stmt (stmts[i]);
  
!       /* Get the def before the loop.  In reduction chain we have only
! 	 one initial value.  Else we have as many as PHIs in the group.  */
!       if (reduc_chain)
! 	op = j != 0 ? neutral_op : PHI_ARG_DEF_FROM_EDGE (stmt_vinfo->stmt, pe);
!       else if (((vec_oprnds->length () + 1) * nunits
! 		- number_of_places_left_in_vector >= group_size)
! 	       && neutral_op)
! 	op = neutral_op;
!       else
! 	op = PHI_ARG_DEF_FROM_EDGE (stmt_vinfo->stmt, pe);
  
!       /* Create 'vect_ = {op0,op1,...,opn}'.  */
!       number_of_places_left_in_vector--;
!       elts[nunits - number_of_places_left_in_vector - 1] = op;
!       if (!CONSTANT_CLASS_P (op))
! 	constant_p = false;
! 
!       if (number_of_places_left_in_vector == 0)
! 	{
! 	  tree init;
! 	  if (constant_p && !neutral_op
! 	      ? multiple_p (TYPE_VECTOR_SUBPARTS (vector_type), nunits)
! 	      : known_eq (TYPE_VECTOR_SUBPARTS (vector_type), nunits))
! 	    /* Build the vector directly from ELTS.  */
! 	    init = gimple_build_vector (&ctor_seq, &elts);
! 	  else if (neutral_op)
! 	    {
! 	      /* Build a vector of the neutral value and shift the
! 		 other elements into place.  */
! 	      init = gimple_build_vector_from_val (&ctor_seq, vector_type,
! 						   neutral_op);
! 	      int k = nunits;
! 	      while (k > 0 && elts[k - 1] == neutral_op)
! 		k -= 1;
! 	      while (k > 0)
  		{
! 		  k -= 1;
! 		  gcall *call = gimple_build_call_internal
! 		      (IFN_VEC_SHL_INSERT, 2, init, elts[k]);
! 		  init = make_ssa_name (vector_type);
! 		  gimple_call_set_lhs (call, init);
! 		  gimple_seq_add_stmt (&ctor_seq, call);
  		}
! 	    }
! 	  else
  	    {
! 	      /* First time round, duplicate ELTS to fill the
! 		 required number of vectors.  */
! 	      duplicate_and_interleave (&ctor_seq, vector_type, elts,
! 					number_of_vectors, *vec_oprnds);
! 	      break;
  	    }
! 	  vec_oprnds->quick_push (init);
! 
! 	  number_of_places_left_in_vector = nunits;
! 	  elts.new_vector (vector_type, nunits, 1);
! 	  elts.quick_grow (nunits);
! 	  constant_p = true;
! 	}
      }
+   if (ctor_seq != NULL)
+     gsi_insert_seq_on_edge_immediate (pe, ctor_seq);
  }
  
  
*************** vectorizable_reduction (gimple *stmt, gi
*** 6853,6862 ****
  	  gcc_assert (TREE_CODE (base) == INTEGER_CST
  		      && TREE_CODE (step) == INTEGER_CST);
  	  cond_reduc_val = NULL_TREE;
  	  /* Find a suitable value, for MAX_EXPR below base, for MIN_EXPR
  	     above base; punt if base is the minimum value of the type for
  	     MAX_EXPR or maximum value of the type for MIN_EXPR for now.  */
! 	  if (tree_int_cst_sgn (step) == -1)
  	    {
  	      cond_reduc_op_code = MIN_EXPR;
  	      if (tree_int_cst_sgn (base) == -1)
--- 6808,6820 ----
  	  gcc_assert (TREE_CODE (base) == INTEGER_CST
  		      && TREE_CODE (step) == INTEGER_CST);
  	  cond_reduc_val = NULL_TREE;
+ 	  tree res = PHI_RESULT (STMT_VINFO_STMT (cond_stmt_vinfo));
+ 	  if (!types_compatible_p (TREE_TYPE (res), TREE_TYPE (base)))
+ 	    ;
  	  /* Find a suitable value, for MAX_EXPR below base, for MIN_EXPR
  	     above base; punt if base is the minimum value of the type for
  	     MAX_EXPR or maximum value of the type for MIN_EXPR for now.  */
! 	  else if (tree_int_cst_sgn (step) == -1)
  	    {
  	      cond_reduc_op_code = MIN_EXPR;
  	      if (tree_int_cst_sgn (base) == -1)
diff -Nrcpad gcc-8.3.0/gcc/tree-vect-patterns.c gcc-8.4.0/gcc/tree-vect-patterns.c
*** gcc-8.3.0/gcc/tree-vect-patterns.c	Mon Feb 26 16:17:00 2018
--- gcc-8.4.0/gcc/tree-vect-patterns.c	Wed Mar  4 08:30:02 2020
*************** vect_recog_rotate_pattern (vec<gimple *>
*** 1965,1972 ****
  
    def = NULL_TREE;
    scalar_int_mode mode = SCALAR_INT_TYPE_MODE (type);
!   if (TREE_CODE (oprnd1) == INTEGER_CST
!       || TYPE_MODE (TREE_TYPE (oprnd1)) == mode)
      def = oprnd1;
    else if (def_stmt && gimple_assign_cast_p (def_stmt))
      {
--- 1965,1971 ----
  
    def = NULL_TREE;
    scalar_int_mode mode = SCALAR_INT_TYPE_MODE (type);
!   if (dt != vect_internal_def || TYPE_MODE (TREE_TYPE (oprnd1)) == mode)
      def = oprnd1;
    else if (def_stmt && gimple_assign_cast_p (def_stmt))
      {
*************** vect_recog_rotate_pattern (vec<gimple *>
*** 1982,1995 ****
      {
        def = vect_recog_temp_ssa_var (type, NULL);
        def_stmt = gimple_build_assign (def, NOP_EXPR, oprnd1);
!       if (ext_def)
! 	{
! 	  basic_block new_bb
! 	    = gsi_insert_on_edge_immediate (ext_def, def_stmt);
! 	  gcc_assert (!new_bb);
! 	}
!       else
! 	append_pattern_def_seq (stmt_vinfo, def_stmt);
      }
    stype = TREE_TYPE (def);
    scalar_int_mode smode = SCALAR_INT_TYPE_MODE (stype);
--- 1981,1987 ----
      {
        def = vect_recog_temp_ssa_var (type, NULL);
        def_stmt = gimple_build_assign (def, NOP_EXPR, oprnd1);
!       append_pattern_def_seq (stmt_vinfo, def_stmt);
      }
    stype = TREE_TYPE (def);
    scalar_int_mode smode = SCALAR_INT_TYPE_MODE (stype);
diff -Nrcpad gcc-8.3.0/gcc/tree-vect-slp.c gcc-8.4.0/gcc/tree-vect-slp.c
*** gcc-8.3.0/gcc/tree-vect-slp.c	Fri Feb  8 07:40:31 2019
--- gcc-8.4.0/gcc/tree-vect-slp.c	Wed Mar  4 08:30:02 2020
*************** vect_build_slp_tree_2 (vec_info *vinfo,
*** 1308,1313 ****
--- 1308,1316 ----
  	  && nops == 2
  	  && oprnds_info[1]->first_dt == vect_internal_def
  	  && is_gimple_assign (stmt)
+ 	  /* Swapping operands for reductions breaks assumptions later on.  */
+ 	  && STMT_VINFO_DEF_TYPE (vinfo_for_stmt (stmt)) != vect_reduction_def
+ 	  && STMT_VINFO_DEF_TYPE (vinfo_for_stmt (stmt)) != vect_double_reduction_def
  	  /* Do so only if the number of not successful permutes was nor more
  	     than a cut-ff as re-trying the recursive match on
  	     possibly each level of the tree would expose exponential
diff -Nrcpad gcc-8.3.0/gcc/tree-vect-stmts.c gcc-8.4.0/gcc/tree-vect-stmts.c
*** gcc-8.3.0/gcc/tree-vect-stmts.c	Wed Feb  6 12:56:02 2019
--- gcc-8.4.0/gcc/tree-vect-stmts.c	Wed Mar  4 08:30:02 2020
*************** perm_mask_for_reverse (tree vectype)
*** 2018,2023 ****
--- 2018,2074 ----
    return vect_gen_perm_mask_checked (vectype, indices);
  }
  
+ /* A subroutine of get_load_store_type, with a subset of the same
+    arguments.  Handle the case where STMT is a load or store that
+    accesses consecutive elements with a negative step.  */
+ 
+ static vect_memory_access_type
+ get_negative_load_store_type (gimple *stmt, tree vectype,
+ 			      vec_load_store_type vls_type,
+ 			      unsigned int ncopies)
+ {
+   stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
+   struct data_reference *dr = STMT_VINFO_DATA_REF (stmt_info);
+   dr_alignment_support alignment_support_scheme;
+ 
+   if (ncopies > 1)
+     {
+       if (dump_enabled_p ())
+ 	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ 			 "multiple types with negative step.\n");
+       return VMAT_ELEMENTWISE;
+     }
+ 
+   alignment_support_scheme = vect_supportable_dr_alignment (dr, false);
+   if (alignment_support_scheme != dr_aligned
+       && alignment_support_scheme != dr_unaligned_supported)
+     {
+       if (dump_enabled_p ())
+ 	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ 			 "negative step but alignment required.\n");
+       return VMAT_ELEMENTWISE;
+     }
+ 
+   if (vls_type == VLS_STORE_INVARIANT)
+     {
+       if (dump_enabled_p ())
+ 	dump_printf_loc (MSG_NOTE, vect_location,
+ 			 "negative step with invariant source;"
+ 			 " no permute needed.\n");
+       return VMAT_CONTIGUOUS_DOWN;
+     }
+ 
+   if (!perm_mask_for_reverse (vectype))
+     {
+       if (dump_enabled_p ())
+ 	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ 			 "negative step and reversing not supported.\n");
+       return VMAT_ELEMENTWISE;
+     }
+ 
+   return VMAT_CONTIGUOUS_REVERSE;
+ }
+ 
  /* STMT is either a masked or unconditional store.  Return the value
     being stored.  */
  
*************** get_group_load_store_type (gimple *stmt,
*** 2121,2127 ****
  				 "Peeling for outer loop is not supported\n");
  	      return false;
  	    }
! 	  *memory_access_type = VMAT_CONTIGUOUS;
  	}
      }
    else
--- 2172,2186 ----
  				 "Peeling for outer loop is not supported\n");
  	      return false;
  	    }
! 	  int cmp = compare_step_with_zero (stmt);
! 	  if (cmp < 0)
! 	    *memory_access_type = get_negative_load_store_type
! 	      (stmt, vectype, vls_type, 1);
! 	  else
! 	    {
! 	      gcc_assert (!loop_vinfo || cmp > 0);
! 	      *memory_access_type = VMAT_CONTIGUOUS;
! 	    }
  	}
      }
    else
*************** get_group_load_store_type (gimple *stmt,
*** 2224,2280 ****
    return true;
  }
  
- /* A subroutine of get_load_store_type, with a subset of the same
-    arguments.  Handle the case where STMT is a load or store that
-    accesses consecutive elements with a negative step.  */
- 
- static vect_memory_access_type
- get_negative_load_store_type (gimple *stmt, tree vectype,
- 			      vec_load_store_type vls_type,
- 			      unsigned int ncopies)
- {
-   stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
-   struct data_reference *dr = STMT_VINFO_DATA_REF (stmt_info);
-   dr_alignment_support alignment_support_scheme;
- 
-   if (ncopies > 1)
-     {
-       if (dump_enabled_p ())
- 	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
- 			 "multiple types with negative step.\n");
-       return VMAT_ELEMENTWISE;
-     }
- 
-   alignment_support_scheme = vect_supportable_dr_alignment (dr, false);
-   if (alignment_support_scheme != dr_aligned
-       && alignment_support_scheme != dr_unaligned_supported)
-     {
-       if (dump_enabled_p ())
- 	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
- 			 "negative step but alignment required.\n");
-       return VMAT_ELEMENTWISE;
-     }
- 
-   if (vls_type == VLS_STORE_INVARIANT)
-     {
-       if (dump_enabled_p ())
- 	dump_printf_loc (MSG_NOTE, vect_location,
- 			 "negative step with invariant source;"
- 			 " no permute needed.\n");
-       return VMAT_CONTIGUOUS_DOWN;
-     }
- 
-   if (!perm_mask_for_reverse (vectype))
-     {
-       if (dump_enabled_p ())
- 	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
- 			 "negative step and reversing not supported.\n");
-       return VMAT_ELEMENTWISE;
-     }
- 
-   return VMAT_CONTIGUOUS_REVERSE;
- }
- 
  /* Analyze load or store statement STMT of type VLS_TYPE.  Return true
     if there is a memory access type that the vectorized form can use,
     storing it in *MEMORY_ACCESS_TYPE if so.  If we decide to use gathers
--- 2283,2288 ----
diff -Nrcpad gcc-8.3.0/gcc/tree-vector-builder.h gcc-8.4.0/gcc/tree-vector-builder.h
*** gcc-8.3.0/gcc/tree-vector-builder.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/tree-vector-builder.h	Wed Mar  4 08:30:02 2020
*************** tree_vector_builder::new_vector (tree ty
*** 82,88 ****
  inline bool
  tree_vector_builder::equal_p (const_tree elt1, const_tree elt2) const
  {
!   return operand_equal_p (elt1, elt2, 0);
  }
  
  /* Return true if a stepped representation is OK.  We don't allow
--- 82,88 ----
  inline bool
  tree_vector_builder::equal_p (const_tree elt1, const_tree elt2) const
  {
!   return operand_equal_p (elt1, elt2, OEP_BITWISE);
  }
  
  /* Return true if a stepped representation is OK.  We don't allow
diff -Nrcpad gcc-8.3.0/gcc/tree-vrp.c gcc-8.4.0/gcc/tree-vrp.c
*** gcc-8.3.0/gcc/tree-vrp.c	Wed Jun 20 14:50:09 2018
--- gcc-8.4.0/gcc/tree-vrp.c	Wed Mar  4 08:30:02 2020
*************** extract_range_from_binary_expr_1 (value_
*** 1618,1627 ****
  		max_ovf = 1;
  	    }
  
! 	  /* If we have overflow for the constant part and the resulting
! 	     range will be symbolic, drop to VR_VARYING.  */
! 	  if ((min_ovf && sym_min_op0 != sym_min_op1)
! 	      || (max_ovf && sym_max_op0 != sym_max_op1))
  	    {
  	      set_value_range_to_varying (vr);
  	      return;
--- 1618,1630 ----
  		max_ovf = 1;
  	    }
  
! 	  /* If the resulting range will be symbolic, we need to eliminate any
! 	     explicit or implicit overflow introduced in the above computation
! 	     because compare_values could make an incorrect use of it.  That's
! 	     why we require one of the ranges to be a singleton.  */
! 	  if ((sym_min_op0 != sym_min_op1 || sym_max_op0 != sym_max_op1)
! 	      && (min_ovf || max_ovf
! 		  || (min_op0 != max_op0 && min_op1 != max_op1)))
  	    {
  	      set_value_range_to_varying (vr);
  	      return;
diff -Nrcpad gcc-8.3.0/gcc/tree.c gcc-8.4.0/gcc/tree.c
*** gcc-8.3.0/gcc/tree.c	Thu Feb 14 23:14:56 2019
--- gcc-8.4.0/gcc/tree.c	Wed Mar  4 08:30:02 2020
*************** free_lang_data_in_type (tree type)
*** 5133,5140 ****
  	  free_lang_data_in_binfo (TYPE_BINFO (type));
  	  /* We need to preserve link to bases and virtual table for all
  	     polymorphic types to make devirtualization machinery working.  */
! 	  if (!BINFO_VTABLE (TYPE_BINFO (type))
! 	      || !flag_devirtualize)
  	    TYPE_BINFO (type) = NULL;
  	}
      }
--- 5133,5139 ----
  	  free_lang_data_in_binfo (TYPE_BINFO (type));
  	  /* We need to preserve link to bases and virtual table for all
  	     polymorphic types to make devirtualization machinery working.  */
! 	  if (!BINFO_VTABLE (TYPE_BINFO (type)))
  	    TYPE_BINFO (type) = NULL;
  	}
      }
diff -Nrcpad gcc-8.3.0/gcc/tree.h gcc-8.4.0/gcc/tree.h
*** gcc-8.3.0/gcc/tree.h	Wed Jan  2 22:34:36 2019
--- gcc-8.4.0/gcc/tree.h	Wed Mar  4 08:30:02 2020
*************** extern void omp_clause_range_check_faile
*** 909,914 ****
--- 909,919 ----
    (TREE_CHECK2 (NODE, VAR_DECL, \
  		RESULT_DECL)->decl_common.decl_nonshareable_flag)
  
+ /* In a PARM_DECL, set for Fortran hidden string length arguments that some
+    buggy callers don't pass to the callee.  */
+ #define DECL_HIDDEN_STRING_LENGTH(NODE) \
+   (TREE_CHECK (NODE, PARM_DECL)->decl_common.decl_nonshareable_flag)
+ 
  /* In a CALL_EXPR, means that the call is the jump from a thunk to the
     thunked-to function.  */
  #define CALL_FROM_THUNK_P(NODE) (CALL_EXPR_CHECK (NODE)->base.protected_flag)
diff -Nrcpad gcc-8.3.0/gcc/var-tracking.c gcc-8.4.0/gcc/var-tracking.c
*** gcc-8.3.0/gcc/var-tracking.c	Wed Jun 20 14:57:55 2018
--- gcc-8.4.0/gcc/var-tracking.c	Wed Mar  4 08:30:02 2020
*************** vt_expand_loc_callback (rtx x, bitmap re
*** 8491,8497 ****
  
        /* Invalid SUBREGs are ok in debug info.  ??? We could try
  	 alternate expansions for the VALUE as well.  */
!       if (!result)
  	result = gen_rtx_raw_SUBREG (GET_MODE (x), subreg, SUBREG_BYTE (x));
  
        return result;
--- 8491,8497 ----
  
        /* Invalid SUBREGs are ok in debug info.  ??? We could try
  	 alternate expansions for the VALUE as well.  */
!       if (!result && GET_MODE (subreg) != VOIDmode)
  	result = gen_rtx_raw_SUBREG (GET_MODE (x), subreg, SUBREG_BYTE (x));
  
        return result;
diff -Nrcpad gcc-8.3.0/gcc/varasm.c gcc-8.4.0/gcc/varasm.c
*** gcc-8.3.0/gcc/varasm.c	Mon Nov  5 14:08:30 2018
--- gcc-8.4.0/gcc/varasm.c	Wed Mar  4 08:30:02 2020
*************** assemble_start_function (tree decl, cons
*** 1857,1884 ****
        tree pp_val = TREE_VALUE (patchable_function_entry_attr);
        tree patchable_function_entry_value1 = TREE_VALUE (pp_val);
  
!       if (tree_fits_uhwi_p (patchable_function_entry_value1))
! 	patch_area_size = tree_to_uhwi (patchable_function_entry_value1);
!       else
! 	gcc_unreachable ();
! 
        patch_area_entry = 0;
!       if (list_length (pp_val) > 1)
  	{
! 	  tree patchable_function_entry_value2 =
! 	    TREE_VALUE (TREE_CHAIN (pp_val));
! 
! 	  if (tree_fits_uhwi_p (patchable_function_entry_value2))
! 	    patch_area_entry = tree_to_uhwi (patchable_function_entry_value2);
! 	  else
! 	    gcc_unreachable ();
  	}
      }
  
    if (patch_area_entry > patch_area_size)
      {
        if (patch_area_size > 0)
! 	warning (OPT_Wattributes, "Patchable function entry > size");
        patch_area_entry = 0;
      }
  
--- 1857,1876 ----
        tree pp_val = TREE_VALUE (patchable_function_entry_attr);
        tree patchable_function_entry_value1 = TREE_VALUE (pp_val);
  
!       patch_area_size = tree_to_uhwi (patchable_function_entry_value1);
        patch_area_entry = 0;
!       if (TREE_CHAIN (pp_val) != NULL_TREE)
  	{
! 	  tree patchable_function_entry_value2
! 	    = TREE_VALUE (TREE_CHAIN (pp_val));
! 	  patch_area_entry = tree_to_uhwi (patchable_function_entry_value2);
  	}
      }
  
    if (patch_area_entry > patch_area_size)
      {
        if (patch_area_size > 0)
! 	warning (OPT_Wattributes, "patchable function entry > size");
        patch_area_entry = 0;
      }
  
*************** assemble_start_function (tree decl, cons
*** 1898,1904 ****
    /* And the area after the label.  Record it if we haven't done so yet.  */
    if (patch_area_size > patch_area_entry)
      targetm.asm_out.print_patchable_function_entry (asm_out_file,
! 					     patch_area_size-patch_area_entry,
  						    patch_area_entry == 0);
  
    if (lookup_attribute ("no_split_stack", DECL_ATTRIBUTES (decl)))
--- 1890,1897 ----
    /* And the area after the label.  Record it if we haven't done so yet.  */
    if (patch_area_size > patch_area_entry)
      targetm.asm_out.print_patchable_function_entry (asm_out_file,
! 						    patch_area_size
! 						    - patch_area_entry,
  						    patch_area_entry == 0);
  
    if (lookup_attribute ("no_split_stack", DECL_ATTRIBUTES (decl)))
*************** assemble_name_raw (FILE *file, const cha
*** 2582,2601 ****
      ASM_OUTPUT_LABELREF (file, name);
  }
  
! /* Like assemble_name_raw, but should be used when NAME might refer to
!    an entity that is also represented as a tree (like a function or
!    variable).  If NAME does refer to such an entity, that entity will
!    be marked as referenced.  */
! 
! void
! assemble_name (FILE *file, const char *name)
  {
!   const char *real_name;
!   tree id;
! 
!   real_name = targetm.strip_name_encoding (name);
  
-   id = maybe_get_identifier (real_name);
    if (id)
      {
        tree id_orig = id;
--- 2575,2590 ----
      ASM_OUTPUT_LABELREF (file, name);
  }
  
! /* Return NAME that should actually be emitted, looking through
!    transparent aliases.  If NAME refers to an entity that is also
!    represented as a tree (like a function or variable), mark the entity
!    as referenced.  */
! const char *
! assemble_name_resolve (const char *name)
  {
!   const char *real_name = targetm.strip_name_encoding (name);
!   tree id = maybe_get_identifier (real_name);
  
    if (id)
      {
        tree id_orig = id;
*************** assemble_name (FILE *file, const char *n
*** 2607,2613 ****
        gcc_assert (! TREE_CHAIN (id));
      }
  
!   assemble_name_raw (file, name);
  }
  
  /* Allocate SIZE bytes writable static space with a gensym name
--- 2596,2613 ----
        gcc_assert (! TREE_CHAIN (id));
      }
  
!   return name;
! }
! 
! /* Like assemble_name_raw, but should be used when NAME might refer to
!    an entity that is also represented as a tree (like a function or
!    variable).  If NAME does refer to such an entity, that entity will
!    be marked as referenced.  */
! 
! void
! assemble_name (FILE *file, const char *name)
! {
!   assemble_name_raw (file, assemble_name_resolve (name));
  }
  
  /* Allocate SIZE bytes writable static space with a gensym name
*************** output_constructor_bitfield (oc_local_st
*** 5292,5298 ****
      {
        int this_time;
        int shift;
!       HOST_WIDE_INT value;
        HOST_WIDE_INT next_byte = next_offset / BITS_PER_UNIT;
        HOST_WIDE_INT next_bit = next_offset % BITS_PER_UNIT;
  
--- 5292,5298 ----
      {
        int this_time;
        int shift;
!       unsigned HOST_WIDE_INT value;
        HOST_WIDE_INT next_byte = next_offset / BITS_PER_UNIT;
        HOST_WIDE_INT next_bit = next_offset % BITS_PER_UNIT;
  
*************** output_constructor_bitfield (oc_local_st
*** 5324,5338 ****
  	      this_time = end - shift + 1;
  	    }
  
! 	  /* Now get the bits from the appropriate constant word.  */
! 	  value = TREE_INT_CST_ELT (local->val, shift / HOST_BITS_PER_WIDE_INT);
! 	  shift = shift & (HOST_BITS_PER_WIDE_INT - 1);
  
  	  /* Get the result.  This works only when:
  	     1 <= this_time <= HOST_BITS_PER_WIDE_INT.  */
! 	  local->byte |= (((value >> shift)
! 			   & (((HOST_WIDE_INT) 2 << (this_time - 1)) - 1))
! 			  << (BITS_PER_UNIT - this_time - next_bit));
  	}
        else
  	{
--- 5324,5336 ----
  	      this_time = end - shift + 1;
  	    }
  
! 	  /* Now get the bits we want to insert.  */
! 	  value = wi::extract_uhwi (wi::to_widest (local->val),
! 				    shift, this_time);
  
  	  /* Get the result.  This works only when:
  	     1 <= this_time <= HOST_BITS_PER_WIDE_INT.  */
! 	  local->byte |= value << (BITS_PER_UNIT - this_time - next_bit);
  	}
        else
  	{
*************** output_constructor_bitfield (oc_local_st
*** 5349,5363 ****
  	    this_time
  	      = HOST_BITS_PER_WIDE_INT - (shift & (HOST_BITS_PER_WIDE_INT - 1));
  
! 	  /* Now get the bits from the appropriate constant word.  */
! 	  value = TREE_INT_CST_ELT (local->val, shift / HOST_BITS_PER_WIDE_INT);
! 	  shift = shift & (HOST_BITS_PER_WIDE_INT - 1);
  
  	  /* Get the result.  This works only when:
  	     1 <= this_time <= HOST_BITS_PER_WIDE_INT.  */
! 	  local->byte |= (((value >> shift)
! 			   & (((HOST_WIDE_INT) 2 << (this_time - 1)) - 1))
! 			  << next_bit);
  	}
  
        next_offset += this_time;
--- 5347,5359 ----
  	    this_time
  	      = HOST_BITS_PER_WIDE_INT - (shift & (HOST_BITS_PER_WIDE_INT - 1));
  
! 	  /* Now get the bits we want to insert.  */
! 	  value = wi::extract_uhwi (wi::to_widest (local->val),
! 				    shift, this_time);
  
  	  /* Get the result.  This works only when:
  	     1 <= this_time <= HOST_BITS_PER_WIDE_INT.  */
! 	  local->byte |= value << next_bit;
  	}
  
        next_offset += this_time;
diff -Nrcpad gcc-8.3.0/gcc/vr-values.c gcc-8.4.0/gcc/vr-values.c
*** gcc-8.3.0/gcc/vr-values.c	Fri Feb  8 07:40:31 2019
--- gcc-8.4.0/gcc/vr-values.c	Wed Mar  4 08:30:02 2020
*************** vr_values::update_value_range (const_tre
*** 211,217 ****
  	 the same.  We may not have is_new when transitioning to
  	 UNDEFINED.  If old_vr->type is VARYING, we shouldn't be
  	 called.  */
!       if (new_vr->type == VR_UNDEFINED)
  	{
  	  BITMAP_FREE (new_vr->equiv);
  	  set_value_range_to_varying (old_vr);
--- 211,222 ----
  	 the same.  We may not have is_new when transitioning to
  	 UNDEFINED.  If old_vr->type is VARYING, we shouldn't be
  	 called.  */
!       if (old_vr->type == VR_VARYING)
! 	{
! 	  set_value_range_to_varying (new_vr);
! 	  is_new = false;
! 	}
!       else if (new_vr->type == VR_UNDEFINED)
  	{
  	  BITMAP_FREE (new_vr->equiv);
  	  set_value_range_to_varying (old_vr);
diff -Nrcpad gcc-8.3.0/gcc/xcoffout.c gcc-8.4.0/gcc/xcoffout.c
*** gcc-8.3.0/gcc/xcoffout.c	Thu Jan 18 13:17:37 2018
--- gcc-8.4.0/gcc/xcoffout.c	Wed Mar  4 08:30:02 2020
*************** static const char *xcoff_current_functio
*** 64,69 ****
--- 64,70 ----
  
  char *xcoff_bss_section_name;
  char *xcoff_private_data_section_name;
+ char *xcoff_private_rodata_section_name;
  char *xcoff_tls_data_section_name;
  char *xcoff_tbss_section_name;
  char *xcoff_read_only_section_name;
diff -Nrcpad gcc-8.3.0/gcc/xcoffout.h gcc-8.4.0/gcc/xcoffout.h
*** gcc-8.3.0/gcc/xcoffout.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/gcc/xcoffout.h	Wed Mar  4 08:30:02 2020
*************** extern const char *xcoff_current_include
*** 127,132 ****
--- 127,133 ----
  
  extern char *xcoff_bss_section_name;
  extern char *xcoff_private_data_section_name;
+ extern char *xcoff_private_rodata_section_name;
  extern char *xcoff_tls_data_section_name;
  extern char *xcoff_tbss_section_name;
  extern char *xcoff_read_only_section_name;
diff -Nrcpad gcc-8.3.0/gnattools/ChangeLog gcc-8.4.0/gnattools/ChangeLog
*** gcc-8.3.0/gnattools/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gnattools/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/gotools/ChangeLog gcc-8.4.0/gotools/ChangeLog
*** gcc-8.3.0/gotools/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/gotools/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/include/ChangeLog gcc-8.4.0/include/ChangeLog
*** gcc-8.3.0/include/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/include/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,15 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2019-04-08  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	backport mainline
+ 	Vineet Gupta  <vgupta@synopsys.com>
+ 	PR 89877
+ 	* longlong.h [__arc__] (add_ssaaaa): Add cc clobber.
+ 	(sub_ddmmss): Likewise.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/include/longlong.h gcc-8.4.0/include/longlong.h
*** gcc-8.3.0/include/longlong.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/include/longlong.h	Wed Mar  4 08:30:02 2020
*************** extern UDItype __udiv_qrnnd (UDItype *,
*** 199,205 ****
  	   : "%r" ((USItype) (ah)),					\
  	     "rICal" ((USItype) (bh)),					\
  	     "%r" ((USItype) (al)),					\
! 	     "rICal" ((USItype) (bl)))
  #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
    __asm__ ("sub.f	%1, %4, %5\n\tsbc	%0, %2, %3"		\
  	   : "=r" ((USItype) (sh)),					\
--- 199,206 ----
  	   : "%r" ((USItype) (ah)),					\
  	     "rICal" ((USItype) (bh)),					\
  	     "%r" ((USItype) (al)),					\
! 	     "rICal" ((USItype) (bl))					\
! 	   : "cc")
  #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
    __asm__ ("sub.f	%1, %4, %5\n\tsbc	%0, %2, %3"		\
  	   : "=r" ((USItype) (sh)),					\
*************** extern UDItype __udiv_qrnnd (UDItype *,
*** 207,213 ****
  	   : "r" ((USItype) (ah)),					\
  	     "rICal" ((USItype) (bh)),					\
  	     "r" ((USItype) (al)),					\
! 	     "rICal" ((USItype) (bl)))
  
  #define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
  #ifdef __ARC_NORM__
--- 208,215 ----
  	   : "r" ((USItype) (ah)),					\
  	     "rICal" ((USItype) (bh)),					\
  	     "r" ((USItype) (al)),					\
! 	     "rICal" ((USItype) (bl))					\
! 	   : "cc")
  
  #define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
  #ifdef __ARC_NORM__
diff -Nrcpad gcc-8.3.0/intl/ChangeLog gcc-8.4.0/intl/ChangeLog
*** gcc-8.3.0/intl/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/intl/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libada/ChangeLog gcc-8.4.0/libada/ChangeLog
*** gcc-8.3.0/libada/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libada/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libatomic/ChangeLog gcc-8.4.0/libatomic/ChangeLog
*** gcc-8.3.0/libatomic/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libatomic/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,22 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2019-03-20  Florian Weimer  <fweimer@redhat.com>
+ 
+ 	PR libgcc/60790
+ 	x86: Do not assume ELF constructors run before IFUNC resolvers.
+ 	* config/x86/host-config.h (libat_feat1_ecx, libat_feat1_edx):
+ 	Remove declarations.
+ 	(__libat_feat1, __libat_feat1_init): Declare.
+ 	(FEAT1_REGISTER): Define.
+ 	(load_feat1): New function.
+ 	(IFUNC_COND_1): Adjust.
+ 	* config/x86/init.c (libat_feat1_ecx, libat_feat1_edx)
+ 	(init_cpuid): Remove definitions.
+ 	(__libat_feat1): New variable.
+ 	(__libat_feat1_init): New function.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libatomic/config/x86/host-config.h gcc-8.4.0/libatomic/config/x86/host-config.h
*** gcc-8.3.0/libatomic/config/x86/host-config.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libatomic/config/x86/host-config.h	Wed Mar  4 08:30:02 2020
***************
*** 25,37 ****
  #if HAVE_IFUNC
  #include <cpuid.h>
  
! extern unsigned int libat_feat1_ecx HIDDEN;
! extern unsigned int libat_feat1_edx HIDDEN;
  
  #ifdef __x86_64__
! # define IFUNC_COND_1	(libat_feat1_ecx & bit_CMPXCHG16B)
  #else
! # define IFUNC_COND_1	(libat_feat1_edx & bit_CMPXCHG8B)
  #endif
  
  #ifdef __x86_64__
--- 25,63 ----
  #if HAVE_IFUNC
  #include <cpuid.h>
  
! #ifdef __x86_64__
! # define FEAT1_REGISTER ecx
! #else
! # define FEAT1_REGISTER edx
! #endif
! 
! /* Value of the CPUID feature register FEAT1_REGISTER for the cmpxchg
!    bit for IFUNC_COND1 below.  */
! extern unsigned int __libat_feat1 HIDDEN;
! 
! /* Initialize libat_feat1 and return its value.  */
! unsigned int __libat_feat1_init (void) HIDDEN;
! 
! /* Return the value of the relevant feature register for the relevant
!    cmpxchg bit, or 0 if there is no CPUID support.  */
! static inline unsigned int
! __attribute__ ((const))
! load_feat1 (void)
! {
!   /* See the store in __libat_feat1_init.  */
!   unsigned int feat1 = __atomic_load_n (&__libat_feat1, __ATOMIC_RELAXED);
!   if (feat1 == 0)
!     /* Assume that initialization has not happened yet.  This may get
!        called repeatedly if the CPU does not have any feature bits at
!        all.  */
!     feat1 = __libat_feat1_init ();
!   return feat1;
! }
  
  #ifdef __x86_64__
! # define IFUNC_COND_1	(load_feat1 () & bit_CMPXCHG16B)
  #else
! # define IFUNC_COND_1	(load_feat1 () & bit_CMPXCHG8B)
  #endif
  
  #ifdef __x86_64__
diff -Nrcpad gcc-8.3.0/libatomic/config/x86/init.c gcc-8.4.0/libatomic/config/x86/init.c
*** gcc-8.3.0/libatomic/config/x86/init.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libatomic/config/x86/init.c	Wed Mar  4 08:30:02 2020
***************
*** 26,38 ****
  
  #if HAVE_IFUNC
  
! unsigned int libat_feat1_ecx, libat_feat1_edx;
  
! static void __attribute__((constructor))
! init_cpuid (void)
  {
!   unsigned int eax, ebx;
!   __get_cpuid (1, &eax, &ebx, &libat_feat1_ecx, &libat_feat1_edx);
  }
  
  #endif /* HAVE_IFUNC */
--- 26,42 ----
  
  #if HAVE_IFUNC
  
! unsigned int __libat_feat1;
  
! unsigned int
! __libat_feat1_init (void)
  {
!   unsigned int eax, ebx, ecx, edx;
!   FEAT1_REGISTER = 0;
!   __get_cpuid (1, &eax, &ebx, &ecx, &edx);
!   /* See the load in load_feat1.  */
!   __atomic_store_n (&__libat_feat1, FEAT1_REGISTER, __ATOMIC_RELAXED);
!   return FEAT1_REGISTER;
  }
  
  #endif /* HAVE_IFUNC */
diff -Nrcpad gcc-8.3.0/libbacktrace/ChangeLog gcc-8.4.0/libbacktrace/ChangeLog
*** gcc-8.3.0/libbacktrace/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libbacktrace/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libcc1/ChangeLog gcc-8.4.0/libcc1/ChangeLog
*** gcc-8.3.0/libcc1/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libcc1/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libcpp/ChangeLog gcc-8.4.0/libcpp/ChangeLog
*** gcc-8.3.0/libcpp/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libcpp/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,40 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2019-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-10-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR preprocessor/92296
+ 	* internal.h (struct def_pragma_macro): Add is_builtin bitfield.
+ 	(_cpp_restore_special_builtin): Declare.
+ 	* init.c (_cpp_restore_special_builtin): New function.
+ 	* directives.c (do_pragma_push_macro): For NT_MACRO with NODE_BUILTIN
+ 	set is_builtin and don't try to grab definition.
+ 	(cpp_pop_definition): Use _cpp_restore_special_builtin to restore
+ 	builtin macros.
+ 
+ 2019-03-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-02-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c++/89383
+ 	* line-map.c (linemap_line_start): Use 1UL in order
+ 	to not overflow.
+ 
+ 2019-03-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2019-02-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/88147
+ 	* line-map.c (linemap_line_start): Don't reuse the existing line
+ 	map if the line offset is sufficiently large to cause overflow
+ 	when computing location_t values.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libcpp/directives.c gcc-8.4.0/libcpp/directives.c
*** gcc-8.3.0/libcpp/directives.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libcpp/directives.c	Wed Mar  4 08:30:02 2020
*************** do_pragma_push_macro (cpp_reader *pfile)
*** 1574,1579 ****
--- 1574,1581 ----
    node = _cpp_lex_identifier (pfile, c->name);
    if (node->type == NT_VOID)
      c->is_undef = 1;
+   else if (node->type == NT_MACRO && (node->flags & NODE_BUILTIN))
+     c->is_builtin = 1;
    else
      {
        defn = cpp_macro_definition (pfile, node);
*************** cpp_pop_definition (cpp_reader *pfile, s
*** 2504,2509 ****
--- 2506,2516 ----
    cpp_hashnode *node = _cpp_lex_identifier (pfile, c->name);
    if (node == NULL)
      return;
+   if (c->is_builtin)
+     {
+       _cpp_restore_special_builtin (pfile, c);
+       return;
+     }
  
    if (pfile->cb.before_define)
      pfile->cb.before_define (pfile);
diff -Nrcpad gcc-8.3.0/libcpp/init.c gcc-8.4.0/libcpp/init.c
*** gcc-8.3.0/libcpp/init.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libcpp/init.c	Wed Mar  4 08:30:02 2020
*************** cpp_init_special_builtins (cpp_reader *p
*** 488,493 ****
--- 488,513 ----
      }
  }
  
+ /* Restore macro C to builtin macro definition.  */
+ 
+ void
+ _cpp_restore_special_builtin (cpp_reader *pfile, struct def_pragma_macro *c)
+ {
+   size_t len = strlen (c->name);
+ 
+   for (const struct builtin_macro *b = builtin_array;
+        b < builtin_array + ARRAY_SIZE (builtin_array); b++)
+     if (b->len == len && memcmp (c->name, b->name, len + 1) == 0)
+       {
+ 	cpp_hashnode *hp = cpp_lookup (pfile, b->name, b->len);
+ 	hp->type = NT_MACRO;
+ 	hp->flags |= NODE_BUILTIN;
+ 	if (b->always_warn_if_redefined)
+ 	  hp->flags |= NODE_WARN;
+ 	hp->value.builtin = (enum cpp_builtin_type) b->value;
+       }
+ }
+ 
  /* Read the builtins table above and enter them, and language-specific
     macros, into the hash table.  HOSTED is true if this is a hosted
     environment.  */
diff -Nrcpad gcc-8.3.0/libcpp/internal.h gcc-8.4.0/libcpp/internal.h
*** gcc-8.3.0/libcpp/internal.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libcpp/internal.h	Wed Mar  4 08:30:02 2020
*************** struct def_pragma_macro {
*** 381,386 ****
--- 381,388 ----
  
    /* Mark if we save an undefined macro.  */
    unsigned int is_undef : 1;
+   /* Nonzero if it was a builtin macro.  */
+   unsigned int is_builtin : 1;
  };
  
  /* A cpp_reader encapsulates the "state" of a pre-processor run.
*************** extern void _cpp_init_lexer (void);
*** 689,694 ****
--- 691,698 ----
  /* In init.c.  */
  extern void _cpp_maybe_push_include_file (cpp_reader *);
  extern const char *cpp_named_operator2name (enum cpp_ttype type);
+ extern void _cpp_restore_special_builtin (cpp_reader *pfile,
+ 					  struct def_pragma_macro *);
  
  /* In directives.c */
  extern int _cpp_test_assertion (cpp_reader *, unsigned int *);
diff -Nrcpad gcc-8.3.0/libcpp/line-map.c gcc-8.4.0/libcpp/line-map.c
*** gcc-8.3.0/libcpp/line-map.c	Fri Feb 16 12:02:34 2018
--- gcc-8.4.0/libcpp/line-map.c	Wed Mar  4 08:30:02 2020
*************** linemap_line_start (struct line_maps *se
*** 755,760 ****
--- 755,765 ----
        if (line_delta < 0
  	  || last_line != ORDINARY_MAP_STARTING_LINE_NUMBER (map)
  	  || SOURCE_COLUMN (map, highest) >= (1U << (column_bits - range_bits))
+ 	  || ( /* We can't reuse the map if the line offset is sufficiently
+ 		  large to cause overflow when computing location_t values.  */
+ 	      (to_line - ORDINARY_MAP_STARTING_LINE_NUMBER (map))
+ 	      >= (((uint64_t) 1)
+ 		  << (CHAR_BIT * sizeof (linenum_type) - column_bits)))
  	  || range_bits < map->m_range_bits)
  	map = linemap_check_ordinary
  	        (const_cast <line_map *>
diff -Nrcpad gcc-8.3.0/libcpp/po/ChangeLog gcc-8.4.0/libcpp/po/ChangeLog
*** gcc-8.3.0/libcpp/po/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libcpp/po/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libdecnumber/ChangeLog gcc-8.4.0/libdecnumber/ChangeLog
*** gcc-8.3.0/libdecnumber/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libdecnumber/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,18 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2020-01-13  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	Backport from mainline:
+ 	2019-12-09  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	PR middle-end/91226
+ 	* bid/bid2dpd_dpd2bid.c (_bid_to_dpd64): Handle non-canonical
+ 	significands.
+ 	(_bid_to_dpd128): Likewise.  Check for case where combination
+ 	field starts 1100, 1101 or 1110.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libdecnumber/bid/bid2dpd_dpd2bid.c gcc-8.4.0/libdecnumber/bid/bid2dpd_dpd2bid.c
*** gcc-8.3.0/libdecnumber/bid/bid2dpd_dpd2bid.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libdecnumber/bid/bid2dpd_dpd2bid.c	Wed Mar  4 08:30:02 2020
*************** _bid_to_dpd64 (_Decimal64 *pres, _Decima
*** 189,194 ****
--- 189,196 ----
    if ((comb & 0xc00) == 0xc00) { /* G0..G1 = 11 -> exp is G2..G11 */
      exp = (comb) & 0x3ff;
      bcoeff = (x & 0x0007ffffffffffffull) | 0x0020000000000000ull;
+     if (bcoeff >= 10000000000000000ull)
+       bcoeff = 0;
    } else {
      exp = (comb >> 2) & 0x3ff;
      bcoeff = (x & 0x001fffffffffffffull);
*************** _bid_to_dpd128 (_Decimal128 *pres, _Deci
*** 298,306 ****
    if ((comb & 0x1e000) == 0x1e000) {
      res = x;
    } else { /* normal number */
!     exp = ((x.w[1] & 0x7fff000000000000ull) >> 49) & 0x3fff;
!     bcoeff.w[1] = (x.w[1] & 0x0001ffffffffffffull);
!     bcoeff.w[0] = x.w[0];
      d1018 = reciprocals10_128[18];
      __mul_128x128_high (BH, bcoeff, d1018);
      amount = recip_scale[18];
--- 300,322 ----
    if ((comb & 0x1e000) == 0x1e000) {
      res = x;
    } else { /* normal number */
!     if ((comb & 0x18000) == 0x18000) {
!       /* Noncanonical significand (prepending 8 or 9 to any 110-bit
! 	 trailing significand field produces a value above 10^34).  */
!       exp = (comb & 0x7fff) >> 1;
!       bcoeff.w[1] = 0;
!       bcoeff.w[0] = 0;
!     } else {
!       exp = ((x.w[1] & 0x7fff000000000000ull) >> 49) & 0x3fff;
!       bcoeff.w[1] = (x.w[1] & 0x0001ffffffffffffull);
!       bcoeff.w[0] = x.w[0];
!       if (bcoeff.w[1] > 0x1ed09bead87c0ull
! 	  || (bcoeff.w[1] == 0x1ed09bead87c0ull
! 	      && bcoeff.w[0] >= 0x378d8e6400000000ull)) {
! 	bcoeff.w[1] = 0;
! 	bcoeff.w[0] = 0;
!       }
!     }
      d1018 = reciprocals10_128[18];
      __mul_128x128_high (BH, bcoeff, d1018);
      amount = recip_scale[18];
diff -Nrcpad gcc-8.3.0/libffi/ChangeLog gcc-8.4.0/libffi/ChangeLog
*** gcc-8.3.0/libffi/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libffi/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libgcc/ChangeLog gcc-8.4.0/libgcc/ChangeLog
*** gcc-8.3.0/libgcc/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libgcc/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,89 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2019-11-17  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/linux-atomic.c (__kernel_cmpxchg): Change argument 1 to
+ 	volatile void *.  Remove trap check.
+ 	(__kernel_cmpxchg2): Likewise.
+ 	(FETCH_AND_OP_2): Adjust operand types.
+ 	(OP_AND_FETCH_2): Likewise.
+ 	(FETCH_AND_OP_WORD): Likewise.
+ 	(OP_AND_FETCH_WORD): Likewise.
+ 	(COMPARE_AND_SWAP_2): Likewise.
+ 	(__sync_val_compare_and_swap_4): Likewise.
+ 	(__sync_bool_compare_and_swap_4): Likewise.
+ 	(SYNC_LOCK_TEST_AND_SET_2): Likewise.
+ 	(__sync_lock_test_and_set_4): Likewise.
+ 	(SYNC_LOCK_RELEASE_1): Likewise.  Use __kernel_cmpxchg2 for release.
+ 	(__sync_lock_release_4): Adjust operand types.  Use __kernel_cmpxchg
+ 	for release.
+ 	(__sync_lock_release_8): Remove.
+ 
+ 2019-11-04  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2019-10-12  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/lib2funcs.S (__gcc_plt_call): Load branch target to %r21.
+ 	Load PIC register after branch target.  Fix white space.
+ 	* config/pa/milli64.S ($$dyncall): Separate LINUX and non LINUX
+ 	implementations.  Load PIC register after branch target.  Don't
+ 	clobber function pointer when it points to function descriptor.
+ 	Use nullification instead of branch in LINUX implementation.
+ 
+ 2019-11-04  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2019-10-15  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/fptr.c (_dl_read_access_allowed): Change argument to
+ 	unsigned int.  Adjust callers.
+ 	(__canonicalize_funcptr_for_compare): Change plabel type to volatile
+ 	unsigned int *.  Load relocation offset before function pointer.
+ 	Add barrier to ensure ordering.
+ 
+ 2019-10-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-07-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config.host (powerpc-*-darwin*,powerpc64-*-darwin*): Revise crt
+ 	list.
+ 	* config/rs6000/t-darwin: Build crt3_2 for older systems.  Revise
+ 	mmacosx-version-min for crts to run across all system versions.
+ 	* config/rs6000/t-darwin64 (LIB2ADD): Remove.
+ 	* config/t-darwin: Revise mmacosx-version-min for crts to run across
+ 	system versions >= 10.4.
+ 
+ 2019-10-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-25  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config.host: Add libef_ppc.a to the extra files for powerpc-darwin.
+ 	* config/rs6000/t-darwin: (PPC_ENDFILE_SRC, PPC_ENDFILE_OBJS): New.
+ 	Build objects for the out of line save/restore register functions
+ 	so that they can be used for any supported Darwin version.
+ 	* config/t-darwin: Default the build Darwin version to Darwin8
+ 	(MacOS 10.4).
+ 
+ 2019-08-27  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-06-06  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/rs6000/t-darwin: Ensure that the unwinder is built with
+ 	altivec enabled.
+ 
+ 2019-08-11  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline.
+ 	2019-05-12  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/rs6000/darwin-vecsave.S: Set .machine appropriately.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libgcc/config/libbid/ChangeLog gcc-8.4.0/libgcc/config/libbid/ChangeLog
*** gcc-8.3.0/libgcc/config/libbid/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libgcc/config/libbid/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libgcc/config/pa/fptr.c gcc-8.4.0/libgcc/config/pa/fptr.c
*** gcc-8.3.0/libgcc/config/pa/fptr.c	Wed Mar  7 00:17:32 2018
--- gcc-8.4.0/libgcc/config/pa/fptr.c	Wed Mar  4 08:30:03 2020
*************** typedef int (*fixup_t) (struct link_map
*** 53,59 ****
  extern unsigned int _GLOBAL_OFFSET_TABLE_;
  
  static inline int
! _dl_read_access_allowed (unsigned int *addr)
  {
    int result;
  
--- 53,59 ----
  extern unsigned int _GLOBAL_OFFSET_TABLE_;
  
  static inline int
! _dl_read_access_allowed (unsigned int addr)
  {
    int result;
  
*************** __canonicalize_funcptr_for_compare (fptr
*** 76,82 ****
  {
    static unsigned int fixup_plabel[2] __attribute__((used));
    fixup_t fixup;
!   unsigned int *got, *iptr, *plabel;
    int i;
  
    /* -1 and page 0 are special.  -1 is used in crtend to mark the end of
--- 76,83 ----
  {
    static unsigned int fixup_plabel[2] __attribute__((used));
    fixup_t fixup;
!   volatile unsigned int *plabel;
!   unsigned int *got, *iptr, reloc_offset;
    int i;
  
    /* -1 and page 0 are special.  -1 is used in crtend to mark the end of
*************** __canonicalize_funcptr_for_compare (fptr
*** 91,107 ****
       to the entry of the PLT stub just before the global offset table.
       The second word in the plabel contains the relocation offset for the
       function.  */
!   plabel = (unsigned int *) ((unsigned int) fptr & ~3);
!   if (!_dl_read_access_allowed (plabel))
      return (unsigned int) fptr;
  
    /* Load first word of candidate descriptor.  It should be a pointer
       with word alignment and point to memory that can be read.  */
    got = (unsigned int *) plabel[0];
    if (((unsigned int) got & 3) != 0
!       || !_dl_read_access_allowed (got))
      return (unsigned int) fptr;
  
    got = (unsigned int *) (plabel[0] + GOT_FROM_PLT_STUB);
  
    /* Return the address of the function if the plabel has been resolved.  */
--- 92,111 ----
       to the entry of the PLT stub just before the global offset table.
       The second word in the plabel contains the relocation offset for the
       function.  */
!   plabel = (volatile unsigned int *) ((unsigned int) fptr & ~3);
!   if (!_dl_read_access_allowed ((unsigned int)plabel))
      return (unsigned int) fptr;
  
    /* Load first word of candidate descriptor.  It should be a pointer
       with word alignment and point to memory that can be read.  */
    got = (unsigned int *) plabel[0];
    if (((unsigned int) got & 3) != 0
!       || !_dl_read_access_allowed ((unsigned int)got))
      return (unsigned int) fptr;
  
+   /* We need to load the relocation offset before the function address.  */
+   reloc_offset = plabel[1];
+   __sync_synchronize();
    got = (unsigned int *) (plabel[0] + GOT_FROM_PLT_STUB);
  
    /* Return the address of the function if the plabel has been resolved.  */
*************** __canonicalize_funcptr_for_compare (fptr
*** 137,143 ****
  
    /* Call fixup to resolve the function address.  got[1] contains the
       link_map pointer and plabel[1] the relocation offset.  */
!   fixup ((struct link_map *) got[1], plabel[1]);
  
    return plabel[0];
  }
--- 141,147 ----
  
    /* Call fixup to resolve the function address.  got[1] contains the
       link_map pointer and plabel[1] the relocation offset.  */
!   fixup ((struct link_map *) got[1], reloc_offset);
  
    return plabel[0];
  }
diff -Nrcpad gcc-8.3.0/libgcc/config/pa/lib2funcs.S gcc-8.4.0/libgcc/config/pa/lib2funcs.S
*** gcc-8.3.0/libgcc/config/pa/lib2funcs.S	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libgcc/config/pa/lib2funcs.S	Wed Mar  4 08:30:03 2020
*************** __gcc_plt_call
*** 55,67 ****
  	; An inline version of dyncall so we don't have to worry
  	; about long calls to millicode, PIC and other complexities.
  	bb,>=,n %r22,30,L$foo
!         depi 0,31,2,%r22
!         ldw 4(%r22),%r19
!         ldw 0(%r22),%r22
  L$foo
!         ldsid (%r22),%r1
!         mtsp %r1,%sr0
!         ble 0(%sr0,%r22)
  	copy %r31,%r2
  	ldw -8(%r30),%r2
  
--- 55,67 ----
  	; An inline version of dyncall so we don't have to worry
  	; about long calls to millicode, PIC and other complexities.
  	bb,>=,n %r22,30,L$foo
! 	depi 0,31,2,%r22
! 	ldw 0(%r22),%r21
! 	ldw 4(%r22),%r19
  L$foo
! 	ldsid (%r21),%r1
! 	mtsp %r1,%sr0
! 	ble 0(%sr0,%r21)
  	copy %r31,%r2
  	ldw -8(%r30),%r2
  
diff -Nrcpad gcc-8.3.0/libgcc/config/pa/linux-atomic.c gcc-8.4.0/libgcc/config/pa/linux-atomic.c
*** gcc-8.3.0/libgcc/config/pa/linux-atomic.c	Fri Aug 17 22:51:44 2018
--- gcc-8.4.0/libgcc/config/pa/linux-atomic.c	Wed Mar  4 08:30:03 2020
*************** see the files COPYING3 and COPYING.RUNTI
*** 41,47 ****
  
  /* Kernel helper for compare-and-exchange a 32-bit value.  */
  static inline long
! __kernel_cmpxchg (int *mem, int oldval, int newval)
  {
    register unsigned long lws_mem asm("r26") = (unsigned long) (mem);
    register int lws_old asm("r25") = oldval;
--- 41,47 ----
  
  /* Kernel helper for compare-and-exchange a 32-bit value.  */
  static inline long
! __kernel_cmpxchg (volatile void *mem, int oldval, int newval)
  {
    register unsigned long lws_mem asm("r26") = (unsigned long) (mem);
    register int lws_old asm("r25") = oldval;
*************** __kernel_cmpxchg (int *mem, int oldval,
*** 54,73 ****
  	: "i" (LWS_CAS), "r" (lws_mem), "r" (lws_old), "r" (lws_new)
  	: "r1", "r20", "r22", "r23", "r29", "r31", "memory"
    );
-   if (__builtin_expect (lws_errno == -EFAULT || lws_errno == -ENOSYS, 0))
-     __builtin_trap ();
  
    /* If the kernel LWS call succeeded (lws_errno == 0), lws_ret contains
       the old value from memory.  If this value is equal to OLDVAL, the
       new value was written to memory.  If not, return -EBUSY.  */
    if (!lws_errno && lws_ret != oldval)
!     lws_errno = -EBUSY;
  
    return lws_errno;
  }
  
  static inline long
! __kernel_cmpxchg2 (void *mem, const void *oldval, const void *newval,
  		   int val_size)
  {
    register unsigned long lws_mem asm("r26") = (unsigned long) (mem);
--- 54,71 ----
  	: "i" (LWS_CAS), "r" (lws_mem), "r" (lws_old), "r" (lws_new)
  	: "r1", "r20", "r22", "r23", "r29", "r31", "memory"
    );
  
    /* If the kernel LWS call succeeded (lws_errno == 0), lws_ret contains
       the old value from memory.  If this value is equal to OLDVAL, the
       new value was written to memory.  If not, return -EBUSY.  */
    if (!lws_errno && lws_ret != oldval)
!     return -EBUSY;
  
    return lws_errno;
  }
  
  static inline long
! __kernel_cmpxchg2 (volatile void *mem, const void *oldval, const void *newval,
  		   int val_size)
  {
    register unsigned long lws_mem asm("r26") = (unsigned long) (mem);
*************** __kernel_cmpxchg2 (void *mem, const void
*** 88,96 ****
    if (__builtin_expect (lws_ret == 0, 1))
      return 0;
  
-   if (__builtin_expect (lws_errno == -EFAULT || lws_errno == -ENOSYS, 0))
-     __builtin_trap ();
- 
    /* If the kernel LWS call fails with no error, return -EBUSY */
    if (__builtin_expect (!lws_errno, 0))
      return -EBUSY;
--- 86,91 ----
*************** __kernel_cmpxchg2 (void *mem, const void
*** 108,120 ****
  
  #define FETCH_AND_OP_2(OP, PFX_OP, INF_OP, TYPE, WIDTH, INDEX)		\
    TYPE HIDDEN								\
!   __sync_fetch_and_##OP##_##WIDTH (TYPE *ptr, TYPE val)			\
    {									\
      TYPE tmp, newval;							\
      long failure;							\
  									\
      do {								\
!       tmp = __atomic_load_n (ptr, __ATOMIC_RELAXED);			\
        newval = PFX_OP (tmp INF_OP val);					\
        failure = __kernel_cmpxchg2 (ptr, &tmp, &newval, INDEX);		\
      } while (failure != 0);						\
--- 103,115 ----
  
  #define FETCH_AND_OP_2(OP, PFX_OP, INF_OP, TYPE, WIDTH, INDEX)		\
    TYPE HIDDEN								\
!   __sync_fetch_and_##OP##_##WIDTH (volatile void *ptr, TYPE val)	\
    {									\
      TYPE tmp, newval;							\
      long failure;							\
  									\
      do {								\
!       tmp = __atomic_load_n ((volatile TYPE *)ptr, __ATOMIC_RELAXED);	\
        newval = PFX_OP (tmp INF_OP val);					\
        failure = __kernel_cmpxchg2 (ptr, &tmp, &newval, INDEX);		\
      } while (failure != 0);						\
*************** __kernel_cmpxchg2 (void *mem, const void
*** 122,157 ****
      return tmp;								\
    }
  
! FETCH_AND_OP_2 (add,   , +, long long, 8, 3)
! FETCH_AND_OP_2 (sub,   , -, long long, 8, 3)
! FETCH_AND_OP_2 (or,    , |, long long, 8, 3)
! FETCH_AND_OP_2 (and,   , &, long long, 8, 3)
! FETCH_AND_OP_2 (xor,   , ^, long long, 8, 3)
! FETCH_AND_OP_2 (nand, ~, &, long long, 8, 3)
  
! FETCH_AND_OP_2 (add,   , +, short, 2, 1)
! FETCH_AND_OP_2 (sub,   , -, short, 2, 1)
! FETCH_AND_OP_2 (or,    , |, short, 2, 1)
! FETCH_AND_OP_2 (and,   , &, short, 2, 1)
! FETCH_AND_OP_2 (xor,   , ^, short, 2, 1)
! FETCH_AND_OP_2 (nand, ~, &, short, 2, 1)
  
! FETCH_AND_OP_2 (add,   , +, signed char, 1, 0)
! FETCH_AND_OP_2 (sub,   , -, signed char, 1, 0)
! FETCH_AND_OP_2 (or,    , |, signed char, 1, 0)
! FETCH_AND_OP_2 (and,   , &, signed char, 1, 0)
! FETCH_AND_OP_2 (xor,   , ^, signed char, 1, 0)
! FETCH_AND_OP_2 (nand, ~, &, signed char, 1, 0)
  
  #define OP_AND_FETCH_2(OP, PFX_OP, INF_OP, TYPE, WIDTH, INDEX)		\
    TYPE HIDDEN								\
!   __sync_##OP##_and_fetch_##WIDTH (TYPE *ptr, TYPE val)			\
    {									\
      TYPE tmp, newval;							\
      long failure;							\
  									\
      do {								\
!       tmp = __atomic_load_n (ptr, __ATOMIC_RELAXED);			\
        newval = PFX_OP (tmp INF_OP val);					\
        failure = __kernel_cmpxchg2 (ptr, &tmp, &newval, INDEX);		\
      } while (failure != 0);						\
--- 117,152 ----
      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								\
!   __sync_##OP##_and_fetch_##WIDTH (volatile void *ptr, TYPE val)	\
    {									\
      TYPE tmp, newval;							\
      long failure;							\
  									\
      do {								\
!       tmp = __atomic_load_n ((volatile TYPE *)ptr, __ATOMIC_RELAXED);	\
        newval = PFX_OP (tmp INF_OP val);					\
        failure = __kernel_cmpxchg2 (ptr, &tmp, &newval, INDEX);		\
      } while (failure != 0);						\
*************** FETCH_AND_OP_2 (nand, ~, &, signed char,
*** 159,194 ****
      return PFX_OP (tmp INF_OP val);					\
    }
  
! OP_AND_FETCH_2 (add,   , +, long long, 8, 3)
! OP_AND_FETCH_2 (sub,   , -, long long, 8, 3)
! OP_AND_FETCH_2 (or,    , |, long long, 8, 3)
! OP_AND_FETCH_2 (and,   , &, long long, 8, 3)
! OP_AND_FETCH_2 (xor,   , ^, long long, 8, 3)
! OP_AND_FETCH_2 (nand, ~, &, long long, 8, 3)
  
! OP_AND_FETCH_2 (add,   , +, short, 2, 1)
! OP_AND_FETCH_2 (sub,   , -, short, 2, 1)
! OP_AND_FETCH_2 (or,    , |, short, 2, 1)
! OP_AND_FETCH_2 (and,   , &, short, 2, 1)
! OP_AND_FETCH_2 (xor,   , ^, short, 2, 1)
! OP_AND_FETCH_2 (nand, ~, &, short, 2, 1)
  
! OP_AND_FETCH_2 (add,   , +, signed char, 1, 0)
! OP_AND_FETCH_2 (sub,   , -, signed char, 1, 0)
! OP_AND_FETCH_2 (or,    , |, signed char, 1, 0)
! OP_AND_FETCH_2 (and,   , &, signed char, 1, 0)
! OP_AND_FETCH_2 (xor,   , ^, signed char, 1, 0)
! OP_AND_FETCH_2 (nand, ~, &, signed char, 1, 0)
  
  #define FETCH_AND_OP_WORD(OP, PFX_OP, INF_OP)				\
!   int HIDDEN								\
!   __sync_fetch_and_##OP##_4 (int *ptr, int val)				\
    {									\
!     int tmp;								\
      long failure;							\
  									\
      do {								\
!       tmp = __atomic_load_n (ptr, __ATOMIC_RELAXED);			\
        failure = __kernel_cmpxchg (ptr, tmp, PFX_OP (tmp INF_OP val));	\
      } while (failure != 0);						\
  									\
--- 154,190 ----
      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							\
!   __sync_fetch_and_##OP##_4 (volatile void *ptr, unsigned int val)	\
    {									\
!     unsigned int tmp;							\
      long failure;							\
  									\
      do {								\
!       tmp = __atomic_load_n ((volatile unsigned int *)ptr,		\
! 			     __ATOMIC_RELAXED);				\
        failure = __kernel_cmpxchg (ptr, tmp, PFX_OP (tmp INF_OP val));	\
      } while (failure != 0);						\
  									\
*************** FETCH_AND_OP_WORD (xor,   , ^)
*** 203,216 ****
  FETCH_AND_OP_WORD (nand, ~, &)
  
  #define OP_AND_FETCH_WORD(OP, PFX_OP, INF_OP)				\
!   int HIDDEN								\
!   __sync_##OP##_and_fetch_4 (int *ptr, int val)				\
    {									\
!     int tmp;								\
      long failure;							\
  									\
      do {								\
!       tmp = __atomic_load_n (ptr, __ATOMIC_RELAXED);			\
        failure = __kernel_cmpxchg (ptr, tmp, PFX_OP (tmp INF_OP val));	\
      } while (failure != 0);						\
  									\
--- 199,213 ----
  FETCH_AND_OP_WORD (nand, ~, &)
  
  #define OP_AND_FETCH_WORD(OP, PFX_OP, INF_OP)				\
!   unsigned int HIDDEN							\
!   __sync_##OP##_and_fetch_4 (volatile void *ptr, unsigned int val)	\
    {									\
!     unsigned int tmp;							\
      long failure;							\
  									\
      do {								\
!       tmp = __atomic_load_n ((volatile unsigned int *)ptr,		\
! 			     __ATOMIC_RELAXED);				\
        failure = __kernel_cmpxchg (ptr, tmp, PFX_OP (tmp INF_OP val));	\
      } while (failure != 0);						\
  									\
*************** typedef unsigned char bool;
*** 228,234 ****
  
  #define COMPARE_AND_SWAP_2(TYPE, WIDTH, INDEX)				\
    TYPE HIDDEN								\
!   __sync_val_compare_and_swap_##WIDTH (TYPE *ptr, TYPE oldval,		\
  				       TYPE newval)			\
    {									\
      TYPE actual_oldval;							\
--- 225,231 ----
  
  #define COMPARE_AND_SWAP_2(TYPE, WIDTH, INDEX)				\
    TYPE HIDDEN								\
!   __sync_val_compare_and_swap_##WIDTH (volatile void *ptr, TYPE oldval,	\
  				       TYPE newval)			\
    {									\
      TYPE actual_oldval;							\
*************** typedef unsigned char bool;
*** 236,242 ****
  									\
      while (1)								\
        {									\
! 	actual_oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED);	\
  									\
  	if (__builtin_expect (oldval != actual_oldval, 0))		\
  	  return actual_oldval;						\
--- 233,240 ----
  									\
      while (1)								\
        {									\
! 	actual_oldval = __atomic_load_n ((volatile TYPE *)ptr,		\
! 					 __ATOMIC_RELAXED);		\
  									\
  	if (__builtin_expect (oldval != actual_oldval, 0))		\
  	  return actual_oldval;						\
*************** typedef unsigned char bool;
*** 248,274 ****
        }									\
    }									\
  									\
!   bool HIDDEN								\
!   __sync_bool_compare_and_swap_##WIDTH (TYPE *ptr, TYPE oldval,		\
! 					TYPE newval)			\
    {									\
      long failure = __kernel_cmpxchg2 (ptr, &oldval, &newval, INDEX);	\
      return (failure == 0);						\
    }
  
! COMPARE_AND_SWAP_2 (long long, 8, 3)
! COMPARE_AND_SWAP_2 (short, 2, 1)
! COMPARE_AND_SWAP_2 (char, 1, 0)
  
! int HIDDEN
! __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
  {
    long fail;
!   int actual_oldval;
      
    while (1)
      {
!       actual_oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED);
  
        if (__builtin_expect (oldval != actual_oldval, 0))
  	return actual_oldval;
--- 246,274 ----
        }									\
    }									\
  									\
!   _Bool HIDDEN								\
!   __sync_bool_compare_and_swap_##WIDTH (volatile void *ptr,		\
! 					TYPE oldval, TYPE newval)	\
    {									\
      long failure = __kernel_cmpxchg2 (ptr, &oldval, &newval, INDEX);	\
      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,
! 			       unsigned int newval)
  {
    long fail;
!   unsigned int actual_oldval;
      
    while (1)
      {
!       actual_oldval = __atomic_load_n ((volatile unsigned int *)ptr,
! 				       __ATOMIC_RELAXED);
  
        if (__builtin_expect (oldval != actual_oldval, 0))
  	return actual_oldval;
*************** __sync_val_compare_and_swap_4 (int *ptr,
*** 280,287 ****
      }
  }
  
! bool HIDDEN
! __sync_bool_compare_and_swap_4 (int *ptr, int oldval, int newval)
  {
    long failure = __kernel_cmpxchg (ptr, oldval, newval);
    return (failure == 0);
--- 280,288 ----
      }
  }
  
! _Bool HIDDEN
! __sync_bool_compare_and_swap_4 (volatile void *ptr, unsigned int oldval,
! 				unsigned int newval)
  {
    long failure = __kernel_cmpxchg (ptr, oldval, newval);
    return (failure == 0);
*************** __sync_bool_compare_and_swap_4 (int *ptr
*** 289,343 ****
  
  #define SYNC_LOCK_TEST_AND_SET_2(TYPE, WIDTH, INDEX)			\
  TYPE HIDDEN								\
!   __sync_lock_test_and_set_##WIDTH (TYPE *ptr, TYPE val)		\
    {									\
      TYPE oldval;							\
      long failure;							\
  									\
      do {								\
!       oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED);			\
        failure = __kernel_cmpxchg2 (ptr, &oldval, &val, INDEX);		\
      } while (failure != 0);						\
  									\
      return oldval;							\
    }
  
! SYNC_LOCK_TEST_AND_SET_2 (long long, 8, 3)
! SYNC_LOCK_TEST_AND_SET_2 (short, 2, 1)
! SYNC_LOCK_TEST_AND_SET_2 (signed char, 1, 0)
  
! int HIDDEN
! __sync_lock_test_and_set_4 (int *ptr, int val)
  {
    long failure;
!   int oldval;
  
    do {
!     oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED);
      failure = __kernel_cmpxchg (ptr, oldval, val);
    } while (failure != 0);
  
    return oldval;
  }
  
! void HIDDEN
! __sync_lock_release_8 (long long *ptr)
! {
!   /* All accesses must be complete before we release the lock.  */
!   __sync_synchronize ();
!   *(double *)ptr = 0;
! }
! 
! #define SYNC_LOCK_RELEASE_1(TYPE, WIDTH)			\
    void HIDDEN							\
!   __sync_lock_release_##WIDTH (TYPE *ptr)			\
    {								\
!     /* All accesses must be complete before we release		\
!        the lock.  */						\
!     __sync_synchronize ();					\
!     *ptr = 0;							\
    }
  
! SYNC_LOCK_RELEASE_1 (int, 4)
! SYNC_LOCK_RELEASE_1 (short, 2)
! SYNC_LOCK_RELEASE_1 (signed char, 1)
--- 290,353 ----
  
  #define SYNC_LOCK_TEST_AND_SET_2(TYPE, WIDTH, INDEX)			\
  TYPE HIDDEN								\
!   __sync_lock_test_and_set_##WIDTH (volatile void *ptr, TYPE val)	\
    {									\
      TYPE oldval;							\
      long failure;							\
  									\
      do {								\
!       oldval = __atomic_load_n ((volatile TYPE *)ptr,			\
! 				__ATOMIC_RELAXED);			\
        failure = __kernel_cmpxchg2 (ptr, &oldval, &val, INDEX);		\
      } while (failure != 0);						\
  									\
      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)
  {
    long failure;
!   unsigned int oldval;
  
    do {
!     oldval = __atomic_load_n ((volatile unsigned int *)ptr, __ATOMIC_RELAXED);
      failure = __kernel_cmpxchg (ptr, oldval, val);
    } while (failure != 0);
  
    return oldval;
  }
  
! #define SYNC_LOCK_RELEASE_1(TYPE, WIDTH, INDEX)			\
    void HIDDEN							\
!   __sync_lock_release_##WIDTH (volatile void *ptr)		\
    {								\
!     TYPE oldval, val = 0;					\
!     long failure;						\
! 								\
!     do {							\
!       oldval = __atomic_load_n ((volatile TYPE *)ptr,		\
! 				__ATOMIC_RELAXED);		\
!       failure = __kernel_cmpxchg2 (ptr, &oldval, &val, INDEX);	\
!     } 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)
! {
!   long failure;
!   unsigned int oldval;
! 
!   do {
!     oldval = __atomic_load_n ((volatile unsigned int *)ptr, __ATOMIC_RELAXED);
!     failure = __kernel_cmpxchg (ptr, oldval, 0);
!   } while (failure != 0);
! }
diff -Nrcpad gcc-8.3.0/libgcc/config/pa/milli64.S gcc-8.4.0/libgcc/config/pa/milli64.S
*** gcc-8.3.0/libgcc/config/pa/milli64.S	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libgcc/config/pa/milli64.S	Wed Mar  4 08:30:03 2020
*************** GSYM($$dyncall)
*** 222,240 ****
  	.proc
  	.callinfo	millicode
  	.entry
- 	bb,>=,n %r22,30,LREF(1)		; branch if not plabel address
- 	depi	0,31,2,%r22		; clear the two least significant bits
- 	ldw	4(%r22),%r19		; load new LTP value
- 	ldw	0(%r22),%r22		; load address of target
- LSYM(1)
  #ifdef LINUX
! 	bv	%r0(%r22)		; branch to the real target
  #else
  	ldsid	(%sr0,%r22),%r1		; get the "space ident" selected by r22
  	mtsp	%r1,%sr0		; move that space identifier into sr0
! 	be	0(%sr0,%r22)		; branch to the real target
! #endif
  	stw	%r2,-24(%r30)		; save return address into frame marker
  	.exit
  	.procend
  #endif
--- 222,247 ----
  	.proc
  	.callinfo	millicode
  	.entry
  #ifdef LINUX
! 	extru,<>	%r22,30,1,%r0	; nullify if plabel bit set
! 	bv,n	%r0(%r22)		; branch to target
! 	ldw	-2(%r22),%r21		; load address of target
! 	bv	%r0(%r21)		; branch to the real target
! 	ldw	2(%r22),%r19		; load new LTP value
  #else
+ 	bb,>=,n %r22,30,LREF(1)		; branch if not plabel address
+ 	ldw	-2(%r22),%r21		; load address of target to r21
+ 	ldsid	(%sr0,%r21),%r1		; get the "space ident" selected by r21
+ 	ldw	2(%r22),%r19		; load new LTP value
+ 	mtsp	%r1,%sr0		; move that space identifier into sr0
+ 	be	0(%sr0,%r21)		; branch to the real target
+ 	stw	%r2,-24(%r30)		; save return address into frame marker
+ LSYM(1)
  	ldsid	(%sr0,%r22),%r1		; get the "space ident" selected by r22
  	mtsp	%r1,%sr0		; move that space identifier into sr0
! 	be	0(%sr0,%r22)		; branch to the target
  	stw	%r2,-24(%r30)		; save return address into frame marker
+ #endif
  	.exit
  	.procend
  #endif
diff -Nrcpad gcc-8.3.0/libgcc/config/rs6000/darwin-vecsave.S gcc-8.4.0/libgcc/config/rs6000/darwin-vecsave.S
*** gcc-8.3.0/libgcc/config/rs6000/darwin-vecsave.S	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libgcc/config/rs6000/darwin-vecsave.S	Wed Mar  4 08:30:03 2020
***************
*** 31,38 ****
     (4 bytes) to do the operation; for Vector regs, 2 instructions are
     required (8 bytes.).   */
  
  	.machine ppc7400
! .text
  	.align 2
  
  .private_extern saveVEC
--- 31,44 ----
     (4 bytes) to do the operation; for Vector regs, 2 instructions are
     required (8 bytes.).   */
  
+ /* With some assemblers, we need the correct machine directive to get the
+    right CPU type / subtype in the file header.  */
+ #if	__ppc64__
+ 	.machine ppc64
+ #else
  	.machine ppc7400
! #endif
! 	.text
  	.align 2
  
  .private_extern saveVEC
diff -Nrcpad gcc-8.3.0/libgcc/config/rs6000/t-darwin gcc-8.4.0/libgcc/config/rs6000/t-darwin
*** gcc-8.3.0/libgcc/config/rs6000/t-darwin	Wed Nov  2 15:23:48 2011
--- gcc-8.4.0/libgcc/config/rs6000/t-darwin	Wed Mar  4 08:30:03 2020
***************
*** 1,23 ****
- DARWIN_EXTRA_CRT_BUILD_CFLAGS = -mlongcall -mmacosx-version-min=10.4
  
  crt2.o: $(srcdir)/config/rs6000/darwin-crt2.c
! 	$(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -c $<
  
  LIB2ADD = $(srcdir)/config/rs6000/darwin-tramp.S \
  	  $(srcdir)/config/darwin-64.c \
! 	  $(srcdir)/config/rs6000/darwin-fpsave.S  \
! 	  $(srcdir)/config/rs6000/darwin-gpsave.S  \
! 	  $(srcdir)/config/rs6000/darwin-world.S \
! 	  $(srcdir)/config/rs6000/ppc64-fp.c
! 
! LIB2ADD_ST = \
! 	  $(srcdir)/config/rs6000/darwin-vecsave.S
  
  # The .S files above are designed to run on all processors, even though
  # they use AltiVec instructions.
  # -Wa is used because -force_cpusubtype_ALL doesn't work with -dynamiclib.
! # -mmacosx-version-min=10.4 is used to provide compatibility for code from
! # earlier OSX versions.
! HOST_LIBGCC2_CFLAGS += -Wa,-force_cpusubtype_ALL -mmacosx-version-min=10.4
  
  LIB2ADDEH += $(srcdir)/config/rs6000/darwin-fallback.c
--- 1,58 ----
  
  crt2.o: $(srcdir)/config/rs6000/darwin-crt2.c
! 	$(crt_compile) -mmacosx-version-min=10.1 -c $<
! 
! # The sources for this indicate that there are some parts that
! # don't apply >= 10.4
! crt3_2.o: $(srcdir)/config/darwin-crt3.c
! 	$(crt_compile) -mmacosx-version-min=10.1 -c $<
! 
! # The outlined register save/restore functions need to run anywhere, and
! # they must be leaf functions suitable for use in an endfile.
! 
! PPC_ENDFILE_SRC = \
!   $(srcdir)/config/rs6000/darwin-gpsave.S \
!   $(srcdir)/config/rs6000/darwin-fpsave.S \
!   $(srcdir)/config/rs6000/darwin-vecsave.S
! 
! PPC_ENDFILE_OBJS = \
!  darwin-gpsave.o \
!  darwin-fpsave.o \
!  darwin-vecsave.o
! 
! darwin-gpsave.o: $(srcdir)/config/rs6000/darwin-gpsave.S
! 	$(crt_compile) -mmacosx-version-min=10.1 -c $<
! 
! darwin-fpsave.o: $(srcdir)/config/rs6000/darwin-fpsave.S
! 	$(crt_compile) -mmacosx-version-min=10.1 -c $<
! 
! darwin-vecsave.o: $(srcdir)/config/rs6000/darwin-vecsave.S
! 	$(crt_compile) -mmacosx-version-min=10.1 -c $<
! 
! # We build these into a library, so that they are only linked as needed and not
! # forced into every object.
! 
! libef_ppc.a: $(PPC_ENDFILE_OBJS)
! 	$(AR_CREATE_FOR_TARGET) $@ $(PPC_ENDFILE_OBJS)
! 	$(RANLIB_FOR_TARGET) $@
! 
! dw_ppc.o: $(srcdir)/config/rs6000/darwin-world.S
! 	$(crt_compile) -mmacosx-version-min=10.1 -c $<
  
  LIB2ADD = $(srcdir)/config/rs6000/darwin-tramp.S \
  	  $(srcdir)/config/darwin-64.c \
! 	  $(srcdir)/config/rs6000/darwin-world.S
  
  # The .S files above are designed to run on all processors, even though
  # they use AltiVec instructions.
  # -Wa is used because -force_cpusubtype_ALL doesn't work with -dynamiclib.
! 
! HOST_LIBGCC2_CFLAGS += -Wa,-force_cpusubtype_ALL
! 
! # Although the default for 10.4 is G3, we need the unwinder to be built
! # with vector support so that the "save/rest_world" outlined functions are
! # correctly invoked.
! unwind-dw2_s.o: HOST_LIBGCC2_CFLAGS += -maltivec
! unwind-dw2.o: HOST_LIBGCC2_CFLAGS += -maltivec
  
  LIB2ADDEH += $(srcdir)/config/rs6000/darwin-fallback.c
diff -Nrcpad gcc-8.3.0/libgcc/config/rs6000/t-darwin64 gcc-8.4.0/libgcc/config/rs6000/t-darwin64
*** gcc-8.3.0/libgcc/config/rs6000/t-darwin64	Sun Dec  4 15:46:28 2011
--- gcc-8.4.0/libgcc/config/rs6000/t-darwin64	Wed Mar  4 08:30:03 2020
***************
*** 1,7 ****
  LIB2_SIDITI_CONV_FUNCS = yes
- 
- LIB2ADD = $(srcdir)/config/rs6000/darwin-tramp.S \
- 	  $(srcdir)/config/darwin-64.c \
- 	  $(srcdir)/config/rs6000/darwin-fpsave.S \
- 	  $(srcdir)/config/rs6000/darwin-gpsave.S \
- 	  $(srcdir)/config/rs6000/darwin-world.S
--- 1 ----
diff -Nrcpad gcc-8.3.0/libgcc/config/t-darwin gcc-8.4.0/libgcc/config/t-darwin
*** gcc-8.3.0/libgcc/config/t-darwin	Sun Nov 27 15:07:22 2016
--- gcc-8.4.0/libgcc/config/t-darwin	Wed Mar  4 08:30:03 2020
***************
*** 1,21 ****
  # Set this as a minimum (unless overriden by arch t-files) since it's a
  # reasonable lowest common denominator that works for all our archs.
! HOST_LIBGCC2_CFLAGS += -mmacosx-version-min=10.5
  
  crt3.o: $(srcdir)/config/darwin-crt3.c
! 	$(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -c $<
  
  crttms.o: $(srcdir)/config/darwin-crt-tm.c
! 	$(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -DSTART -c $<
  
  crttme.o: $(srcdir)/config/darwin-crt-tm.c
! 	$(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -DEND -c $<
! 
! # -pipe because there's an assembler bug, 4077127, which causes
! # it to not properly process the first # directive, causing temporary
! # file names to appear in stabs, causing the bootstrap to fail.  Using -pipe
! # works around this by not having any temporary file names.
! HOST_LIBGCC2_CFLAGS += -pipe
  
  # Use unwind-dw2-fde-darwin
  LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/config/unwind-dw2-fde-darwin.c \
--- 1,15 ----
  # Set this as a minimum (unless overriden by arch t-files) since it's a
  # reasonable lowest common denominator that works for all our archs.
! HOST_LIBGCC2_CFLAGS += -mmacosx-version-min=10.4
  
  crt3.o: $(srcdir)/config/darwin-crt3.c
! 	$(crt_compile) -mmacosx-version-min=10.4 -c $<
  
  crttms.o: $(srcdir)/config/darwin-crt-tm.c
! 	$(crt_compile) -mmacosx-version-min=10.4 -DSTART -c $<
  
  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 \
diff -Nrcpad gcc-8.3.0/libgcc/config.host gcc-8.4.0/libgcc/config.host
*** gcc-8.3.0/libgcc/config.host	Fri Apr  6 20:04:17 2018
--- gcc-8.4.0/libgcc/config.host	Wed Mar  4 08:30:03 2020
*************** powerpc-*-darwin*)
*** 1018,1029 ****
  	  md_unwind_header=rs6000/darwin-unwind.h
  	  ;;
  	esac
! 	tmake_file="$tmake_file rs6000/t-ibm-ldouble"
! 	extra_parts="$extra_parts crt2.o"
  	;;
  powerpc64-*-darwin*)
  	tmake_file="$tmake_file rs6000/t-darwin64 rs6000/t-ibm-ldouble"
! 	extra_parts="$extra_parts crt2.o"
  	;;
  powerpc*-*-freebsd*)
  	tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-savresfgpr rs6000/t-crtstuff rs6000/t-freebsd t-softfp-sfdf t-softfp-excl t-softfp"
--- 1018,1029 ----
  	  md_unwind_header=rs6000/darwin-unwind.h
  	  ;;
  	esac
! 	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*)
  	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"
  	;;
  powerpc*-*-freebsd*)
  	tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-savresfgpr rs6000/t-crtstuff rs6000/t-freebsd t-softfp-sfdf t-softfp-excl t-softfp"
diff -Nrcpad gcc-8.3.0/libgfortran/ChangeLog gcc-8.4.0/libgfortran/ChangeLog
*** gcc-8.3.0/libgfortran/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libgfortran/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,48 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2019-11-26  Jerry DeLisle  <jvdelisle@gcc.ngu.org>
+ 
+         Backport from mainline
+         PR fortran/92100
+         io/transfer.c (data_transfer_init): Use fbuf_reset
+         instead of fbuf_flush before the seek. Note that fbuf_reset
+         calls fbuf_flush and adjusts fbuf pointers.
+ 
+ 2019-11-25  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 	Harald Anlauf <anlauf@gmx.de>
+ 
+ 	Backport from trunk
+ 	PR fortran/92569
+ 	* io/transfer.c (transfer_array_inner):  If position is
+ 	at AFTER_ENDFILE in current unit, return from data loop.
+ 
+ 2019-08-13  Janne Blomqvist  <jb@gcc.gnu.org>
+ 
+ 	Partial backport from trunk
+ 	PR fortran/91414
+ 	* intrinsics/random.c (lcg_parkmiller): Replace with splitmix64.
+ 	(splitmix64): New function.
+ 	(getosrandom): Simplify.
+ 	(init_rand_state): Use getosrandom only to get 8 bytes, splitmix64
+ 	to fill rest of state.
+ 
+ 2019-04-16  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2019-03-25  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR libgfortran/79540
+ 	* io/write_float.def (build_float_string): Don't copy digits when
+ 	ndigits is negative.
+ 
+ 2019-03-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/89020
+ 	* io/close.c (st_close): Generate error if calls to 'remove' return
+ 	an error.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libgfortran/intrinsics/random.c gcc-8.4.0/libgfortran/intrinsics/random.c
*** gcc-8.3.0/libgfortran/intrinsics/random.c	Wed Jan 31 14:16:22 2018
--- gcc-8.4.0/libgfortran/intrinsics/random.c	Wed Mar  4 08:30:03 2020
*************** jump (xorshift1024star_state* rs)
*** 272,301 ****
  }
  
  
! /* Super-simple LCG generator used in getosrandom () if /dev/urandom
!    doesn't exist.  */
! 
! #define M 2147483647 /* 2^31 - 1 (A large prime number) */
! #define A 16807      /* Prime root of M, passes statistical tests and produces a full cycle */
! #define Q 127773 /* M / A (To avoid overflow on A * seed) */
! #define R 2836   /* M % A (To avoid overflow on A * seed) */
  
! __attribute__((unused)) static uint32_t
! lcg_parkmiller(uint32_t seed)
  {
!     uint32_t hi = seed / Q;
!     uint32_t lo = seed % Q;
!     int32_t test = A * lo - R * hi;
!     if (test <= 0)
!         test += M;
!     return test;
  }
  
- #undef M
- #undef A
- #undef Q
- #undef R
- 
  
  /* Get some random bytes from the operating system in order to seed
     the PRNG.  */
--- 272,290 ----
  }
  
  
! /* Splitmix64 recommended by xorshift author for initializing.  After
!    getting one uint64_t value from the OS, this is used to fill in the
!    rest of the state.  */
  
! static uint64_t
! splitmix64 (uint64_t x)
  {
!   uint64_t z = (x += 0x9e3779b97f4a7c15);
!   z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9;
!   z = (z ^ (z >> 27)) * 0x94d049bb133111eb;
!   return z ^ (z >> 31);
  }
  
  
  /* Get some random bytes from the operating system in order to seed
     the PRNG.  */
*************** getosrandom (void *buf, size_t buflen)
*** 326,332 ****
        close (fd);
        return res;
      }
!   uint32_t seed = 1234567890;
    time_t secs;
    long usecs;
    if (gf_gettime (&secs, &usecs) == 0)
--- 315,321 ----
        close (fd);
        return res;
      }
!   uint64_t seed = 0x047f7684e9fc949dULL;
    time_t secs;
    long usecs;
    if (gf_gettime (&secs, &usecs) == 0)
*************** getosrandom (void *buf, size_t buflen)
*** 338,350 ****
    pid_t pid = getpid();
    seed ^= pid;
  #endif
!   uint32_t* ub = buf;
!   for (size_t i = 0; i < buflen / sizeof (uint32_t); i++)
!     {
!       ub[i] = seed;
!       seed = lcg_parkmiller (seed);
!     }
!   return buflen;
  #endif /* __MINGW64_VERSION_MAJOR  */
  }
  
--- 327,335 ----
    pid_t pid = getpid();
    seed ^= pid;
  #endif
!   size_t size = buflen < sizeof (uint64_t) ? buflen : sizeof (uint64_t);
!   memcpy (buf, &seed, size);
!   return size;
  #endif /* __MINGW64_VERSION_MAJOR  */
  }
  
*************** init_rand_state (xorshift1024star_state*
*** 359,365 ****
      __gthread_mutex_lock (&random_lock);
    if (!master_init)
      {
!       getosrandom (master_state, sizeof (master_state));
        njumps = 0;
        master_init = true;
      }
--- 344,356 ----
      __gthread_mutex_lock (&random_lock);
    if (!master_init)
      {
!       uint64_t os_seed;
!       getosrandom (&os_seed, sizeof (os_seed));
!       for (uint64_t i = 0; i < sizeof (master_state) / sizeof (uint64_t); i++)
! 	{
! 	  os_seed = splitmix64 (os_seed);
! 	  master_state[i] = os_seed;
! 	}
        njumps = 0;
        master_init = true;
      }
diff -Nrcpad gcc-8.3.0/libgfortran/io/close.c gcc-8.4.0/libgfortran/io/close.c
*** gcc-8.3.0/libgfortran/io/close.c	Fri Oct  5 20:16:21 2018
--- gcc-8.4.0/libgfortran/io/close.c	Wed Mar  4 08:30:03 2020
*************** st_close (st_parameter_close *clp)
*** 90,96 ****
  	      else
  		{
  #if HAVE_UNLINK_OPEN_FILE
! 		  remove (u->filename);
  #else
  		  path = strdup (u->filename);
  #endif
--- 90,99 ----
  	      else
  		{
  #if HAVE_UNLINK_OPEN_FILE
! 
! 		  if (remove (u->filename))
! 		    generate_error (&clp->common, LIBERROR_OS,
! 				    "File cannot be deleted");
  #else
  		  path = strdup (u->filename);
  #endif
*************** st_close (st_parameter_close *clp)
*** 103,109 ****
  #if !HAVE_UNLINK_OPEN_FILE
        if (path != NULL)
  	{
! 	  remove (path);
  	  free (path);
  	}
  #endif
--- 106,114 ----
  #if !HAVE_UNLINK_OPEN_FILE
        if (path != NULL)
  	{
! 	  if (remove (path))
! 	    generate_error (&clp->common, LIBERROR_OS,
! 			    "File cannot be deleted");
  	  free (path);
  	}
  #endif
diff -Nrcpad gcc-8.3.0/libgfortran/io/transfer.c gcc-8.4.0/libgfortran/io/transfer.c
*** gcc-8.3.0/libgfortran/io/transfer.c	Fri Nov  9 17:07:39 2018
--- gcc-8.4.0/libgfortran/io/transfer.c	Wed Mar  4 08:30:03 2020
*************** transfer_array (st_parameter_dt *dtp, gf
*** 2493,2518 ****
  
    data = GFC_DESCRIPTOR_DATA (desc);
  
!   while (data)
      {
!       dtp->u.p.transfer (dtp, iotype, data, kind, size, tsize);
!       data += stride0 * tsize;
!       count[0] += tsize;
!       n = 0;
!       while (count[n] == extent[n])
  	{
! 	  count[n] = 0;
! 	  data -= stride[n] * extent[n];
! 	  n++;
! 	  if (n == rank)
  	    {
! 	      data = NULL;
! 	      break;
  	    }
! 	  else
  	    {
! 	      count[n]++;
! 	      data += stride[n];
  	    }
  	}
      }
--- 2493,2554 ----
  
    data = GFC_DESCRIPTOR_DATA (desc);
  
!   /* When reading, we need to check endfile conditions so we do not miss
!      an END=label.  Make this separate so we do not have an extra test
!      in a tight loop when it is not needed.  */
! 
!   if (dtp->u.p.current_unit && dtp->u.p.mode == READING)
      {
!       while (data)
  	{
! 	  if (unlikely (dtp->u.p.current_unit->endfile == AFTER_ENDFILE))
! 	    return;
! 
! 	  dtp->u.p.transfer (dtp, iotype, data, kind, size, tsize);
! 	  data += stride0 * tsize;
! 	  count[0] += tsize;
! 	  n = 0;
! 	  while (count[n] == extent[n])
  	    {
! 	      count[n] = 0;
! 	      data -= stride[n] * extent[n];
! 	      n++;
! 	      if (n == rank)
! 		{
! 		  data = NULL;
! 		  break;
! 		}
! 	      else
! 		{
! 		  count[n]++;
! 		  data += stride[n];
! 		}
  	    }
! 	}
!     }
!   else
!     {
!       while (data)
! 	{
! 	  dtp->u.p.transfer (dtp, iotype, data, kind, size, tsize);
! 	  data += stride0 * tsize;
! 	  count[0] += tsize;
! 	  n = 0;
! 	  while (count[n] == extent[n])
  	    {
! 	      count[n] = 0;
! 	      data -= stride[n] * extent[n];
! 	      n++;
! 	      if (n == rank)
! 		{
! 		  data = NULL;
! 		  break;
! 		}
! 	      else
! 		{
! 		  count[n]++;
! 		  data += stride[n];
! 		}
  	    }
  	}
      }
*************** data_transfer_init (st_parameter_dt *dtp
*** 3102,3109 ****
  
            if (dtp->pos != dtp->u.p.current_unit->strm_pos)
              {
!               fbuf_flush (dtp->u.p.current_unit, dtp->u.p.mode);
!               if (sseek (dtp->u.p.current_unit->s, dtp->pos - 1, SEEK_SET) < 0)
                  {
                    generate_error (&dtp->common, LIBERROR_OS, NULL);
                    return;
--- 3138,3146 ----
  
            if (dtp->pos != dtp->u.p.current_unit->strm_pos)
              {
!               fbuf_reset (dtp->u.p.current_unit);
!               if (sseek (dtp->u.p.current_unit->s,
! 		  dtp->pos - 1, SEEK_SET) < 0)
                  {
                    generate_error (&dtp->common, LIBERROR_OS, NULL);
                    return;
diff -Nrcpad gcc-8.3.0/libgfortran/io/write_float.def gcc-8.4.0/libgfortran/io/write_float.def
*** gcc-8.3.0/libgfortran/io/write_float.def	Sun Jun 10 02:26:57 2018
--- gcc-8.4.0/libgfortran/io/write_float.def	Wed Mar  4 08:30:03 2020
*************** build_float_string (st_parameter_dt *dtp
*** 620,633 ****
      }
  
    /* Set digits after the decimal point, padding with zeros.  */
!   if (nafter > 0)
      {
        if (nafter > ndigits)
  	i = ndigits;
        else
  	i = nafter;
  
!       memcpy (put, digits, i);
        while (i < nafter)
  	put[i++] = '0';
  
--- 620,634 ----
      }
  
    /* Set digits after the decimal point, padding with zeros.  */
!   if (ndigits >= 0 && nafter > 0)
      {
        if (nafter > ndigits)
  	i = ndigits;
        else
  	i = nafter;
  
!       if (i > 0)
! 	memcpy (put, digits, i);
        while (i < nafter)
  	put[i++] = '0';
  
diff -Nrcpad gcc-8.3.0/libgomp/ChangeLog gcc-8.4.0/libgomp/ChangeLog
*** gcc-8.3.0/libgomp/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libgomp/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,55 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2020-02-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2020-02-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libgomp/93515
+ 	* testsuite/libgomp.c-c++-common/pr93515.c: New test.
+ 
+ 	2019-12-31  Ayush Mittal  <ayush.m@samsung.com>
+ 
+ 	PR libgomp/93065
+ 	* oacc-init.c (goacc_runtime_deinitialize): New function.
+ 
+ 	2019-12-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/92899
+ 	* testsuite/libgomp.fortran/atomic1.f90: New test.
+ 
+ 	2019-11-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/60228
+ 	* testsuite/libgomp.c++/udr-20.C: New test.
+ 	* testsuite/libgomp.c++/udr-21.C: New test.
+ 
+ 2019-12-11  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from mainline
+ 	2019-12-11  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* omp_lib.h.in: Fix spelling of function declaration
+ 	omp_get_cancell(l)ation.
+ 
+ 2019-08-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-05-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libgomp/90585
+ 	* plugin/plugin-hsa.c (print_kernel_dispatch, run_kernel): Use PRIu64
+ 	macro instead of "lu".
+ 	(release_kernel_dispatch): Likewise.  Cast shadow->debug to uintptr_t
+ 	before casting to void *.
+ 
+ 2019-06-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/90811
+ 	* testsuite/libgomp.c/pr90811.c: New test.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libgomp/oacc-init.c gcc-8.4.0/libgomp/oacc-init.c
*** gcc-8.3.0/libgomp/oacc-init.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libgomp/oacc-init.c	Wed Mar  4 08:30:03 2020
*************** goacc_runtime_initialize (void)
*** 657,662 ****
--- 657,671 ----
    goacc_host_init ();
  }
  
+ static void __attribute__((destructor))
+ goacc_runtime_deinitialize (void)
+ {
+ #if !(defined HAVE_TLS || defined USE_EMUTLS)
+   pthread_key_delete (goacc_tls_key);
+ #endif
+   pthread_key_delete (goacc_cleanup_key);
+ }
+ 
  /* Compiler helper functions */
  
  attribute_hidden void
diff -Nrcpad gcc-8.3.0/libgomp/omp_lib.h.in gcc-8.4.0/libgomp/omp_lib.h.in
*** gcc-8.3.0/libgomp/omp_lib.h.in	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libgomp/omp_lib.h.in	Wed Mar  4 08:30:03 2020
***************
*** 96,103 ****
        external omp_in_final
        logical(4) omp_in_final
  
!       external omp_get_cancelllation
!       logical(4) omp_get_cancelllation
  
        external omp_get_proc_bind
        integer(omp_proc_bind_kind) omp_get_proc_bind
--- 96,103 ----
        external omp_in_final
        logical(4) omp_in_final
  
!       external omp_get_cancellation
!       logical(4) omp_get_cancellation
  
        external omp_get_proc_bind
        integer(omp_proc_bind_kind) omp_get_proc_bind
diff -Nrcpad gcc-8.3.0/libgomp/plugin/plugin-hsa.c gcc-8.4.0/libgomp/plugin/plugin-hsa.c
*** gcc-8.3.0/libgomp/plugin/plugin-hsa.c	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libgomp/plugin/plugin-hsa.c	Wed Mar  4 08:30:03 2020
*************** create_single_kernel_dispatch (struct ke
*** 1154,1161 ****
  static void
  release_kernel_dispatch (struct GOMP_hsa_kernel_dispatch *shadow)
  {
!   HSA_DEBUG ("Released kernel dispatch: %p has value: %lu (%p)\n", shadow,
! 	     shadow->debug, (void *) shadow->debug);
  
    hsa_fns.hsa_memory_free_fn (shadow->kernarg_address);
  
--- 1154,1162 ----
  static void
  release_kernel_dispatch (struct GOMP_hsa_kernel_dispatch *shadow)
  {
!   HSA_DEBUG ("Released kernel dispatch: %p has value: %" PRIu64 " (%p)\n",
! 	     shadow, shadow->debug,
! 	     (void *) (uintptr_t) shadow->debug);
  
    hsa_fns.hsa_memory_free_fn (shadow->kernarg_address);
  
*************** print_kernel_dispatch (struct GOMP_hsa_k
*** 1276,1284 ****
    indent_stream (stderr, indent);
    fprintf (stderr, "kernarg_address: %p\n", dispatch->kernarg_address);
    indent_stream (stderr, indent);
!   fprintf (stderr, "object: %lu\n", dispatch->object);
    indent_stream (stderr, indent);
!   fprintf (stderr, "signal: %lu\n", dispatch->signal);
    indent_stream (stderr, indent);
    fprintf (stderr, "private_segment_size: %u\n",
  	   dispatch->private_segment_size);
--- 1277,1285 ----
    indent_stream (stderr, indent);
    fprintf (stderr, "kernarg_address: %p\n", dispatch->kernarg_address);
    indent_stream (stderr, indent);
!   fprintf (stderr, "object: %" PRIu64 "\n", dispatch->object);
    indent_stream (stderr, indent);
!   fprintf (stderr, "signal: %" PRIu64 "\n", dispatch->signal);
    indent_stream (stderr, indent);
    fprintf (stderr, "private_segment_size: %u\n",
  	   dispatch->private_segment_size);
*************** print_kernel_dispatch (struct GOMP_hsa_k
*** 1286,1292 ****
    fprintf (stderr, "group_segment_size: %u\n",
  	   dispatch->group_segment_size);
    indent_stream (stderr, indent);
!   fprintf (stderr, "children dispatches: %lu\n",
  	   dispatch->kernel_dispatch_count);
    indent_stream (stderr, indent);
    fprintf (stderr, "omp_num_threads: %u\n",
--- 1287,1293 ----
    fprintf (stderr, "group_segment_size: %u\n",
  	   dispatch->group_segment_size);
    indent_stream (stderr, indent);
!   fprintf (stderr, "children dispatches: %" PRIu64 "\n",
  	   dispatch->kernel_dispatch_count);
    indent_stream (stderr, indent);
    fprintf (stderr, "omp_num_threads: %u\n",
*************** run_kernel (struct kernel_info *kernel,
*** 1594,1600 ****
  	hsa_signal_t child_s;
  	child_s.handle = shadow->children_dispatches[i]->signal;
  
! 	HSA_DEBUG ("Waiting for children completion signal: %lu\n",
  		   shadow->children_dispatches[i]->signal);
  	hsa_fns.hsa_signal_load_acquire_fn (child_s);
        }
--- 1595,1601 ----
  	hsa_signal_t child_s;
  	child_s.handle = shadow->children_dispatches[i]->signal;
  
! 	HSA_DEBUG ("Waiting for children completion signal: %" PRIu64 "\n",
  		   shadow->children_dispatches[i]->signal);
  	hsa_fns.hsa_signal_load_acquire_fn (child_s);
        }
diff -Nrcpad gcc-8.3.0/libgomp/testsuite/libgomp.c/pr90811.c gcc-8.4.0/libgomp/testsuite/libgomp.c/pr90811.c
*** gcc-8.3.0/libgomp/testsuite/libgomp.c/pr90811.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libgomp/testsuite/libgomp.c/pr90811.c	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,29 ----
+ /* PR target/90811 */
+ 
+ int
+ main ()
+ {
+   long long a[100], b[100];
+   int i;
+   for (i = 0; i < 100; i++)
+     {
+       a[i] = i;
+       b[i] = i % 10;
+     }
+   #pragma omp target teams distribute parallel for simd map(tofrom: a[:100], b[:100])
+   for (i = 0; i < 100; i++)
+     {
+       long long c = 0;
+       const long long d[] = { 1, 3, 5, 7, 9 };
+       for (int j = 4; j >= 0; j--)
+          c = d[j] + b[i] * c;
+       a[i] += c;
+     }
+   for (i = 0; i < 100; i++)
+     {
+       const long long r[] = { 1, 26, 229, 976, 2849, 6646, 13381, 24284, 40801, 64594 };
+       if (a[i] != r[i % 10] + (i / 10 * 10))
+ 	__builtin_abort ();
+     }
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/libgomp/testsuite/libgomp.c++/udr-20.C gcc-8.4.0/libgomp/testsuite/libgomp.c++/udr-20.C
*** gcc-8.3.0/libgomp/testsuite/libgomp.c++/udr-20.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libgomp/testsuite/libgomp.c++/udr-20.C	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,54 ----
+ // PR c++/60228
+ // { dg-additional-options "-std=c++11" }
+ 
+ extern "C" void abort ();
+ 
+ struct A
+ {
+   typedef int T;
+   #pragma omp declare reduction (x : T : omp_out += omp_in + [](){ return 0; }()) initializer (omp_priv = [](){ return 0; }())
+   static void foo ();
+ };
+ 
+ template <typename T>
+ struct B
+ {
+   #pragma omp declare reduction (x : T : omp_out += omp_in + [](){ return T (0); }()) initializer (omp_priv = [](){ return T (0); }())
+   static void foo ();
+ };
+ 
+ void
+ A::foo ()
+ {
+   int r = 0, s = 0;
+   #pragma omp parallel for reduction (x : r, s)
+   for (int i = 0; i < 64; i++)
+     {
+       r++;
+       s += i;
+     }
+   if (r != 64 || s != (64 * 63) / 2)
+     abort ();
+ }
+ 
+ template <typename T>
+ void
+ B<T>::foo ()
+ {
+   T r = 0, s = 0;
+   #pragma omp parallel for reduction (x : r, s)
+   for (int i = 0; i < 64; i++)
+     {
+       r++;
+       s += i;
+     }
+   if (r != 64 || s != (64 * 63) / 2)
+     abort ();
+ }
+ 
+ int
+ main ()
+ {
+   A::foo ();
+   B<long>::foo ();
+ }
diff -Nrcpad gcc-8.3.0/libgomp/testsuite/libgomp.c++/udr-21.C gcc-8.4.0/libgomp/testsuite/libgomp.c++/udr-21.C
*** gcc-8.3.0/libgomp/testsuite/libgomp.c++/udr-21.C	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libgomp/testsuite/libgomp.c++/udr-21.C	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,54 ----
+ // PR c++/60228
+ // { dg-additional-options "-std=c++11" }
+ 
+ extern "C" void abort ();
+ 
+ struct A
+ {
+   typedef int T;
+   #pragma omp declare reduction (y : T : [&omp_out, &omp_in]() { omp_out += omp_in; return 0; }()) initializer (omp_priv = [omp_orig]() { return omp_orig; }())
+   static void foo ();
+ };
+ 
+ template <typename T>
+ struct B
+ {
+   #pragma omp declare reduction (y : T : [&omp_out, &omp_in]() { omp_out += omp_in; return 0; }()) initializer (omp_priv = [omp_orig]() { return omp_orig; }())
+   static void foo ();
+ };
+ 
+ void
+ A::foo ()
+ {
+   int r = 0, s = 0;
+   #pragma omp parallel for reduction (y : r, s)
+   for (int i = 0; i < 64; i++)
+     {
+       r++;
+       s += i;
+     }
+   if (r != 64 || s != (64 * 63) / 2)
+     abort ();
+ }
+ 
+ template <typename T>
+ void
+ B<T>::foo ()
+ {
+   T r = 0, s = 0;
+   #pragma omp parallel for reduction (y : r, s)
+   for (int i = 0; i < 64; i++)
+     {
+       r++;
+       s += i;
+     }
+   if (r != 64 || s != (64 * 63) / 2)
+     abort ();
+ }
+ 
+ int
+ main ()
+ {
+   A::foo ();
+   B<short>::foo ();
+ }
diff -Nrcpad gcc-8.3.0/libgomp/testsuite/libgomp.c-c++-common/pr93515.c gcc-8.4.0/libgomp/testsuite/libgomp.c-c++-common/pr93515.c
*** gcc-8.3.0/libgomp/testsuite/libgomp.c-c++-common/pr93515.c	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libgomp/testsuite/libgomp.c-c++-common/pr93515.c	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,36 ----
+ /* PR libgomp/93515 */
+ 
+ #include <omp.h>
+ #include <stdlib.h>
+ 
+ int
+ main ()
+ {
+   int i;
+   int a = 42;
+ #pragma omp target teams distribute parallel for defaultmap(tofrom: scalar)
+   for (i = 0; i < 64; ++i)
+     if (omp_get_team_num () == 0)
+       if (omp_get_thread_num () == 0)
+ 	a = 142;
+   if (a != 142)
+     __builtin_abort ();
+   a = 42;
+ #pragma omp target parallel for defaultmap(tofrom: scalar)
+   for (i = 0; i < 64; ++i)
+     if (omp_get_thread_num () == 0)
+       a = 143;
+   if (a != 143)
+     __builtin_abort ();
+   a = 42;
+ #pragma omp target firstprivate(a)
+   {
+     #pragma omp parallel for
+     for (i = 0; i < 64; ++i)
+       if (omp_get_thread_num () == 0)
+ 	a = 144;
+     if (a != 144)
+       abort ();
+   }
+   return 0;
+ }
diff -Nrcpad gcc-8.3.0/libgomp/testsuite/libgomp.fortran/atomic1.f90 gcc-8.4.0/libgomp/testsuite/libgomp.fortran/atomic1.f90
*** gcc-8.3.0/libgomp/testsuite/libgomp.fortran/atomic1.f90	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libgomp/testsuite/libgomp.fortran/atomic1.f90	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,46 ----
+ ! PR fortran/92899
+ 
+ program pr92899
+   real :: x = 1.0
+   double precision :: y
+   integer(kind=4) :: z = 4
+   integer(kind=8) :: w
+   !$omp atomic capture
+   y = x
+   x = 2.0
+   !$omp end atomic
+   if (y /= 1.0 .or. x /= 2.0) stop 1
+   !$omp atomic capture
+   x = y
+   y = 3.0
+   !$omp end atomic
+   if (x /= 1.0 .or. y /= 3.0) stop 2
+   !$omp atomic capture
+   w = z
+   z = 5
+   !$omp end atomic
+   if (w /= 4 .or. z /= 5) stop 3
+   !$omp atomic capture
+   z = w
+   w = 6
+   !$omp end atomic
+   if (z /= 4 .or. w /= 6) stop 4
+   !$omp atomic write
+   x = y
+   !$omp end atomic
+   if (x /= 3.0 .or. y /= 3.0) stop 5
+   x = 7.0
+   !$omp atomic write
+   y = x
+   !$omp end atomic
+   if (x /= 7.0 .or. y /= 7.0) stop 6
+   !$omp atomic write
+   z = w
+   !$omp end atomic
+   if (z /= 6 .or. w /= 6) stop 7
+   z = 8
+   !$omp atomic write
+   w = z
+   !$omp end atomic
+   if (z /= 8 .or. w /= 8) stop 8
+ end
diff -Nrcpad gcc-8.3.0/libhsail-rt/ChangeLog gcc-8.4.0/libhsail-rt/ChangeLog
*** gcc-8.3.0/libhsail-rt/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libhsail-rt/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libiberty/ChangeLog gcc-8.4.0/libiberty/ChangeLog
*** gcc-8.3.0/libiberty/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libiberty/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,16 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2019-07-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/90924
+ 	Backport from mainline
+ 	2019-07-12  Ren Kimura  <rkx1209dev@gmail.com>
+ 
+ 	* simple-object-elf.c (simple_object_elf_match): Check zero value
+ 	shstrndx.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libiberty/simple-object-elf.c gcc-8.4.0/libiberty/simple-object-elf.c
*** gcc-8.3.0/libiberty/simple-object-elf.c	Thu Jul 19 08:47:35 2018
--- gcc-8.4.0/libiberty/simple-object-elf.c	Wed Mar  4 08:30:03 2020
*************** simple_object_elf_match (unsigned char h
*** 549,554 ****
--- 549,562 ----
        return NULL;
      }
  
+   if (eor->shstrndx == 0)
+     {
+       *errmsg = "invalid ELF shstrndx == 0";
+       *err = 0;
+       XDELETE (eor);
+       return NULL;
+     }
+ 
    return (void *) eor;
  }
  
diff -Nrcpad gcc-8.3.0/libitm/ChangeLog gcc-8.4.0/libitm/ChangeLog
*** gcc-8.3.0/libitm/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libitm/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,16 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2019-09-28  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2018-08-03  Sergei Trofimovich  <slyfox@gentoo.org>
+ 
+ 	PR target/86712
+ 	* config/sh/sjlj.S: Adjust to use PIC vs normal code to avoid
+ 	absolute relocation in a shared library.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libitm/config/sh/sjlj.S gcc-8.4.0/libitm/config/sh/sjlj.S
*** gcc-8.3.0/libitm/config/sh/sjlj.S	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libitm/config/sh/sjlj.S	Wed Mar  4 08:30:03 2020
*************** _ITM_beginTransaction:
*** 53,59 ****
  #else
  	cfi_def_cfa_offset (4*10)
  #endif
! #if defined HAVE_ATTRIBUTE_VISIBILITY || !defined __PIC__
  	mov.l	.Lbegin, r1
  	jsr	@r1
  	 mov	r15, r5
--- 53,59 ----
  #else
  	cfi_def_cfa_offset (4*10)
  #endif
! #if !defined __PIC__
  	mov.l	.Lbegin, r1
  	jsr	@r1
  	 mov	r15, r5
*************** _ITM_beginTransaction:
*** 78,84 ****
  
  	.align  2
  .Lbegin:
! #if defined HAVE_ATTRIBUTE_VISIBILITY || !defined __PIC__
  	.long	GTM_begin_transaction
  #else
  	.long	GTM_begin_transaction@PCREL-(.Lbegin0-.)
--- 78,84 ----
  
  	.align  2
  .Lbegin:
! #if !defined __PIC__
  	.long	GTM_begin_transaction
  #else
  	.long	GTM_begin_transaction@PCREL-(.Lbegin0-.)
diff -Nrcpad gcc-8.3.0/libmpx/ChangeLog gcc-8.4.0/libmpx/ChangeLog
*** gcc-8.3.0/libmpx/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libmpx/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libobjc/ChangeLog gcc-8.4.0/libobjc/ChangeLog
*** gcc-8.3.0/libobjc/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libobjc/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/liboffloadmic/ChangeLog gcc-8.4.0/liboffloadmic/ChangeLog
*** gcc-8.3.0/liboffloadmic/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/liboffloadmic/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libquadmath/ChangeLog gcc-8.4.0/libquadmath/ChangeLog
*** gcc-8.3.0/libquadmath/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libquadmath/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,16 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2019-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-08-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* quadmath.h (M_Eq, M_LOG2Eq, M_LOG10Eq, M_LN2q, M_LN10q, M_PIq,
+ 	M_PI_2q, M_PI_4q, M_1_PIq, M_2_PIq, M_2_SQRTPIq, M_SQRT2q,
+ 	M_SQRT1_2q): Use two more decimal places.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libquadmath/quadmath.h gcc-8.4.0/libquadmath/quadmath.h
*** gcc-8.3.0/libquadmath/quadmath.h	Fri Sep  1 22:10:57 2017
--- gcc-8.4.0/libquadmath/quadmath.h	Wed Mar  4 08:30:03 2020
***************
*** 1,5 ****
  /* GCC Quad-Precision Math Library
!    Copyright (C) 2010, 2011 Free Software Foundation, Inc.
     Written by Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
  
  This file is part of the libquadmath library.
--- 1,5 ----
  /* GCC Quad-Precision Math Library
!    Copyright (C) 2010-2019 Free Software Foundation, Inc.
     Written by Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
  
  This file is part of the libquadmath library.
*************** extern int quadmath_snprintf (char *str,
*** 163,181 ****
     (floating constant exceeds range of ‘__float128’)  */
  /* #define HUGE_VALQ (__extension__ 0x1.0p32767Q) */
  
! #define M_Eq		2.7182818284590452353602874713526625Q  /* e */
! #define M_LOG2Eq	1.4426950408889634073599246810018921Q  /* log_2 e */
! #define M_LOG10Eq	0.4342944819032518276511289189166051Q  /* log_10 e */
! #define M_LN2q		0.6931471805599453094172321214581766Q  /* log_e 2 */
! #define M_LN10q		2.3025850929940456840179914546843642Q  /* log_e 10 */
! #define M_PIq		3.1415926535897932384626433832795029Q  /* pi */
! #define M_PI_2q		1.5707963267948966192313216916397514Q  /* pi/2 */
! #define M_PI_4q		0.7853981633974483096156608458198757Q  /* pi/4 */
! #define M_1_PIq		0.3183098861837906715377675267450287Q  /* 1/pi */
! #define M_2_PIq		0.6366197723675813430755350534900574Q  /* 2/pi */
! #define M_2_SQRTPIq	1.1283791670955125738961589031215452Q  /* 2/sqrt(pi) */
! #define M_SQRT2q	1.4142135623730950488016887242096981Q  /* sqrt(2) */
! #define M_SQRT1_2q	0.7071067811865475244008443621048490Q  /* 1/sqrt(2) */
  
  #define __quadmath_extern_inline \
    extern inline __attribute__ ((__gnu_inline__))
--- 163,181 ----
     (floating constant exceeds range of ‘__float128’)  */
  /* #define HUGE_VALQ (__extension__ 0x1.0p32767Q) */
  
! #define M_Eq		2.718281828459045235360287471352662498Q  /* e */
! #define M_LOG2Eq	1.442695040888963407359924681001892137Q  /* log_2 e */
! #define M_LOG10Eq	0.434294481903251827651128918916605082Q  /* log_10 e */
! #define M_LN2q		0.693147180559945309417232121458176568Q  /* log_e 2 */
! #define M_LN10q		2.302585092994045684017991454684364208Q  /* log_e 10 */
! #define M_PIq		3.141592653589793238462643383279502884Q  /* pi */
! #define M_PI_2q		1.570796326794896619231321691639751442Q  /* pi/2 */
! #define M_PI_4q		0.785398163397448309615660845819875721Q  /* pi/4 */
! #define M_1_PIq		0.318309886183790671537767526745028724Q  /* 1/pi */
! #define M_2_PIq		0.636619772367581343075535053490057448Q  /* 2/pi */
! #define M_2_SQRTPIq	1.128379167095512573896158903121545172Q  /* 2/sqrt(pi) */
! #define M_SQRT2q	1.414213562373095048801688724209698079Q  /* sqrt(2) */
! #define M_SQRT1_2q	0.707106781186547524400844362104849039Q  /* 1/sqrt(2) */
  
  #define __quadmath_extern_inline \
    extern inline __attribute__ ((__gnu_inline__))
diff -Nrcpad gcc-8.3.0/libsanitizer/ChangeLog gcc-8.4.0/libsanitizer/ChangeLog
*** gcc-8.3.0/libsanitizer/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libsanitizer/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,23 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2020-02-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-11-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/92154
+ 	* sanitizer_common/sanitizer_platform_limits_posix.h: Cherry-pick
+ 	llvm-project revision 947f9692440836dcb8d88b74b69dd379d85974ce.
+ 	* sanitizer_common/sanitizer_platform_limits_posix.cc: Likewise.
+ 
+ 	2019-10-22  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR sanitizer/92154
+ 	* sanitizer_common/sanitizer_platform_limits_posix.cc:
+ 	Cherry-pick compiler-rt revision r375220.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc gcc-8.4.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
*** gcc-8.3.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc	Thu May 31 09:58:32 2018
--- gcc-8.4.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc	Wed Mar  4 08:30:03 2020
*************** CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
*** 1147,1154 ****
  CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
  CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
  CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
! #if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)
! /* On aarch64 glibc 2.20 and earlier provided incorrect mode field.  */
  CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
  #endif
  
--- 1147,1155 ----
  CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
  CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
  CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
! #if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31)
! /* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit
!    on many architectures.  */
  CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
  #endif
  
diff -Nrcpad gcc-8.3.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h gcc-8.4.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
*** gcc-8.3.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h	Thu Oct 19 11:23:59 2017
--- gcc-8.4.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h	Wed Mar  4 08:30:03 2020
*************** namespace __sanitizer {
*** 210,235 ****
      u64 __unused1;
      u64 __unused2;
  #elif defined(__sparc__)
- #if defined(__arch64__)
      unsigned mode;
-     unsigned short __pad1;
- #else
-     unsigned short __pad1;
-     unsigned short mode;
      unsigned short __pad2;
- #endif
      unsigned short __seq;
      unsigned long long __unused1;
      unsigned long long __unused2;
- #elif defined(__mips__) || defined(__aarch64__) || defined(__s390x__)
-     unsigned int mode;
-     unsigned short __seq;
-     unsigned short __pad1;
-     unsigned long __unused1;
-     unsigned long __unused2;
  #else
!     unsigned short mode;
!     unsigned short __pad1;
      unsigned short __seq;
      unsigned short __pad2;
  #if defined(__x86_64__) && !defined(_LP64)
--- 210,222 ----
      u64 __unused1;
      u64 __unused2;
  #elif defined(__sparc__)
      unsigned mode;
      unsigned short __pad2;
      unsigned short __seq;
      unsigned long long __unused1;
      unsigned long long __unused2;
  #else
!     unsigned int mode;
      unsigned short __seq;
      unsigned short __pad2;
  #if defined(__x86_64__) && !defined(_LP64)
diff -Nrcpad gcc-8.3.0/libssp/ChangeLog gcc-8.4.0/libssp/ChangeLog
*** gcc-8.3.0/libssp/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libssp/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libstdc++-v3/ChangeLog gcc-8.4.0/libstdc++-v3/ChangeLog
*** gcc-8.3.0/libstdc++-v3/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libstdc++-v3/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,681 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2020-02-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2020-01-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/93205
+ 	* include/bits/random.h (operator>>): Check stream operation succeeds.
+ 	* include/bits/random.tcc (operator>>): Likewise.
+ 	(__extract_params): New function to fill a vector from a stream.
+ 	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
+ 
+ 	Backport from mainline
+ 	2019-12-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/92886
+ 	* include/bits/ios_base.h (std::ios_base::trunc): Fix comment.
+ 
+ 	Backport from mainline
+ 	2020-01-28  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/93325
+ 	* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
+ 	clock_gettime instead of explicit glibc version check.
+ 	* configure: Regenerate.
+ 
+ 2020-02-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2020-02-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/93562
+ 	* include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
+ 	(unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
+ 	* testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
+ 
+ 2020-02-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2020-01-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/92376
+ 	* libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
+ 	functions if they were detected by configure.
+ 
+ 2020-02-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-10-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/78552
+ 	* src/c++98/locale_init.cc (locale::classic()): Do not construct a new
+ 	locale object for every call.
+ 	(locale::_S_initialize_once()): Construct C locale here.
+ 
+ 	Backport from mainline
+ 	2020-01-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/91947
+ 	* include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
+ 	rule.
+ 	* include/Makefile.in: Regenerate.
+ 
+ 	Backport from mainlne
+ 	2019-10-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/81091
+ 	PR libstdc++/91947
+ 	* configure.ac: Use AC_SYS_LARGEFILE to enable 64-bit file APIs.
+ 	* config.h.in: Regenerate:
+ 	* configure: Regenerate:
+ 	* include/Makefile.am (${host_builddir}/largefile-config.h): New
+ 	target to generate config header for filesystem library.
+ 	(${host_builddir}/c++config.h): Rename macros for large file support.
+ 	* include/Makefile.in: Regenerate.
+ 	* src/filesystem/dir.cc: Include new config header.
+ 	* src/filesystem/ops.cc: Likewise.
+ 	(experimental::filesystem::file_size): Use uintmax_t for size.
+ 	* src/filesystem/std-dir.cc: Include new config header.
+ 	* src/filesystem/std-ops.cc: Likewise.
+ 	(filesystem::file_size): Use uintmax_t for size.
+ 
+ 2020-01-24  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2020-01-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/faq.xml: Fix grammar.
+ 	* doc/xml/manual/appendix_contributing.xml: Improve instructions.
+ 	* doc/xml/manual/spine.xml: Update copyright years.
+ 	* doc/html/*: Regenerate.
+ 
+ 2020-01-19  Eric S. Raymond <esr@thyrsus.com>
+ 	    Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	Partial backport from mainline:
+ 
+ 	2020-01-19  Eric S. Raymond <esr@thyrsus.com>
+ 	* doc/xml/faq.xml: Update for SVN -> Git transition.
+ 	* doc/xml/manual/appendix_contributing.xml: Likewise.
+ 
+ 2020-01-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/status_cxx1998.xml: Replace incorrect statement
+ 	about documenting 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_cxxtr1.xml: Likewise.
+ 	* doc/xml/manual/status_cxxtr24733.xml: Likewise.
+ 	* doc/html/*: Regenerate.
+ 
+ 2020-01-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/93201
+ 	* src/c++17/fs_ops.cc (remove_all(const path&, error_code&)): Check
+ 	result of recursive call before incrementing iterator.
+ 	* src/filesystem/ops.cc (remove_all(const path&, error_code&)):
+ 	Likewise.
+ 	* testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
+ 	are reported correctly.
+ 	* testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
+ 
+ 2019-10-24  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-06-06  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/20_util/is_nothrow_invocable/value.cc: Test converting to
+ 	void.
+ 	* testsuite/experimental/names.cc: Do not run for C++98 mode. Do not
+ 	include Library Fundamentals or Networking headers in C++11 mode.
+ 
+ 	Backport from mainline
+ 	2019-10-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/memoryfwd.h (uses_allocator): Do not declare for C++98.
+ 	* testsuite/17_intro/names.cc: Check uses_allocator in C++98.
+ 
+ 	Backport from mainline
+ 	2019-10-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/92143
+ 	* libsupc++/new_opa.cc (operator new) [__APPLE__]: Increase alignment
+ 	to at least sizeof(void*).
+ 
+ 	Backport from mainline
+ 	2019-10-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/Makefile.am (doc-html-docbook-regenerate): New target.
+ 	(${docbook_outdir}/html): Do not create unused 'html/ext' directory.
+ 	* doc/Makefile.in: Regenerate.
+ 	* doc/xml/manual/documentation_hacking.xml: Document new target.
+ 	* doc/html/*: Regenerate.
+ 
+ 	* doc/xml/manual/allocator.xml: Use archived copy of CUJ article.
+ 
+ 	Backport from mainline
+ 	2019-05-31  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/xml/manual/allocator.xml: Move hoard.org back to http.
+ 
+ 	Backport from mainline
+ 	2019-10-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/92059
+ 	* include/tr2/dynamic_bitset (__dynamic_bitset_base): Define all
+ 	special member functions as defaulted. Add noexcept to most members.
+ 	(__dynamic_bitset_base(size_t, unsigned long long, const _Alloc&)):
+ 	Mask off unwanted bits in the __val parameter. Avoid undefined left
+ 	shifts.
+ 	(__dynamic_bitset_base::_M_assign): Remove.
+ 	(__dynamic_bitset_base::_M_do_reset): Use std::fill.
+ 	(__dynamic_bitset_base::_M_are_all_aux): Avoid integer promotion when
+ 	block_type has lower rank than int.
+ 	(dynamic_bitset): Add noexcept to most members. Use injected-class-name
+ 	in return types and parameter types.
+ 	(dynamic_bitset::_M_Nb): Add default member initializer.
+ 	(dynamic_bitset(), dynamic_bitset(const dynamic_bitset&)): Define as
+ 	defaulted.
+ 	(dynamic_bitset(dynamic_bitset&&)): Clear source object after move.
+ 	(dynamic_bitset::operator=(const dynamic_bitset&)): Define as
+ 	defaulted.
+ 	(dynamic_bitset::operator=(dynamic_bitset&&)): Add noexcept-specifier.
+ 	Define without using swap, to propagate allocator correctly.
+ 	(dynamic_bitset(const char*, const _Alloc&)): Use strlen.
+ 	(dynamic_bitset::_M_do_sanitize, dynamic_bitset::_M_do_fill): Use
+ 	casts to avoid unwanted integer promotions.
+ 	(dynamic_bitset::_M_copy_from_ptr): Rearrange template parameters and
+ 	add default template arguments and default argument to simplify usage.
+ 	(dynamic_bitset::_M_copy_from_string): Adjust call to _M_copy_from_ptr.
+ 	(operator==(const dynamic_bitset&, const dynamic_bitset&))
+ 	(operator<(const dynamic_bitset&, const dynamic_bitset&)): Use _M_Nb.
+ 	* include/tr2/dynamic_bitset.tcc (dynamic_bitset::_M_copy_from_ptr):
+ 	Adjust template parameters to match declaration.
+ 	* testsuite/tr2/dynamic_bitset/cmp.cc: New test.
+ 	* testsuite/tr2/dynamic_bitset/cons.cc: New test.
+ 	* testsuite/tr2/dynamic_bitset/copy.cc: New test.
+ 	* testsuite/tr2/dynamic_bitset/move.cc: New test.
+ 	* testsuite/tr2/dynamic_bitset/pr92059.cc: New test.
+ 
+ 2019-09-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* python/libstdcxx/v6/xmethods.py (SharedPtrUseCountWorker.__call__):
+ 	Fix syntax error.
+ 
+ 2019-09-02  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/html/*: Regenerate.
+ 
+ 	* testsuite/20_util/unique_ptr/assign/48635_neg.cc: Replace dg-error
+ 	with dg-prune-output for enable_if failure.
+ 	* testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Add
+ 	dg-prune-output for enable_if failure.
+ 
+ 2019-08-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-10-02  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/variant (__gen_vtable_impl::__visit_invoke): Call __get
+ 	directly instead of get, as caller ensures correct index is used.
+ 	(holds_alternative, get, get_if): Remove redundant inline specifiers.
+ 	(_VARIANT_RELATION_FUNCTION_TEMPLATE): Likewise.
+ 
+ 2019-08-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-08-16  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/ostream (basic_ostream::sentry::~sentry): Suppress
+ 	deprecation warnings for using uncaught_exception().
+ 
+ 2019-08-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-07-31  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/91308
+ 	* include/bits/unique_ptr.h (unique_ptr::__safe_conversion_up): Remove
+ 	constraints on deleter that should only apply to the constructor.
+ 	(unique_ptr<T[], D>::__safe_conversion_up): Likewise.
+ 	(unique_ptr<T[], D>::unique_ptr(unique_ptr<U, D>&&)): Restore
+ 	constraints on deleter here.
+ 	* testsuite/20_util/unique_ptr/assign/91308.cc: New test.
+ 
+ 2019-08-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-07-29  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/51333
+ 	* libsupc++/cxxabi.h (__gnu_cxx::recursive_init_error): Do not define
+ 	constructor inline.
+ 	* libsupc++/guard_error.cc (__gnu_cxx::recursive_init_error): Define
+ 	constructor.
+ 	* testsuite/18_support/51333.cc: New test.
+ 
+ 2019-08-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-05-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/status_cxx2017.xml: Add feature test macro for
+ 	P0040R3.
+ 	* doc/html/*: Regenerate.
+ 
+ 	Backport from mainline
+ 	2019-06-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/status_cxx2017.xml: Fix outdated reference to
+ 	C++17 working draft.
+ 
+ 	Backport from mainline
+ 	2019-05-21  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/shared_ptr.xml: Fix names of lock policy constants.
+ 
+ 2019-08-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-09-21  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/78179
+ 	* testsuite/26_numerics/headers/cmath/hypot.cc: Use lower tolerance
+ 	when sizeof(long double) == sizeof(double).
+ 
+ 2019-08-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-03-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/stl_algobase.h (__lg): Do arithmetic on type int to
+ 	avoid -Wconversion warnings.
+ 
+ 2019-08-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-06-07  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/90770
+ 	* src/Makefile.am (stamp-debug): Also test for missing makefile.
+ 	* src/Makefile.in: Regenerate.
+ 
+ 2019-08-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-05-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/random.h (seed_seq::param): Fix non-reserved name.
+ 	* include/experimental/type_traits (is_detected_exact)
+ 	(is_detected_exact_v): Likewise.
+ 	* testsuite/17_intro/names.cc: Check for more non-reserved names.
+ 	* testsuite/experimental/names.cc: New test.
+ 
+ 2019-08-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-05-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/85965
+ 	* include/bits/hashtable.h (_Hashtable::~_Hashtable()): Remove static
+ 	assertions from the destructor.
+ 	* include/bits/hashtable_policy.h (_Hash_code_base::_M_hash_code):
+ 	Move static_assert for hash function to here.
+ 	(_Hash_table_base::_M_equals): Move static_assert for equality
+ 	predicate to here.
+ 	* include/bits/stl_tree.h (_Rb_tree::_S_key(_Const_Link_type)): Move
+ 	assertions here. Access the value directly instead of calling _S_value.
+ 	(_Rb_tree::_S_key(_Const_Base_ptr)): Do downcast and forward to
+ 	_S_key(_Const_Link_type).
+ 	* testsuite/23_containers/set/85965.cc: Check construction,
+ 	destruction, assignment and size() do not trigger the assertions.
+ 	* testsuite/23_containers/unordered_set/85965.cc: Likewise.
+ 	* testsuite/23_containers/map/48101_neg.cc: Call find and adjust
+ 	expected errors.
+ 	* testsuite/23_containers/multimap/48101_neg.cc: Likewise.
+ 	* testsuite/23_containers/multiset/48101_neg.cc: Likewise.
+ 	* testsuite/23_containers/set/48101_neg.cc: Likewise.
+ 	* testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
+ 	* testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
+ 	* testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
+ 	* testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
+ 
+ 2019-08-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-09-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/stl_vector.h (vector::_Temporary_value::_M_ptr):
+ 	Return raw pointer not allocator's pointer type.
+ 	(vector::_Temporary_value::_M_val): Use _M_ptr.
+ 
+ 2019-06-01   Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2018-12-22 Iain Sandoe <iain@sandoe.co.uk>
+ 
+ 	* /config/os/bsd/darwin/ppc-extra.ver: Append long double symbols.
+ 
+ 2019-05-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/status_cxx2017.xml: Fix typo in documentation of
+ 	implementation-defined support for [fs.conform.9945].
+ 	* doc/html/*: Regenerate.
+ 
+ 2019-05-28  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/90634
+ 	* src/filesystem/path.cc (path::_M_split_cmpts()): Fix check for "/".
+ 	* testsuite/27_io/filesystem/path/construct/90634.cc: New test.
+ 	* testsuite/experimental/filesystem/path/construct/90634.cc: New test.
+ 
+ 	PR libstdc++/90634
+ 	* include/bits/fs_path.h (path::path(path&&)): Only call
+ 	_M_split_cmpts() for a path with multiple components.
+ 	(path::_S_is_dir_sep()): Add missing 'static' keyword to function.
+ 	* include/experimental/bits/fs_path.h: Likewise.
+ 	* src/filesystem/path.cc (path::_M_split_cmpts()): Count number of
+ 	components and reserve space in vector. Return early when there is
+ 	only one component.
+ 	* src/filesystem/std-path.cc (path::_M_split_cmpts()): Likewise.
+ 
+ 2019-05-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-02-27  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/89466
+ 	* acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Reorder check for local
+ 	stylesheet directories before check for xsltproc. Try to use
+ 	xmlcatalog to find local stylesheet directory before trying hardcoded
+ 	paths. Add path used by suse to hardcoded paths. Adjust xsltproc
+ 	check to look for the same stylesheet as doc/Makefile.am uses. Don't
+ 	use xsltproc if xmlcatalog fails to find a local stylesheet.
+ 	* configure.ac: Check for xmlcatalog.
+ 	* Makefile.in: Regenerate.
+ 	* configure: Likewise.
+ 	* doc/Makefile.in: Likewise.
+ 	* include/Makefile.in: Likewise.
+ 	* libsupc++/Makefile.in: Likewise.
+ 	* po/Makefile.in: Likewise.
+ 	* python/Makefile.in: Likewise.
+ 	* src/Makefile.in: Likewise.
+ 	* src/c++11/Makefile.in: Likewise.
+ 	* src/c++17/Makefile.in: Likewise.
+ 	* src/c++98/Makefile.in: Likewise.
+ 	* src/filesystem/Makefile.in: Likewise.
+ 	* testsuite/Makefile.in: Likewise.
+ 
+ 2019-05-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/html/*: Regenerate.
+ 
+ 2019-05-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-05-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/experimental/any (__any_caster): Use RTTI if comparing
+ 	addresses fails, to support non-unique addresses in shared libraries.
+ 	* include/std/any (__any_caster): Likewise.
+ 	* testsuite/experimental/any/misc/any_cast_neg.cc: Use 0 for dg-error
+ 	line number.
+ 
+ 2019-05-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-05-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/90220
+ 	* include/experimental/any (__any_caster): Constrain to only be
+ 	callable for object types. Use remove_cv_t instead of decay_t.
+ 	If the type decays or isn't copy constructible, compare the manager
+ 	function to a dummy specialization.
+ 	(__any_caster): Add overload constrained for non-object types.
+ 	(any::_Manager_internal<_Op>): Add dummy specialization.
+ 	* testsuite/experimental/any/misc/any_cast.cc: Test function types
+ 	and array types.
+ 
+ 	Backport from mainline
+ 	2019-04-24  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/90220
+ 	* include/std/any (__any_caster): Use remove_cv_t instead of decay_t.
+ 	Avoid a runtime check for types that can never be stored in std::any.
+ 	* testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
+ 	array types.
+ 
+ 	Backport from mainline
+ 	2019-04-24  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/90220 (partial)
+ 	* include/std/any (any_cast<T>(any*), any_cast<T>(const any*)): Do
+ 	not attempt ill-formed static_cast to pointers to non-object types.
+ 	* testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
+ 	function types.
+ 
+ 2019-05-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-01-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2
+ 	status.
+ 	* include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms):
+ 	Define.
+ 	* include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3
+ 	changes are supported.
+ 	* include/std/optional (__cpp_lib_optional): Likewise.
+ 	* include/std/variant (__cpp_lib_variant): Likewise.
+ 	* libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long
+ 	integer.
+ 
+ 2019-05-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from mainline
+ 	2019-05-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/90532 Ensure __is_constructible(T[]) is false
+ 	* include/std/type_traits (__do_is_default_constructible_impl)
+ 	(__is_default_constructible_atom, __is_default_constructible_safe):
+ 	Remove.
+ 	(is_default_constructible): Use is_constructible.
+ 	* testsuite/20_util/is_constructible/value.cc: Check int[] case.
+ 	* testsuite/20_util/is_default_constructible/value.cc: Likewise.
+ 	* testsuite/20_util/is_trivially_constructible/value.cc: Likewise.
+ 	* testsuite/20_util/is_trivially_default_constructible/value.cc:
+ 	Likewise.
+ 
+ 2019-05-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-05-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/90299
+ 	* src/filesystem/std-ops.cc (absolute(const path&)): Report an error
+ 	if the argument is an empty path.
+ 	(absolute(const path&, error_code&)): Use invalid_argument as error
+ 	code instead of no_such_file_or_directory.
+ 	* testsuite/27_io/filesystem/operations/absolute.cc: Check handling
+ 	of non-existent paths and empty paths with both overloads of absolute.
+ 
+ 2019-05-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-04-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/27_io/filesystem/path/decompose/root_path.cc: Remove
+ 	macros accidentally left in.
+ 
+ 	Backport from mainline
+ 	2019-05-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/90454.cc path construction from void*
+ 	* include/bits/fs_path.h (path::_Path): Use remove_pointer so that
+ 	pointers to void are rejected as well as void.
+ 	* include/experimental/bits/fs_path.h (path::_Path): Likewise.
+ 	* testsuite/27_io/filesystem/path/construct/80762.cc: Also check
+ 	pointers to void.
+ 	* testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.
+ 
+ 2019-05-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-05-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/81266
+ 	* testsuite/util/thread/all.h: Do not use remove_pointer for
+ 	std::thread::native_handle_type.
+ 
+ 2019-05-07  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2019-02-06  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/89102 (partial)
+ 	* include/std/type_traits (common_type<>): Define.
+ 	(common_type<T>): Derive from common_type<T, T>.
+ 	* testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
+ 	Test zero-length template argument list.
+ 	* testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
+ 	Test additional single argument cases.
+ 	* testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
+ 	Adjust expected error.
+ 
+ 	Backport from mainline
+ 	2019-01-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/88740
+ 	* testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to
+ 	write to stderr instead of using printf.
+ 
+ 	Backport from mainline
+ 	2019-04-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/90165
+ 	* include/std/variant (variant::__is_in_place_tag)
+ 	(variant::__not_in_place_tag): New helpers for variant(T&&)
+ 	constructor constraint.
+ 	(variant::variant(T&&)): Use __not_in_place_tag in constraints.
+ 	* testsuite/20_util/variant/compile.cc: Check variant(T&&) constructor
+ 	isn't used for in_place_type or in_place_index arguments.
+ 
+ 	Backport from mainline
+ 	2019-04-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/90105
+ 	* include/bits/forward_list.tcc (operator==): Do not use operator!= to
+ 	compare elements.
+ 	(forward_list<T, A>::sort(Comp)): When elements are equal take the one
+ 	earlier in the list, so that sort is stable.
+ 	* testsuite/23_containers/forward_list/operations/90105.cc: New test.
+ 	* testsuite/23_containers/forward_list/comparable.cc: Test with
+ 	types that meet the minimum EqualityComparable and LessThanComparable
+ 	requirements. Remove irrelevant comment.
+ 
+ 	Backport from mainline
+ 	2019-04-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/optional (optional::value_or(U&&) &&): Add missing
+ 	constexpr specifier.
+ 	* testsuite/20_util/optional/constexpr/observers/4.cc: Check value_or
+ 	for disengaged optionals and rvalue optionals.
+ 	* testsuite/20_util/optional/observers/4.cc: Likewise.
+ 
+ 	Backport from mainline
+ 	2019-04-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/faq.xml: Add information about emergency EH pool.
+ 	* doc/xml/manual/debug.xml: Update list of memory debugging tools.
+ 	Move outdated information on mt_allocator to a separate section.
+ 	* doc/xml/manual/evolution.xml: Clarify that GLIBCXX_FORCE_NEW
+ 	doesn't affect the default allocator.
+ 
+ 	Backport from mainline
+ 	2019-04-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* src/filesystem/std-dir.cc (_Dir::advance(bool, error_code&)): Handle
+ 	d_type == DT_UNKNOWN immediately.
+ 	(_Dir::should_recurse(bool, error_code&)): Remove file_type::unknown
+ 	handling here.
+ 	* testsuite/27_io/filesystem/iterators/caching.cc: New test.
+ 
+ 	Backport from mainline
+ 	2019-04-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/fs_path.h (path::operator=(path&&)): Check for self
+ 	assignment.
+ 	* testsuite/27_io/filesystem/path/assign/copy.cc: Test self
+ 	assignment.
+ 
+ 	Backport from mainline
+ 	2019-03-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/85965
+ 	* include/bits/hashtable.h (_Hashtable): Move static assertions to
+ 	destructor so they are not evaluated until the _Key type is complete.
+ 	* include/bits/stl_tree.h (_Rb_tree): Likewise.
+ 	* testsuite/23_containers/set/85965.cc: New test.
+ 	* testsuite/23_containers/unordered_set/85965.cc: New test.
+ 	* testsuite/23_containers/map/48101_neg.cc: Replace "here" errors
+ 	with regexp matching the corresponding _Rb_tree specialization.
+ 	* testsuite/23_containers/multimap/48101_neg.cc: Likewise.
+ 	* testsuite/23_containers/multiset/48101_neg.cc: Remove "here" error.
+ 	* testsuite/23_containers/set/48101_neg.cc: Likewise.
+ 	* testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
+ 	* testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
+ 	* testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
+ 	* testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
+ 
+ 	Backport from mainline
+ 	2019-03-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/89629
+ 	* libsupc++/hash_bytes.cc [__SIZEOF_SIZE_T__ == 8] (_Hash_bytes):
+ 	Use correct type for len_aligned.
+ 	* testsuite/20_util/hash/89629.cc: New test.
+ 
+ 	Backport from mainline
+ 	2019-03-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/using.xml: Use link element instead of xref.
+ 
+ 	Backport from mainline
+ 	2019-02-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/intro.xml: Document LWG 2586 status.
+ 	* include/bits/uses_allocator.h (__uses_alloc): Use const lvalue
+ 	allocator type in is_constructible checks.
+ 	* testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust dg-error.
+ 	* testsuite/20_util/scoped_allocator/dr2586.cc: New test.
+ 	* testsuite/20_util/tuple/cons/allocators.cc: Add test using
+ 	problematic type from LWG 2586 discussion.
+ 	* testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error.
+ 	* testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
+ 
+ 	Backport from mainline
+ 	2019-02-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/intro.xml: Document LWG 2537 status.
+ 	* include/bits/stl_queue.h
+ 	(priority_queue(const Compare&, const Container&, const Alloc&))
+ 	(priority_queue(const Compare&, Container&&, const Alloc&)): Call
+ 	make_heap.
+ 	* testsuite/23_containers/priority_queue/dr2537.cc: New test.
+ 
+ 2019-02-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/89446
+ 	* include/bits/char_traits.h (__constant_char_array): Check index is
+ 	in range before dereferencing.
+ 	* testsuite/21_strings/basic_string_view/operators/char/89446.cc:
+ 	New test.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/libstdc++-v3/Makefile.in gcc-8.4.0/libstdc++-v3/Makefile.in
*** gcc-8.3.0/libstdc++-v3/Makefile.in	Fri Nov 17 21:28:10 2017
--- gcc-8.4.0/libstdc++-v3/Makefile.in	Wed Mar  4 08:30:03 2020
*************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
*** 233,238 ****
--- 233,239 ----
  VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
  WARN_FLAGS = @WARN_FLAGS@
  WERROR = @WERROR@
+ XMLCATALOG = @XMLCATALOG@
  XMLLINT = @XMLLINT@
  XSLTPROC = @XSLTPROC@
  XSL_STYLE_DIR = @XSL_STYLE_DIR@
diff -Nrcpad gcc-8.3.0/libstdc++-v3/acinclude.m4 gcc-8.4.0/libstdc++-v3/acinclude.m4
*** gcc-8.3.0/libstdc++-v3/acinclude.m4	Tue Jul 31 09:38:28 2018
--- gcc-8.4.0/libstdc++-v3/acinclude.m4	Wed Mar  4 08:30:03 2020
*************** dnl  XSL_STYLE_DIR
*** 642,675 ****
  dnl
  AC_DEFUN([GLIBCXX_CONFIGURE_DOCBOOK], [
  
! AC_MSG_CHECKING([for docbook stylesheets for documentation creation])
! glibcxx_stylesheets=no
! if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then
!   glibcxx_stylesheets=yes
! fi
! AC_MSG_RESULT($glibcxx_stylesheets)
  
  AC_MSG_CHECKING([for local stylesheet directory])
  glibcxx_local_stylesheets=no
! if test x"$glibcxx_stylesheets" = x"yes"; then
!   if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then
!     glibcxx_local_stylesheets=yes
!     XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets
!   fi
!   if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; then
!     glibcxx_local_stylesheets=yes
!     XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns
!   fi
!   if test -d /usr/share/xml/docbook/stylesheet/nwalsh5/current; then
!     glibcxx_local_stylesheets=yes
!     XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/nwalsh5/current
!   fi
  fi
  AC_MSG_RESULT($glibcxx_local_stylesheets)
  
  if test x"$glibcxx_local_stylesheets" = x"yes"; then
    AC_SUBST(XSL_STYLE_DIR)
    AC_MSG_NOTICE($XSL_STYLE_DIR)
  else
    glibcxx_stylesheets=no
  fi
--- 642,684 ----
  dnl
  AC_DEFUN([GLIBCXX_CONFIGURE_DOCBOOK], [
  
! glibcxx_docbook_url=http://docbook.sourceforge.net/release/xsl-ns/current/
  
  AC_MSG_CHECKING([for local stylesheet directory])
  glibcxx_local_stylesheets=no
! if test x${XMLCATALOG} = xyes && xsl_style_dir=`xmlcatalog "" $glibcxx_docbook_url 2>/dev/null`
! then
!   XSL_STYLE_DIR=`echo $xsl_style_dir | sed -n 's;^file://;;p'`
!   glibcxx_local_stylesheets=yes
! else
!   for dir in \
!     /usr/share/sgml/docbook/xsl-ns-stylesheets \
!     /usr/share/xml/docbook/stylesheet/docbook-xsl-ns \
!     /usr/share/xml/docbook/stylesheet/nwalsh5/current \
!     /usr/share/xml/docbook/stylesheet/nwalsh/current
!   do
!     if test -d $dir; then
!       glibcxx_local_stylesheets=yes
!       XSL_STYLE_DIR=$dir
!       break
!     fi
!   done
  fi
  AC_MSG_RESULT($glibcxx_local_stylesheets)
  
  if test x"$glibcxx_local_stylesheets" = x"yes"; then
    AC_SUBST(XSL_STYLE_DIR)
    AC_MSG_NOTICE($XSL_STYLE_DIR)
+ 
+   AC_MSG_CHECKING([for docbook stylesheets for documentation creation])
+   glibcxx_stylesheets=no
+   if test x${XMLCATALOG} = xno || xmlcatalog "" $glibcxx_docbook_url/xhtml/docbook.xsl >/dev/null 2>&1; then
+     if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude $glibcxx_docbook_url/xhtml/docbook.xsl - 2>/dev/null; then
+       glibcxx_stylesheets=yes
+     fi
+   fi
+   AC_MSG_RESULT($glibcxx_stylesheets)
+ 
  else
    glibcxx_stylesheets=no
  fi
*************** AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME]
*** 1404,1423 ****
          ac_has_sched_yield=yes
          ;;
        gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
!         AC_MSG_CHECKING([for at least GNU libc 2.17])
!         AC_TRY_COMPILE(
!           [#include <features.h>],
!           [
!           #if ! __GLIBC_PREREQ(2, 17)
!           #error 
!           #endif
!           ],
!           [glibcxx_glibc217=yes], [glibcxx_glibc217=no])
!         AC_MSG_RESULT($glibcxx_glibc217)
! 
!         if test x"$glibcxx_glibc217" = x"yes"; then
!           ac_has_clock_monotonic=yes
!           ac_has_clock_realtime=yes
          fi
          ac_has_nanosleep=yes
          ac_has_sched_yield=yes
--- 1413,1426 ----
          ac_has_sched_yield=yes
          ;;
        gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
!         # Don't use link test for freestanding library, in case gcc_no_link=yes
!         if test x"$is_hosted" = xyes; then
!           # Versions of glibc before 2.17 needed -lrt for clock_gettime.
!           AC_SEARCH_LIBS(clock_gettime, [rt])
!           if test x"$ac_cv_search_clock_gettime" = x"none required"; then
!             ac_has_clock_monotonic=yes
!             ac_has_clock_realtime=yes
!           fi
          fi
          ac_has_nanosleep=yes
          ac_has_sched_yield=yes
diff -Nrcpad gcc-8.3.0/libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver gcc-8.4.0/libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver
*** gcc-8.3.0/libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver	Thu Nov 17 20:10:51 2005
--- gcc-8.4.0/libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver	Wed Mar  4 08:30:03 2020
***************
*** 1 ****
--- 1,22 ----
    __eprintf;
+ # 3.4
+   _ZNSt14numeric_limitsIgE*;
+   _ZNSirsERg;
+   _ZNSolsEg;
+   _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg;
+   _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg;
+   _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP*;
+   _ZStlsIg[cw]St11char_traitsI[cw]EERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E;
+   _ZStrsIg[cw]St11char_traitsI[cw]EERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E;
+ # 3.4.7
+   _ZNSi10_M_extractIgEERSiRT_;
+   _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_;
+   _ZNSo9_M_insertIgEERSoT_;
+   _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_;
+ # 3.4.10
+   _ZNKSt3tr14hashIgEclEg;
+   _ZNKSt4hashIgEclEg;
+ # ldbl 1.3
+   _ZT[IS]g;
+   _ZT[IS]Pg;
+   _ZT[IS]PKg;
diff -Nrcpad gcc-8.3.0/libstdc++-v3/config.h.in gcc-8.4.0/libstdc++-v3/config.h.in
*** gcc-8.3.0/libstdc++-v3/config.h.in	Tue Jul 31 09:38:28 2018
--- gcc-8.4.0/libstdc++-v3/config.h.in	Wed Mar  4 08:30:03 2020
***************
*** 761,766 ****
--- 761,769 ----
  /* Version number of package */
  #undef VERSION
  
+ /* Number of bits in a file offset, on hosts where this is settable. */
+ #undef _FILE_OFFSET_BITS
+ 
  /* Define if C99 functions in <complex.h> should be used in <complex> for
     C++11. Using compiler builtins for these functions requires corresponding
     C99 library functions to be present. */
***************
*** 989,994 ****
--- 992,1000 ----
  /* Define to 1 if mutex_timedlock is available. */
  #undef _GTHREAD_USE_MUTEX_TIMEDLOCK
  
+ /* Define for large files, on AIX-style hosts. */
+ #undef _LARGE_FILES
+ 
  /* Define if all C++11 floating point overloads are available in <math.h>.  */
  #if __cplusplus >= 201103L
  #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
diff -Nrcpad gcc-8.3.0/libstdc++-v3/configure gcc-8.4.0/libstdc++-v3/configure
*** gcc-8.3.0/libstdc++-v3/configure	Mon Aug 13 19:15:40 2018
--- gcc-8.4.0/libstdc++-v3/configure	Wed Mar  4 08:30:03 2020
*************** BUILD_EPUB_TRUE
*** 638,643 ****
--- 638,644 ----
  XSL_STYLE_DIR
  XMLLINT
  XSLTPROC
+ XMLCATALOG
  DOT
  DOXYGEN
  BUILD_INFO_FALSE
*************** ac_subst_files=''
*** 859,864 ****
--- 860,866 ----
  ac_user_opts='
  enable_option_checking
  enable_multilib
+ enable_largefile
  with_target_subdir
  with_cross_host
  with_newlib
*************** Optional Features:
*** 1541,1546 ****
--- 1543,1549 ----
    --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
    --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
    --enable-multilib       build many library versions (default)
+   --disable-largefile     omit support for large files
    --enable-maintainer-mode  enable make rules and dependencies not useful
  			  (and sometimes confusing) to the casual installer
    --enable-shared[=PKGS]  build shared libraries [default=yes]
*************** ac_compiler_gnu=$ac_cv_c_compiler_gnu
*** 4690,4698 ****
  
  CXXFLAGS="$save_CXXFLAGS"
  
  # Runs configure.host, and assorted other critical bits.  Sets
  # up critical shell variables.
- 
  ac_ext=c
  ac_cpp='$CPP $CPPFLAGS'
  ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
--- 4693,4900 ----
  
  CXXFLAGS="$save_CXXFLAGS"
  
+ 
+ # Check whether --enable-largefile was given.
+ if test "${enable_largefile+set}" = set; then :
+   enableval=$enable_largefile;
+ fi
+ 
+ if test "$enable_largefile" != no; then
+ 
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+ $as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+ if test "${ac_cv_sys_largefile_CC+set}" = set; then :
+   $as_echo_n "(cached) " >&6
+ else
+   ac_cv_sys_largefile_CC=no
+      if test "$GCC" != yes; then
+        ac_save_CC=$CC
+        while :; do
+ 	 # IRIX 6.2 and later do not support large files by default,
+ 	 # so use the C compiler's -n32 option if that helps.
+ 	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #include <sys/types.h>
+  /* Check that off_t can represent 2**63 - 1 correctly.
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ 		       && LARGE_OFF_T % 2147483647 == 1)
+ 		      ? 1 : -1];
+ int
+ main ()
+ {
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ 	 if ac_fn_c_try_compile "$LINENO"; then :
+   break
+ fi
+ rm -f core conftest.err conftest.$ac_objext
+ 	 CC="$CC -n32"
+ 	 if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_sys_largefile_CC=' -n32'; break
+ fi
+ rm -f core conftest.err conftest.$ac_objext
+ 	 break
+        done
+        CC=$ac_save_CC
+        rm -f conftest.$ac_ext
+     fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+ $as_echo "$ac_cv_sys_largefile_CC" >&6; }
+   if test "$ac_cv_sys_largefile_CC" != no; then
+     CC=$CC$ac_cv_sys_largefile_CC
+   fi
+ 
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+ $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+ if test "${ac_cv_sys_file_offset_bits+set}" = set; then :
+   $as_echo_n "(cached) " >&6
+ else
+   while :; do
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #include <sys/types.h>
+  /* Check that off_t can represent 2**63 - 1 correctly.
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ 		       && LARGE_OFF_T % 2147483647 == 1)
+ 		      ? 1 : -1];
+ int
+ main ()
+ {
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_sys_file_offset_bits=no; break
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #define _FILE_OFFSET_BITS 64
+ #include <sys/types.h>
+  /* Check that off_t can represent 2**63 - 1 correctly.
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ 		       && LARGE_OFF_T % 2147483647 == 1)
+ 		      ? 1 : -1];
+ int
+ main ()
+ {
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_sys_file_offset_bits=64; break
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cv_sys_file_offset_bits=unknown
+   break
+ done
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+ $as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+ case $ac_cv_sys_file_offset_bits in #(
+   no | unknown) ;;
+   *)
+ cat >>confdefs.h <<_ACEOF
+ #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+ _ACEOF
+ ;;
+ esac
+ rm -rf conftest*
+   if test $ac_cv_sys_file_offset_bits = unknown; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+ $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+ if test "${ac_cv_sys_large_files+set}" = set; then :
+   $as_echo_n "(cached) " >&6
+ else
+   while :; do
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #include <sys/types.h>
+  /* Check that off_t can represent 2**63 - 1 correctly.
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ 		       && LARGE_OFF_T % 2147483647 == 1)
+ 		      ? 1 : -1];
+ int
+ main ()
+ {
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_sys_large_files=no; break
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #define _LARGE_FILES 1
+ #include <sys/types.h>
+  /* Check that off_t can represent 2**63 - 1 correctly.
+     We can't simply define LARGE_OFF_T to be 9223372036854775807,
+     since some C++ compilers masquerading as C compilers
+     incorrectly reject 9223372036854775807.  */
+ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ 		       && LARGE_OFF_T % 2147483647 == 1)
+ 		      ? 1 : -1];
+ int
+ main ()
+ {
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+   ac_cv_sys_large_files=1; break
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cv_sys_large_files=unknown
+   break
+ done
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+ $as_echo "$ac_cv_sys_large_files" >&6; }
+ case $ac_cv_sys_large_files in #(
+   no | unknown) ;;
+   *)
+ cat >>confdefs.h <<_ACEOF
+ #define _LARGE_FILES $ac_cv_sys_large_files
+ _ACEOF
+ ;;
+ esac
+ rm -rf conftest*
+   fi
+ fi
+ 
+ 
  # Runs configure.host, and assorted other critical bits.  Sets
  # up critical shell variables.
  ac_ext=c
  ac_cpp='$CPP $CPPFLAGS'
  ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
*************** else
*** 11608,11614 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11611 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 11810,11816 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11813 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** else
*** 11714,11720 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11717 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 11916,11922 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11919 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** $as_echo "$glibcxx_cv_atomic_long_long"
*** 15400,15406 ****
    # Fake what AC_TRY_COMPILE does.
  
      cat > conftest.$ac_ext << EOF
! #line 15403 "configure"
  int main()
  {
    typedef bool atomic_type;
--- 15602,15608 ----
    # Fake what AC_TRY_COMPILE does.
  
      cat > conftest.$ac_ext << EOF
! #line 15605 "configure"
  int main()
  {
    typedef bool atomic_type;
*************** $as_echo "$glibcxx_cv_atomic_bool" >&6;
*** 15435,15441 ****
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15438 "configure"
  int main()
  {
    typedef short atomic_type;
--- 15637,15643 ----
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15640 "configure"
  int main()
  {
    typedef short atomic_type;
*************** $as_echo "$glibcxx_cv_atomic_short" >&6;
*** 15470,15476 ****
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15473 "configure"
  int main()
  {
    // NB: _Atomic_word not necessarily int.
--- 15672,15678 ----
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15675 "configure"
  int main()
  {
    // NB: _Atomic_word not necessarily int.
*************** $as_echo "$glibcxx_cv_atomic_int" >&6; }
*** 15506,15512 ****
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15509 "configure"
  int main()
  {
    typedef long long atomic_type;
--- 15708,15714 ----
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15711 "configure"
  int main()
  {
    typedef long long atomic_type;
*************** $as_echo "$as_me: WARNING: Performance o
*** 15587,15593 ****
    # unnecessary for this test.
  
      cat > conftest.$ac_ext << EOF
! #line 15590 "configure"
  int main()
  {
    _Decimal32 d1;
--- 15789,15795 ----
    # unnecessary for this test.
  
      cat > conftest.$ac_ext << EOF
! #line 15792 "configure"
  int main()
  {
    _Decimal32 d1;
*************** ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
*** 15629,15635 ****
    # unnecessary for this test.
  
      cat > conftest.$ac_ext << EOF
! #line 15632 "configure"
  template<typename T1, typename T2>
    struct same
    { typedef T2 type; };
--- 15831,15837 ----
    # unnecessary for this test.
  
      cat > conftest.$ac_ext << EOF
! #line 15834 "configure"
  template<typename T1, typename T2>
    struct same
    { typedef T2 type; };
*************** $as_echo "$enable_int128" >&6; }
*** 15663,15669 ****
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15666 "configure"
  template<typename T1, typename T2>
    struct same
    { typedef T2 type; };
--- 15865,15871 ----
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15868 "configure"
  template<typename T1, typename T2>
    struct same
    { typedef T2 type; };
*************** ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
*** 20536,20570 ****
          ac_has_sched_yield=yes
          ;;
        gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
!         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for at least GNU libc 2.17" >&5
! $as_echo_n "checking for at least GNU libc 2.17... " >&6; }
!         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  /* end confdefs.h.  */
! #include <features.h>
  int
  main ()
  {
! 
!           #if ! __GLIBC_PREREQ(2, 17)
!           #error
!           #endif
! 
    ;
    return 0;
  }
  _ACEOF
! if ac_fn_cxx_try_compile "$LINENO"; then :
!   glibcxx_glibc217=yes
  else
!   glibcxx_glibc217=no
  fi
! rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
!         { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_glibc217" >&5
! $as_echo "$glibcxx_glibc217" >&6; }
  
!         if test x"$glibcxx_glibc217" = x"yes"; then
!           ac_has_clock_monotonic=yes
!           ac_has_clock_realtime=yes
          fi
          ac_has_nanosleep=yes
          ac_has_sched_yield=yes
--- 20738,20809 ----
          ac_has_sched_yield=yes
          ;;
        gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
!         # Don't use link test for freestanding library, in case gcc_no_link=yes
!         if test x"$is_hosted" = xyes; then
!           # Versions of glibc before 2.17 needed -lrt for clock_gettime.
!           { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
! $as_echo_n "checking for library containing clock_gettime... " >&6; }
! if test "${ac_cv_search_clock_gettime+set}" = set; then :
!   $as_echo_n "(cached) " >&6
! else
!   ac_func_search_save_LIBS=$LIBS
! cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  /* end confdefs.h.  */
! 
! /* Override any GCC internal prototype to avoid an error.
!    Use char because int might match the return type of a GCC
!    builtin and then its argument prototype would still apply.  */
! #ifdef __cplusplus
! extern "C"
! #endif
! char clock_gettime ();
  int
  main ()
  {
! return clock_gettime ();
    ;
    return 0;
  }
  _ACEOF
! for ac_lib in '' rt; do
!   if test -z "$ac_lib"; then
!     ac_res="none required"
!   else
!     ac_res=-l$ac_lib
!     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
!   fi
!   if test x$gcc_no_link = xyes; then
!   as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
! fi
! if ac_fn_cxx_try_link "$LINENO"; then :
!   ac_cv_search_clock_gettime=$ac_res
! fi
! rm -f core conftest.err conftest.$ac_objext \
!     conftest$ac_exeext
!   if test "${ac_cv_search_clock_gettime+set}" = set; then :
!   break
! fi
! done
! if test "${ac_cv_search_clock_gettime+set}" = set; then :
! 
  else
!   ac_cv_search_clock_gettime=no
  fi
! rm conftest.$ac_ext
! LIBS=$ac_func_search_save_LIBS
! fi
! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
! $as_echo "$ac_cv_search_clock_gettime" >&6; }
! ac_res=$ac_cv_search_clock_gettime
! if test "$ac_res" != no; then :
!   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
  
! fi
! 
!           if test x"$ac_cv_search_clock_gettime" = x"none required"; then
!             ac_has_clock_monotonic=yes
!             ac_has_clock_realtime=yes
!           fi
          fi
          ac_has_nanosleep=yes
          ac_has_sched_yield=yes
*************** fi
*** 80857,80862 ****
--- 81096,81139 ----
  
  
  # Check for docbook
+ # Extract the first word of "xmlcatalog", so it can be a program name with args.
+ set dummy xmlcatalog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_prog_XMLCATALOG+set}" = set; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$XMLCATALOG"; then
+   ac_cv_prog_XMLCATALOG="$XMLCATALOG" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+     ac_cv_prog_XMLCATALOG="yes"
+     $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
+ 
+   test -z "$ac_cv_prog_XMLCATALOG" && ac_cv_prog_XMLCATALOG="no"
+ fi
+ fi
+ XMLCATALOG=$ac_cv_prog_XMLCATALOG
+ if test -n "$XMLCATALOG"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XMLCATALOG" >&5
+ $as_echo "$XMLCATALOG" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
  # Extract the first word of "xsltproc", so it can be a program name with args.
  set dummy xsltproc; ac_word=$2
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
*************** fi
*** 80935,80965 ****
  
  
  
! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for docbook stylesheets for documentation creation" >&5
! $as_echo_n "checking for docbook stylesheets for documentation creation... " >&6; }
! glibcxx_stylesheets=no
! if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then
!   glibcxx_stylesheets=yes
! fi
! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_stylesheets" >&5
! $as_echo "$glibcxx_stylesheets" >&6; }
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for local stylesheet directory" >&5
  $as_echo_n "checking for local stylesheet directory... " >&6; }
  glibcxx_local_stylesheets=no
! if test x"$glibcxx_stylesheets" = x"yes"; then
!   if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then
!     glibcxx_local_stylesheets=yes
!     XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets
!   fi
!   if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; then
!     glibcxx_local_stylesheets=yes
!     XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns
!   fi
!   if test -d /usr/share/xml/docbook/stylesheet/nwalsh5/current; then
!     glibcxx_local_stylesheets=yes
!     XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/nwalsh5/current
!   fi
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_local_stylesheets" >&5
  $as_echo "$glibcxx_local_stylesheets" >&6; }
--- 81212,81239 ----
  
  
  
! glibcxx_docbook_url=http://docbook.sourceforge.net/release/xsl-ns/current/
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for local stylesheet directory" >&5
  $as_echo_n "checking for local stylesheet directory... " >&6; }
  glibcxx_local_stylesheets=no
! if test x${XMLCATALOG} = xyes && xsl_style_dir=`xmlcatalog "" $glibcxx_docbook_url 2>/dev/null`
! then
!   XSL_STYLE_DIR=`echo $xsl_style_dir | sed -n 's;^file://;;p'`
!   glibcxx_local_stylesheets=yes
! else
!   for dir in \
!     /usr/share/sgml/docbook/xsl-ns-stylesheets \
!     /usr/share/xml/docbook/stylesheet/docbook-xsl-ns \
!     /usr/share/xml/docbook/stylesheet/nwalsh5/current \
!     /usr/share/xml/docbook/stylesheet/nwalsh/current
!   do
!     if test -d $dir; then
!       glibcxx_local_stylesheets=yes
!       XSL_STYLE_DIR=$dir
!       break
!     fi
!   done
  fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_local_stylesheets" >&5
  $as_echo "$glibcxx_local_stylesheets" >&6; }
*************** if test x"$glibcxx_local_stylesheets" =
*** 80968,80973 ****
--- 81242,81259 ----
  
    { $as_echo "$as_me:${as_lineno-$LINENO}: $XSL_STYLE_DIR" >&5
  $as_echo "$as_me: $XSL_STYLE_DIR" >&6;}
+ 
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for docbook stylesheets for documentation creation" >&5
+ $as_echo_n "checking for docbook stylesheets for documentation creation... " >&6; }
+   glibcxx_stylesheets=no
+   if test x${XMLCATALOG} = xno || xmlcatalog "" $glibcxx_docbook_url/xhtml/docbook.xsl >/dev/null 2>&1; then
+     if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude $glibcxx_docbook_url/xhtml/docbook.xsl - 2>/dev/null; then
+       glibcxx_stylesheets=yes
+     fi
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_stylesheets" >&5
+ $as_echo "$glibcxx_stylesheets" >&6; }
+ 
  else
    glibcxx_stylesheets=no
  fi
diff -Nrcpad gcc-8.3.0/libstdc++-v3/configure.ac gcc-8.4.0/libstdc++-v3/configure.ac
*** gcc-8.3.0/libstdc++-v3/configure.ac	Mon Aug 13 19:15:40 2018
--- gcc-8.4.0/libstdc++-v3/configure.ac	Wed Mar  4 08:30:03 2020
*************** AC_PROG_CC
*** 84,89 ****
--- 84,91 ----
  AC_PROG_CXX
  CXXFLAGS="$save_CXXFLAGS"
  
+ AC_SYS_LARGEFILE
+ 
  # Runs configure.host, and assorted other critical bits.  Sets
  # up critical shell variables.
  GLIBCXX_CONFIGURE
*************** AC_CHECK_PROG([DOXYGEN], doxygen, yes, n
*** 442,447 ****
--- 444,450 ----
  AC_CHECK_PROG([DOT], dot, yes, no)
  
  # Check for docbook
+ AC_CHECK_PROG([XMLCATALOG], xmlcatalog, yes, no)
  AC_CHECK_PROG([XSLTPROC], xsltproc, yes, no)
  AC_CHECK_PROG([XMLLINT], xmllint, yes, no)
  GLIBCXX_CONFIGURE_DOCBOOK
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/Makefile.am gcc-8.4.0/libstdc++-v3/doc/Makefile.am
*** gcc-8.3.0/libstdc++-v3/doc/Makefile.am	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/doc/Makefile.am	Wed Mar  4 08:30:03 2020
*************** ${docbook_outdir}/fo:
*** 477,483 ****
  
  ${docbook_outdir}/html:
  	mkdir -p ${docbook_outdir}/html
- 	mkdir -p ${docbook_outdir}/html/ext
  	mkdir -p ${docbook_outdir}/html/images
  	mkdir -p ${docbook_outdir}/html/manual
  
--- 477,482 ----
*************** stamp-html-docbook: $(xml_sources) ${doc
*** 546,551 ****
--- 545,556 ----
  
  doc-html-docbook: stamp-html-docbook-data
  
+ # Generate the HTML pages and copy them back to the source tree.
+ doc-html-docbook-regenerate: doc-html-docbook
+ 	$(INSTALL_DATA) ${docbook_outdir}/html/*.html ${top_srcdir}/doc/html
+ 	$(INSTALL_DATA) ${docbook_outdir}/html/images/* ${top_srcdir}/doc/html/images
+ 	$(INSTALL_DATA) ${docbook_outdir}/html/manual/*.html ${top_srcdir}/doc/html/manual
+ 
  # HTML, all one page
  # NB: Have to generate customization XSL for UTF-8 output.
  manual_html = ${docbook_outdir}/html/libstdc++-manual-single.html
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/Makefile.in gcc-8.4.0/libstdc++-v3/doc/Makefile.in
*** gcc-8.3.0/libstdc++-v3/doc/Makefile.in	Fri Nov 17 21:28:10 2017
--- gcc-8.4.0/libstdc++-v3/doc/Makefile.in	Wed Mar  4 08:30:03 2020
*************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
*** 205,210 ****
--- 205,211 ----
  VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
  WARN_FLAGS = @WARN_FLAGS@
  WERROR = @WERROR@
+ XMLCATALOG = @XMLCATALOG@
  
  # Validate existing XML structure.
  XMLLINT = xmllint
*************** ${docbook_outdir}/fo:
*** 926,932 ****
  
  ${docbook_outdir}/html:
  	mkdir -p ${docbook_outdir}/html
- 	mkdir -p ${docbook_outdir}/html/ext
  	mkdir -p ${docbook_outdir}/html/images
  	mkdir -p ${docbook_outdir}/html/manual
  
--- 927,932 ----
*************** stamp-html-docbook: $(xml_sources) ${doc
*** 978,983 ****
--- 978,989 ----
  	$(STAMP) stamp-html-docbook
  
  doc-html-docbook: stamp-html-docbook-data
+ 
+ # Generate the HTML pages and copy them back to the source tree.
+ doc-html-docbook-regenerate: doc-html-docbook
+ 	$(INSTALL_DATA) ${docbook_outdir}/html/*.html ${top_srcdir}/doc/html
+ 	$(INSTALL_DATA) ${docbook_outdir}/html/images/* ${top_srcdir}/doc/html/images
+ 	$(INSTALL_DATA) ${docbook_outdir}/html/manual/*.html ${top_srcdir}/doc/html/manual
  stamp-html-single-docbook: $(xml_sources) ${docbook_outdir}/html
  	@echo "Generating html single file..."
  	$(XSLTPROC) $(XSLT_PARAM) $(XSLT_FLAGS) -o ${manual_html} \
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/html/faq.html gcc-8.4.0/libstdc++-v3/doc/html/faq.html
*** gcc-8.3.0/libstdc++-v3/doc/html/faq.html	Thu May 10 19:18:18 2018
--- gcc-8.4.0/libstdc++-v3/doc/html/faq.html	Wed Mar  4 08:30:03 2020
***************
*** 70,76 ****
        Program crashes when using library code in a
        dynamically-loaded library
      </a></dt><dt>6.7. <a href="faq.html#faq.memory_leaks">
!       “Memory leaks” in containers
      </a></dt><dt>6.8. <a href="faq.html#faq.list_size_on">
        list::size() is O(n)!
      </a></dt><dt>6.9. <a href="faq.html#faq.easy_to_fix">
--- 70,76 ----
        Program crashes when using library code in a
        dynamically-loaded library
      </a></dt><dt>6.7. <a href="faq.html#faq.memory_leaks">
!       “Memory leaks” in libstdc++
      </a></dt><dt>6.8. <a href="faq.html#faq.list_size_on">
        list::size() is O(n)!
      </a></dt><dt>6.9. <a href="faq.html#faq.easy_to_fix">
***************
*** 113,121 ****
       clauses 20 through 33 and annex D (prior to the 2017 standard
       the library clauses started with 17).  For those who want to see
       exactly how far the project has come, or just want the latest
!      bleeding-edge code, the up-to-date source is available over
!      anonymous SVN, and can be browsed over the
!      <a class="link" href="https://gcc.gnu.org/svn.html" target="_top">web</a>.
      </p><p>
      N.B. The library is called libstdc++ <span class="emphasis"><em>not</em></span> stdlibc++.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.why"></a><a id="q-why"></a><p><strong>1.2.</strong></p></td><td align="left" valign="top"><p>
--- 113,120 ----
       clauses 20 through 33 and annex D (prior to the 2017 standard
       the library clauses started with 17).  For those who want to see
       exactly how far the project has come, or just want the latest
!      bleeding-edge code, the up-to-date source can be cloned via
!      <a class="link" href="https://gcc.gnu.org/git.html" target="_top">Git</a>.
      </p><p>
      N.B. The library is called libstdc++ <span class="emphasis"><em>not</em></span> stdlibc++.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.why"></a><a id="q-why"></a><p><strong>1.2.</strong></p></td><td align="left" valign="top"><p>
***************
*** 260,283 ****
      mirrors. A full <a class="link" href="https://gcc.gnu.org/mirrors.html" target="_top">list of
      download sites</a> is provided on the main GCC site.
      </p><p>
!     Current libstdc++ sources can always be checked out of the main
!     GCC source repository using the appropriate version control
!     tool. At this time, that tool
!     is <span class="application">Subversion</span>.
!     </p><p>
!     <span class="application">Subversion</span>, or <acronym class="acronym">SVN</acronym>, is
!     one of several revision control packages.  It was selected for GNU
!     projects because it's free (speech), free (beer), and very high
!     quality.  The <a class="link" href="http://subversion.tigris.org" target="_top"> Subversion
!     home page</a> has a better description.
!     </p><p>
!     The <span class="quote">“<span class="quote">anonymous client checkout</span>”</span> feature of SVN is
!     similar to anonymous FTP in that it allows anyone to retrieve
!     the latest libstdc++ sources.
!     </p><p>
!     For more information
!     see <a class="link" href="https://gcc.gnu.org/svn.html" target="_top"><acronym class="acronym">SVN</acronym>
!     details</a>.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.how_to_test"></a><a id="q-how_to_test"></a><p><strong>3.3.</strong></p></td><td align="left" valign="top"><p>How do I know if it works?
      </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how_to_test"></a></td><td align="left" valign="top"><p>
      Libstdc++ comes with its own validation testsuite, which includes
--- 259,269 ----
      mirrors. A full <a class="link" href="https://gcc.gnu.org/mirrors.html" target="_top">list of
      download sites</a> is provided on the main GCC site.
      </p><p>
!     Current libstdc++ sources can always be found in the main GCC source
!     repository, available using the appropriate version control tool.
!     At this time, that tool is <span class="application">Git</span>.
!     For more details see the documentation on
!     <a class="link" href="https://gcc.gnu.org/git.html" target="_top">using the Git repository</a>.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.how_to_test"></a><a id="q-how_to_test"></a><p><strong>3.3.</strong></p></td><td align="left" valign="top"><p>How do I know if it works?
      </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how_to_test"></a></td><td align="left" valign="top"><p>
      Libstdc++ comes with its own validation testsuite, which includes
***************
*** 593,599 ****
        Program crashes when using library code in a
        dynamically-loaded library
      </a></dt><dt>6.7. <a href="faq.html#faq.memory_leaks">
!       “Memory leaks” in containers
      </a></dt><dt>6.8. <a href="faq.html#faq.list_size_on">
        list::size() is O(n)!
      </a></dt><dt>6.9. <a href="faq.html#faq.easy_to_fix">
--- 579,585 ----
        Program crashes when using library code in a
        dynamically-loaded library
      </a></dt><dt>6.7. <a href="faq.html#faq.memory_leaks">
!       “Memory leaks” in libstdc++
      </a></dt><dt>6.8. <a href="faq.html#faq.list_size_on">
        list::size() is O(n)!
      </a></dt><dt>6.9. <a href="faq.html#faq.easy_to_fix">
***************
*** 708,722 ****
      Link the executable:<br />
      <span class="command"><strong>g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl</strong></span><br />
      </p></div></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.memory_leaks"></a><a id="q-memory_leaks"></a><p><strong>6.7.</strong></p></td><td align="left" valign="top"><p>
!       <span class="quote">“<span class="quote">Memory leaks</span>”</span> in containers
!     </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-memory_leaks"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
!     A few people have reported that the standard containers appear
      to leak memory when tested with memory checkers such as
      <a class="link" href="http://valgrind.org/" target="_top"><span class="command"><strong>valgrind</strong></span></a>.
      Under some (non-default) configurations the library's allocators keep
      free memory in a
!     pool for later reuse, rather than returning it to the OS.  Although
!     this memory is always reachable by the library and is never
      lost, memory debugging tools can report it as a leak.  If you
      want to test the library for memory leaks please read
      <a class="link" href="manual/debug.html#debug.memory" title="Memory Leak Hunting">Tips for memory leak hunting</a>
--- 694,720 ----
      Link the executable:<br />
      <span class="command"><strong>g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl</strong></span><br />
      </p></div></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.memory_leaks"></a><a id="q-memory_leaks"></a><p><strong>6.7.</strong></p></td><td align="left" valign="top"><p>
!       <span class="quote">“<span class="quote">Memory leaks</span>”</span> in libstdc++
!     </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-memory_leaks"></a></td><td align="left" valign="top"><p>
!     Since GCC 5.1.0, libstdc++ automatically allocates a pool
!     of a few dozen kilobytes on startup. This pool is used to ensure it's
!     possible to throw exceptions (such as <code class="classname">bad_alloc</code>)
!     even when <code class="code">malloc</code> is unable to allocate any more memory.
!     With some versions of <a class="link" href="http://valgrind.org/" target="_top"><span class="command"><strong>valgrind</strong></span></a>
!     this pool will be shown as "still reachable" when the process exits, e.g.
!     <code class="code">still reachable: 72,704 bytes in 1 blocks</code>.
!     This memory is not a leak, because it's still in use by libstdc++,
!     and the memory will be returned to the OS when the process exits.
!     Later versions of <span class="command"><strong>valgrind</strong></span> know how to free this
!     pool as the process exits, and so won't show any "still reachable" memory.
!     </p><p>
!     In the past, a few people reported that the standard containers appear
      to leak memory when tested with memory checkers such as
      <a class="link" href="http://valgrind.org/" target="_top"><span class="command"><strong>valgrind</strong></span></a>.
      Under some (non-default) configurations the library's allocators keep
      free memory in a
!     pool for later reuse, rather than deallocating it with <code class="code">delete</code>
!     Although this memory is always reachable by the library and is never
      lost, memory debugging tools can report it as a leak.  If you
      want to test the library for memory leaks please read
      <a class="link" href="manual/debug.html#debug.memory" title="Memory Leak Hunting">Tips for memory leak hunting</a>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/html/index.html gcc-8.4.0/libstdc++-v3/doc/html/index.html
*** gcc-8.3.0/libstdc++-v3/doc/html/index.html	Wed Apr 11 00:21:35 2018
--- gcc-8.4.0/libstdc++-v3/doc/html/index.html	Wed Mar  4 08:30:03 2020
***************
*** 23,29 ****
      </p></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="book"><a href="manual/index.html">The GNU C++ Library Manual</a></span></dt><dd><dl><dt><span class="part"><a href="manual/intro.html">I. 
    Introduction
    
! </a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/status.html">1. Status</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="manual/status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.2014">C++ 2014</a></span></dt><dt><span class="section"><a href="manual/status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="manual/status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="manual/license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="manual/license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="manual/bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="manual/bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="manual/bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="manual/setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/configure.html">Configure</a></span></dt><dt><span class="section"><a href="manual/make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="manual/using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="manual/using_dual_abi.html">Dual ABI</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_dual_abi.html#manual.intro.using.abi.trouble">Troubleshooting</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.experimental">Experimental Library Extensions</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="manual/debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/std_contents.html">II. 
      Standard Contents
    </a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/support.html">4. 
    Support
--- 23,29 ----
      </p></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="book"><a href="manual/index.html">The GNU C++ Library Manual</a></span></dt><dd><dl><dt><span class="part"><a href="manual/intro.html">I. 
    Introduction
    
! </a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/status.html">1. Status</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="manual/status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.2014">C++ 2014</a></span></dt><dt><span class="section"><a href="manual/status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="manual/status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="manual/license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="manual/license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="manual/bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="manual/bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="manual/bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="manual/setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/configure.html">Configure</a></span></dt><dt><span class="section"><a href="manual/make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="manual/using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="manual/using_dual_abi.html">Dual ABI</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_dual_abi.html#manual.intro.using.abi.trouble">Troubleshooting</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.experimental">Experimental Library Extensions</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="manual/debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dd><dl><dt><span class="section"><a href="manual/debug.html#debug.memory.mtalloc">Non-memory leaks in Pool and MT allocators</a></span></dt></dl></dd><dt><span class="section"><a href="manual/debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/std_contents.html">II. 
      Standard Contents
    </a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/support.html">4. 
    Support
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/html/manual/api.html gcc-8.4.0/libstdc++-v3/doc/html/manual/api.html
*** gcc-8.3.0/libstdc++-v3/doc/html/manual/api.html	Wed Apr 11 00:21:35 2018
--- gcc-8.4.0/libstdc++-v3/doc/html/manual/api.html	Wed Mar  4 08:30:03 2020
*************** Removal of <code class="filename">ext/tr
*** 28,38 ****
  </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_320"></a><code class="constant">3.2</code></h3></div></div></div><p>
    </p><p>Symbol versioning introduced for shared library.</p><p>Removal of include <code class="filename">backward/strstream.h</code>.</p><p>Allocator changes. Change <code class="code">__malloc_alloc</code> to <code class="code">malloc_allocator</code> and <code class="code">__new_alloc</code> to <code class="code">new_allocator</code>. </p><p> For GCC releases from 2.95 through the 3.1 series, defining
     <code class="literal">__USE_MALLOC</code> on the gcc command line would change the
!    default allocation strategy to instead use <code class="code"> malloc</code> and
!    <code class="function">free</code>. For the 3.2 and 3.3 release series the same
     functionality was spelled <code class="literal">_GLIBCXX_FORCE_NEW</code>. From
!    GCC 3.4 onwards the functionality is enabled by setting
!    <code class="literal">GLIBCXX_FORCE_NEW</code> in the environment, see
     <a class="link" href="mt_allocator.html" title="Chapter 20. The mt_allocator">the mt allocator chapter</a>
     for details.
     </p><p>Error handling in iostreams cleaned up, made consistent. </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_330"></a><code class="constant">3.3</code></h3></div></div></div><p>
--- 28,39 ----
  </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_320"></a><code class="constant">3.2</code></h3></div></div></div><p>
    </p><p>Symbol versioning introduced for shared library.</p><p>Removal of include <code class="filename">backward/strstream.h</code>.</p><p>Allocator changes. Change <code class="code">__malloc_alloc</code> to <code class="code">malloc_allocator</code> and <code class="code">__new_alloc</code> to <code class="code">new_allocator</code>. </p><p> For GCC releases from 2.95 through the 3.1 series, defining
     <code class="literal">__USE_MALLOC</code> on the gcc command line would change the
!    default allocation strategy to instead use <code class="code">malloc</code> and
!    <code class="code">free</code>. For the 3.2 and 3.3 release series the same
     functionality was spelled <code class="literal">_GLIBCXX_FORCE_NEW</code>. From
!    GCC 3.4 onwards the default allocator uses <code class="code">new</code> anyway,
!    but for the optional pooling allocators the functionality is enabled by
!    setting <code class="literal">GLIBCXX_FORCE_NEW</code> in the environment, see
     <a class="link" href="mt_allocator.html" title="Chapter 20. The mt_allocator">the mt allocator chapter</a>
     for details.
     </p><p>Error handling in iostreams cleaned up, made consistent. </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_330"></a><code class="constant">3.3</code></h3></div></div></div><p>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/html/manual/appendix_contributing.html gcc-8.4.0/libstdc++-v3/doc/html/manual/appendix_contributing.html
*** gcc-8.3.0/libstdc++-v3/doc/html/manual/appendix_contributing.html	Wed Oct 25 14:06:12 2017
--- gcc-8.4.0/libstdc++-v3/doc/html/manual/appendix_contributing.html	Wed Mar  4 08:30:03 2020
***************
*** 90,103 ****
  	  easily and simply show the existing error or test new
  	  functionality.
  	</p></li><li class="listitem"><p>
! 	  The patch itself. If you are accessing the SVN
! 	  repository use <span class="command"><strong>svn update; svn diff NEW</strong></span>;
! 	  else, use <span class="command"><strong>diff -cp OLD NEW</strong></span> ... If your
  	  version of diff does not support these options, then get the
! 	  latest version of GNU
! 	  diff. The <a class="link" href="http://gcc.gnu.org/wiki/SvnTricks" target="_top">SVN
! 	  Tricks</a> wiki page has information on customising the
! 	  output of <code class="code">svn diff</code>.
  	</p></li><li class="listitem"><p>
  	  When you have all these pieces, bundle them up in a
  	  mail message and send it to libstdc++@gcc.gnu.org. All
--- 90,101 ----
  	  easily and simply show the existing error or test new
  	  functionality.
  	</p></li><li class="listitem"><p>
! 	  The patch itself. If you are using the Git repository use
! 	  <span class="command"><strong>git diff</strong></span> or <span class="command"><strong>git format-patch</strong></span>
! 	  to produce a patch;
! 	  otherwise, use <span class="command"><strong>diff -cp OLD NEW</strong></span>. If your
  	  version of diff does not support these options, then get the
! 	  latest version of GNU diff.
  	</p></li><li class="listitem"><p>
  	  When you have all these pieces, bundle them up in a
  	  mail message and send it to libstdc++@gcc.gnu.org. All
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/html/manual/bugs.html gcc-8.4.0/libstdc++-v3/doc/html/manual/bugs.html
*** gcc-8.3.0/libstdc++-v3/doc/html/manual/bugs.html	Fri Feb  8 23:16:19 2019
--- gcc-8.4.0/libstdc++-v3/doc/html/manual/bugs.html	Wed Mar  4 08:30:03 2020
***************
*** 492,501 ****
--- 492,511 ----
         </em></span>
      </span></dt><dd><p>Avoid using <code class="code">dynamic_cast</code> when it would be
      ill-formed.
+     </p></dd><dt><a id="manual.bugs.dr2537"></a><span class="term"><a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2537" target="_top">2537</a>:
+        <span class="emphasis"><em>Constructors for <code class="code">priority_queue</code> taking allocators
+ 	 should call <code class="code">make_heap</code>
+        </em></span>
+     </span></dt><dd><p>Call <code class="code">make_heap</code>.
      </p></dd><dt><a id="manual.bugs.dr2583"></a><span class="term"><a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2583" target="_top">2583</a>:
         <span class="emphasis"><em>There is no way to supply an allocator for <code class="code">basic_string(str, pos)</code>
         </em></span>
      </span></dt><dd><p>Add new constructor
+     </p></dd><dt><a id="manual.bugs.dr2586"></a><span class="term"><a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2586" target="_top">2586</a>:
+        <span class="emphasis"><em>Wrong value category used in <code class="code">scoped_allocator_adaptor::construct()</code>
+        </em></span>
+     </span></dt><dd><p>Change internal helper for uses-allocator construction
+       to always check using const lvalue allocators.
      </p></dd><dt><a id="manual.bugs.dr2684"></a><span class="term"><a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2684" target="_top">2684</a>:
         <span class="emphasis"><em><code class="code">priority_queue</code> lacking comparator typedef
         </em></span>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/html/manual/debug.html gcc-8.4.0/libstdc++-v3/doc/html/manual/debug.html
*** gcc-8.3.0/libstdc++-v3/doc/html/manual/debug.html	Wed Oct 25 14:06:12 2017
--- gcc-8.4.0/libstdc++-v3/doc/html/manual/debug.html	Wed Mar  4 08:30:03 2020
***************
*** 53,92 ****
    This quick and dirty approach is often sufficient for quick
    debugging tasks, when you cannot or don't want to recompile your
    application to use the <a class="link" href="debug_mode.html" title="Chapter 17. Debug Mode">debug mode</a>.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="debug.memory"></a>Memory Leak Hunting</h3></div></div></div><p>
!   There are various third party memory tracing and debug utilities
    that can be used to provide detailed memory allocation information
    about C++ code. An exhaustive list of tools is not going to be
    attempted, but includes <code class="code">mtrace</code>, <code class="code">valgrind</code>,
!   <code class="code">mudflap</code>, and the non-free commercial product
!   <code class="code">purify</code>. In addition, <code class="code">libcwd</code> has a
!   replacement for the global new and delete operators that can track
!   memory allocation and deallocation and provide useful memory
!   statistics.
! </p><p>
!   Regardless of the memory debugging tool being used, there is one
!   thing of great importance to keep in mind when debugging C++ code
!   that uses <code class="code">new</code> and <code class="code">delete</code>: there are
!   different kinds of allocation schemes that can be used by <code class="code">
!   std::allocator</code>. For implementation details, see the <a class="link" href="mt_allocator.html" title="Chapter 20. The mt_allocator">mt allocator</a> documentation and
!   look specifically for <code class="code">GLIBCXX_FORCE_NEW</code>.
! </p><p>
!   In a nutshell, the optional <code class="classname">mt_allocator</code>
!   is a high-performance pool allocator, and can
!   give the mistaken impression that in a suspect executable, memory is
!   being leaked, when in reality the memory "leak" is a pool being used
!   by the library's allocator and is reclaimed after program
!   termination.
  </p><p>
    For valgrind, there are some specific items to keep in mind. First
    of all, use a version of valgrind that will work with current GNU
    C++ tools: the first that can do this is valgrind 1.0.4, but later
!   versions should work at least as well. Second of all, use a
!   completely unoptimized build to avoid confusing valgrind. Third, use
!   GLIBCXX_FORCE_NEW to keep extraneous pool allocation noise from
!   cluttering debug information.
  </p><p>
!   Fourth, it may be necessary to force deallocation in other libraries
!   as well, namely the "C" library. On linux, this can be accomplished
    with the appropriate use of the <code class="code">__cxa_atexit</code> or
    <code class="code">atexit</code> functions.
  </p><pre class="programlisting">
--- 53,80 ----
    This quick and dirty approach is often sufficient for quick
    debugging tasks, when you cannot or don't want to recompile your
    application to use the <a class="link" href="debug_mode.html" title="Chapter 17. Debug Mode">debug mode</a>.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="debug.memory"></a>Memory Leak Hunting</h3></div></div></div><p>
!   On many targets GCC supports AddressSanitizer, a fast memory error detector,
!   which is enabled by the <code class="option">-fsanitize=address</code> option.
! </p><p>
!   There are also various third party memory tracing and debug utilities
    that can be used to provide detailed memory allocation information
    about C++ code. An exhaustive list of tools is not going to be
    attempted, but includes <code class="code">mtrace</code>, <code class="code">valgrind</code>,
!   <code class="code">mudflap</code> (no longer supported since GCC 4.9.0), ElectricFence,
!   and the non-free commercial product <code class="code">purify</code>.
!   In addition, <code class="code">libcwd</code>, jemalloc and TCMalloc have replacements
!   for the global <code class="code">new</code> and <code class="code">delete</code> operators
!   that can track memory allocation and deallocation and provide useful
!   memory statistics.
  </p><p>
    For valgrind, there are some specific items to keep in mind. First
    of all, use a version of valgrind that will work with current GNU
    C++ tools: the first that can do this is valgrind 1.0.4, but later
!   versions should work better. Second, using an unoptimized build
!   might avoid confusing valgrind.
  </p><p>
!   Third, it may be necessary to force deallocation in other libraries
!   as well, namely the "C" library. On GNU/Linux, this can be accomplished
    with the appropriate use of the <code class="code">__cxa_atexit</code> or
    <code class="code">atexit</code> functions.
  </p><pre class="programlisting">
***************
*** 121,127 ****
    up the runtime environment, library, and test file, might be:
  </p><pre class="programlisting">
     valgrind -v --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes a.out
! </pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="debug.races"></a>Data Race Hunting</h3></div></div></div><p>
    All synchronization primitives used in the library internals need to be
    understood by race detectors so that they do not produce false reports.
  </p><p>
--- 109,137 ----
    up the runtime environment, library, and test file, might be:
  </p><pre class="programlisting">
     valgrind -v --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes a.out
! </pre><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="debug.memory.mtalloc"></a>Non-memory leaks in Pool and MT allocators</h4></div></div></div><p>
!   There are different kinds of allocation schemes that can be used by
!   <code class="code">std::allocator</code>. Prior to GCC 3.4.0 the default was to use
!   a pooling allocator, <code class="classname">pool_allocator</code>,
!   which is still available as the optional
!   <code class="classname">__pool_alloc</code> extension.
!   Another optional extension, <code class="classname">__mt_alloc</code>,
!   is a high-performance pool allocator.
! </p><p>
!   In a suspect executable these pooling allocators can give
!   the mistaken impression that memory is being leaked,
!   when in reality the memory "leak" is a pool being used
!   by the library's allocator and is reclaimed after program
!   termination.
! </p><p>
!   If you're using memory debugging tools on a program that uses
!   one of these pooling allocators, you can set the environment variable
!   <code class="literal">GLIBCXX_FORCE_NEW</code> to keep extraneous pool allocation
!   noise from cluttering debug information.
!   For more details, see the
!   <a class="link" href="mt_allocator.html" title="Chapter 20. The mt_allocator">mt allocator</a>
!   documentation and look specifically for <code class="code">GLIBCXX_FORCE_NEW</code>.
! </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="debug.races"></a>Data Race Hunting</h3></div></div></div><p>
    All synchronization primitives used in the library internals need to be
    understood by race detectors so that they do not produce false reports.
  </p><p>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/html/manual/documentation_hacking.html gcc-8.4.0/libstdc++-v3/doc/html/manual/documentation_hacking.html
*** gcc-8.3.0/libstdc++-v3/doc/html/manual/documentation_hacking.html	Wed Apr 11 00:21:35 2018
--- gcc-8.4.0/libstdc++-v3/doc/html/manual/documentation_hacking.html	Wed Mar  4 08:30:03 2020
***************
*** 381,391 ****
        </p><p>
        </p><pre class="screen"><strong class="userinput"><code>make doc-xml-single-docbook</code></strong></pre><p>
        </p><p>
! 	Generated files are output into separate sub directores of
  	<code class="filename">doc/docbook/</code> in the
  	build directory, based on the output format. For instance, the
  	HTML docs will be in <code class="filename">doc/docbook/html</code>.
        </p><p>
  	If the Docbook stylesheets are installed in a custom location,
  	one can use the variable <code class="literal">XSL_STYLE_DIR</code> to
  	override the Makefile defaults. For example:
--- 381,396 ----
        </p><p>
        </p><pre class="screen"><strong class="userinput"><code>make doc-xml-single-docbook</code></strong></pre><p>
        </p><p>
! 	Generated files are output into separate sub-directores of
  	<code class="filename">doc/docbook/</code> in the
  	build directory, based on the output format. For instance, the
  	HTML docs will be in <code class="filename">doc/docbook/html</code>.
        </p><p>
+ 	The </p><pre class="screen">doc-html-docbook-regenerate</pre><p> target will generate
+ 	the HTML files and copy them back to the libstdc++ source tree.
+ 	This can be used to update the HTML files that are checked in to
+ 	version control.
+       </p><p>
  	If the Docbook stylesheets are installed in a custom location,
  	one can use the variable <code class="literal">XSL_STYLE_DIR</code> to
  	override the Makefile defaults. For example:
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/html/manual/index.html gcc-8.4.0/libstdc++-v3/doc/html/manual/index.html
*** gcc-8.3.0/libstdc++-v3/doc/html/manual/index.html	Wed Aug  8 15:33:25 2018
--- gcc-8.4.0/libstdc++-v3/doc/html/manual/index.html	Wed Mar  4 08:30:03 2020
***************
*** 1,10 ****
  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library Manual</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="../index.html" title="The GNU C++ Library" /><link rel="prev" href="../index.html" title="The GNU C++ Library" /><link rel="next" href="intro.html" title="Part I.  Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library Manual</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="../index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a id="manual"></a>The GNU C++ Library Manual</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname"></span> <span class="surname"></span></h3></div><div class="author"><h3 class="author"><span class="firstname">Paolo</span> <span class="surname">Carlini</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Phil</span> <span class="surname">Edwards</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Doug</span> <span class="surname">Gregor</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Dhruv</span> <span class="surname">Matani</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jason</span> <span class="surname">Merrill</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Mark</span> <span class="surname">Mitchell</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Nathan</span> <span class="surname">Myers</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Felix</span> <span class="surname">Natter</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Stefan</span> <span class="surname">Olsson</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Silvius</span> <span class="surname">Rus</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Ami</span> <span class="surname">Tavory</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jonathan</span> <span class="surname">Wakely</span></h3></div></div></div><div><p class="copyright">Copyright © 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 
        <a class="link" href="https://www.fsf.org" target="_top">FSF</a>
      </p></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="part"><a href="intro.html">I. 
    Introduction
    
! </a></span></dt><dd><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><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><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.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></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_dual_abi.html">Dual ABI</a></span></dt><dd><dl><dt><span class="section"><a href="using_dual_abi.html#manual.intro.using.abi.trouble">Troubleshooting</a></span></dt></dl></dd><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.experimental">Experimental Library Extensions</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="std_contents.html">II. 
      Standard Contents
    </a></span></dt><dd><dl><dt><span class="chapter"><a href="support.html">4. 
    Support
--- 1,10 ----
  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library Manual</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="../index.html" title="The GNU C++ Library" /><link rel="prev" href="../index.html" title="The GNU C++ Library" /><link rel="next" href="intro.html" title="Part I.  Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library Manual</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="../index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a id="manual"></a>The GNU C++ Library Manual</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname"></span> <span class="surname"></span></h3></div><div class="author"><h3 class="author"><span class="firstname">Paolo</span> <span class="surname">Carlini</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Phil</span> <span class="surname">Edwards</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Doug</span> <span class="surname">Gregor</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Dhruv</span> <span class="surname">Matani</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jason</span> <span class="surname">Merrill</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Mark</span> <span class="surname">Mitchell</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Nathan</span> <span class="surname">Myers</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Felix</span> <span class="surname">Natter</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Stefan</span> <span class="surname">Olsson</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Silvius</span> <span class="surname">Rus</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Ami</span> <span class="surname">Tavory</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jonathan</span> <span class="surname">Wakely</span></h3></div></div></div><div><p class="copyright">Copyright © 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 
        <a class="link" href="https://www.fsf.org" target="_top">FSF</a>
      </p></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="part"><a href="intro.html">I. 
    Introduction
    
! </a></span></dt><dd><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><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><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.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></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_dual_abi.html">Dual ABI</a></span></dt><dd><dl><dt><span class="section"><a href="using_dual_abi.html#manual.intro.using.abi.trouble">Troubleshooting</a></span></dt></dl></dd><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.experimental">Experimental Library Extensions</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.memory.mtalloc">Non-memory leaks in Pool and MT allocators</a></span></dt></dl></dd><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="std_contents.html">II. 
      Standard Contents
    </a></span></dt><dd><dl><dt><span class="chapter"><a href="support.html">4. 
    Support
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/html/manual/intro.html gcc-8.4.0/libstdc++-v3/doc/html/manual/intro.html
*** gcc-8.3.0/libstdc++-v3/doc/html/manual/intro.html	Wed Oct 25 14:06:12 2017
--- gcc-8.4.0/libstdc++-v3/doc/html/manual/intro.html	Wed Mar  4 08:30:03 2020
***************
*** 5,8 ****
  </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td width="20%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr></table><hr /></div><div class="part"><div class="titlepage"><div><div><h1 class="title"><a id="manual.intro"></a>Part I. 
    Introduction
    <a id="id-1.3.3.1.1.1" class="indexterm"></a>
! </h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><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><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.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></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_dual_abi.html">Dual ABI</a></span></dt><dd><dl><dt><span class="section"><a href="using_dual_abi.html#manual.intro.using.abi.trouble">Troubleshooting</a></span></dt></dl></dd><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.experimental">Experimental Library Extensions</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library Manual </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. Status</td></tr></table></div></body></html>
\ No newline at end of file
--- 5,8 ----
  </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td width="20%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr></table><hr /></div><div class="part"><div class="titlepage"><div><div><h1 class="title"><a id="manual.intro"></a>Part I. 
    Introduction
    <a id="id-1.3.3.1.1.1" class="indexterm"></a>
! </h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><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><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.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></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_dual_abi.html">Dual ABI</a></span></dt><dd><dl><dt><span class="section"><a href="using_dual_abi.html#manual.intro.using.abi.trouble">Troubleshooting</a></span></dt></dl></dd><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.experimental">Experimental Library Extensions</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.memory.mtalloc">Non-memory leaks in Pool and MT allocators</a></span></dt></dl></dd><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library Manual </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. Status</td></tr></table></div></body></html>
\ No newline at end of file
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/html/manual/memory.html gcc-8.4.0/libstdc++-v3/doc/html/manual/memory.html
*** gcc-8.3.0/libstdc++-v3/doc/html/manual/memory.html	Wed Oct 25 14:06:12 2017
--- gcc-8.4.0/libstdc++-v3/doc/html/manual/memory.html	Wed Mar  4 08:30:03 2020
***************
*** 314,326 ****
      </em>. </span>
        isoc++_1998
      <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.3"></a><p><span class="title"><em>
! 	<a class="link" href="http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759" target="_top">
        The Standard Librarian: What Are Allocators Good For?
! 	</a>
!       </em>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername">
  	C/C++ Users Journal
!       . </span></span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.4"></a><p><span class="title"><em>
! 	<a class="link" href="https://www.hoard.org" target="_top">
        The Hoard Memory Allocator
  	</a>
        </em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.5"></a><p><span class="title"><em>
--- 314,326 ----
      </em>. </span>
        isoc++_1998
      <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.3"></a><p><span class="title"><em>
!       <a class="link" href="https://web.archive.org/web/20190622154249/http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759" target="_top">
        The Standard Librarian: What Are Allocators Good For?
!       </a>
!     </em>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername">
  	C/C++ Users Journal
!       . </span></span><span class="pubdate">2000-12. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.4"></a><p><span class="title"><em>
! 	<a class="link" href="http://hoard.org" target="_top">
        The Hoard Memory Allocator
  	</a>
        </em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.5"></a><p><span class="title"><em>
*************** not be conforming for <code class="class
*** 554,560 ****
  extra template parameter, even if it had a default value.  The
  available policies are:
      </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
!        <code class="constant">_S_Atomic</code>
         </p><p>
  Selected when GCC supports a builtin atomic compare-and-swap operation
  on the target processor (see <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html" target="_top">Atomic
--- 554,560 ----
  extra template parameter, even if it had a default value.  The
  available policies are:
      </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
!        <code class="constant">_S_atomic</code>
         </p><p>
  Selected when GCC supports a builtin atomic compare-and-swap operation
  on the target processor (see <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html" target="_top">Atomic
*************** Builtins</a>.)  The reference counts are
*** 562,574 ****
  algorithm and GCC's atomic builtins, which provide the required memory
  synchronisation.
         </p></li><li class="listitem"><p>
!        <code class="constant">_S_Mutex</code>
         </p><p>
  The _Sp_counted_base specialization for this policy contains a mutex,
  which is locked in add_ref_lock(). This policy is used when GCC's atomic
  builtins aren't available so explicit memory barriers are needed in places.
         </p></li><li class="listitem"><p>
!        <code class="constant">_S_Single</code>
         </p><p>
  This policy uses a non-reentrant add_ref_lock() with no locking. It is
  used when libstdc++ is built without <code class="literal">--enable-threads</code>.
--- 562,574 ----
  algorithm and GCC's atomic builtins, which provide the required memory
  synchronisation.
         </p></li><li class="listitem"><p>
!        <code class="constant">_S_mutex</code>
         </p><p>
  The _Sp_counted_base specialization for this policy contains a mutex,
  which is locked in add_ref_lock(). This policy is used when GCC's atomic
  builtins aren't available so explicit memory barriers are needed in places.
         </p></li><li class="listitem"><p>
!        <code class="constant">_S_single</code>
         </p><p>
  This policy uses a non-reentrant add_ref_lock() with no locking. It is
  used when libstdc++ is built without <code class="literal">--enable-threads</code>.
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/html/manual/status.html gcc-8.4.0/libstdc++-v3/doc/html/manual/status.html
*** gcc-8.3.0/libstdc++-v3/doc/html/manual/status.html	Fri Oct 12 11:35:03 2018
--- gcc-8.4.0/libstdc++-v3/doc/html/manual/status.html	Wed Mar  4 08:30:03 2020
***************
*** 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><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.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 page describes the C++ support in mainline GCC SVN, 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><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.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 page describes the C++ support in the GCC 8 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">
*************** options. The pre-defined symbol
*** 155,162 ****
  <code class="constant">__cplusplus</code> is used to check for the
  presence of the required flag.
  </p><p>
! This page describes the C++11 support in mainline GCC SVN, 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">
--- 154,160 ----
  <code class="constant">__cplusplus</code> is used to check for the
  presence of the required flag.
  </p><p>
! This page describes the C++11 support in the GCC 8 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">
*************** options. The pre-defined symbol
*** 388,395 ****
  <code class="constant">__cplusplus</code> is used to check for the
  presence of the required flag.
  </p><p>
! This page describes the C++14 and library TS support in mainline GCC SVN,
! 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">Paper</th><th align="left">Title</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
  	<a class="link" href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2013/n3669.pdf" target="_top">
  	  N3669
--- 386,392 ----
  <code class="constant">__cplusplus</code> is used to check for the
  presence of the required flag.
  </p><p>
! This page describes the C++14 and library TS support in the GCC 8 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">Paper</th><th align="left">Title</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
  	<a class="link" href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2013/n3669.pdf" target="_top">
  	  N3669
*************** options. The pre-defined symbol
*** 523,533 ****
  <code class="constant">__cplusplus</code> is used to check for the
  presence of the required flag.
  </p><p>
! This section describes the C++17 and library TS support in mainline GCC SVN,
! not in any particular release.
  </p><p>
! The following table lists new library features that have been accepted into
! the C++17 working draft. The "Proposal" column provides a link to the
  ISO C++ committee proposal that describes the feature, while the "Status"
  column indicates the first version of GCC that contains an implementation of
  this feature (if it has been implemented).
--- 520,529 ----
  <code class="constant">__cplusplus</code> is used to check for the
  presence of the required flag.
  </p><p>
! This section describes the C++17 and library TS support in the GCC 8 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
  ISO C++ committee proposal that describes the feature, while the "Status"
  column indicates the first version of GCC that contains an implementation of
  this feature (if it has been implemented).
*************** Feature-testing recommendations for C++<
*** 665,671 ****
  	<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0040r3.html" target="_top">
  	P0040R3
  	</a>
!       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> </code></td></tr><tr><td align="left"> <code class="code">shared_ptr::weak_type</code></td><td align="left">
  	<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0163r0.html" target="_top">
  	P0163R0
  	</a>
--- 661,667 ----
  	<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0040r3.html" target="_top">
  	P0040R3
  	</a>
!       </td><td align="center"> 7.1 </td><td align="left"><code class="code">__cpp_lib_raw_memory_algorithms &gt;= 201606L</code></td></tr><tr><td align="left"> <code class="code">shared_ptr::weak_type</code></td><td align="left">
  	<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0163r0.html" target="_top">
  	P0163R0
  	</a>
*************** Feature-testing recommendations for C++<
*** 821,827 ****
  	P0067R5
  	</a>
        </td><td align="center"> 8 (only integral types supported) </td><td align="left"><code class="code"> __has_include(&lt;charconv&gt;) </code>
!              <code class="code"> __cpp_lib_to_chars &gt;= 201611 </code></td></tr></tbody></table></div></div><br class="table-break" /><p>
  Note 1: This feature is supported in GCC 7.1 and 7.2 but before GCC 7.3 the
  <code class="code">__cpp_lib</code> macro is not defined, and compilation will fail if the
  header is included without using <code class="option">-std</code> to enable C++17 support.
--- 817,835 ----
  	P0067R5
  	</a>
        </td><td align="center"> 8 (only integral types supported) </td><td align="left"><code class="code"> __has_include(&lt;charconv&gt;) </code>
!              <code class="code"> __cpp_lib_to_chars &gt;= 201611 </code></td></tr><tr><td align="left"> Homogeneous interface for variant, any and optional </td><td align="left">
! 	<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0032r3.pdf" target="_top">
! 	P0032R3
! 	</a>
!       </td><td align="center"> 7.1  </td><td align="left">
!              <code class="code"> __cpp_lib_any &gt;= 201606 </code>,
!              <code class="code"> __cpp_lib_optional &gt;= 201606 </code>,
!              <code class="code"> __cpp_lib_variant &gt;= 201606 </code>
!       </td></tr><tr><td align="left"> Making Optional Greater Equal Again </td><td align="left">
! 	<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0307r2.pdf" target="_top">
! 	P0307R2
! 	</a>
!       </td><td align="center"> 7.1  </td><td align="left"> <code class="code"> __cpp_lib_optional &gt;= 201606 </code> </td></tr></tbody></table></div></div><br class="table-break" /><p>
  Note 1: This feature is supported in GCC 7.1 and 7.2 but before GCC 7.3 the
  <code class="code">__cpp_lib</code> macro is not defined, and compilation will fail if the
  header is included without using <code class="option">-std</code> to enable C++17 support.
*************** and test for <code class="code">__STDCPP
*** 939,945 ****
     </p><p>
        <span class="emphasis"><em>30.10.2.1 [fs.conform.9945]</em></span>
        The behavior of the filesystem library implementation will depend on
!       the target operating system. Some features will not be not supported
        on some targets.
     </p><p>
        <span class="emphasis"><em>30.10.5 [fs.filesystem.syn]</em></span>
--- 947,953 ----
     </p><p>
        <span class="emphasis"><em>30.10.2.1 [fs.conform.9945]</em></span>
        The behavior of the filesystem library implementation will depend on
!       the target operating system. Some features will not be supported
        on some targets.
     </p><p>
        <span class="emphasis"><em>30.10.5 [fs.filesystem.syn]</em></span>
*************** In this implementation the header names
*** 957,964 ****
  <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 SVN, not in any particular
! release.
  </p><div class="table"><a id="table.tr1_status"></a><p class="title"><strong>Table 1.7. 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
--- 965,971 ----
  <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 8 series.
  </p><div class="table"><a id="table.tr1_status"></a><p class="title"><strong>Table 1.7. 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
*** 978,985 ****
  Extension for the programming language C++ to support
  decimal floating-point arithmetic
  </p><p>
! This page describes the TR 24733 support in mainline GCC SVN, not in any
! particular release.
  </p><div class="table"><a id="table.decfp_status"></a><p class="title"><strong>Table 1.8. 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">
--- 985,991 ----
  Extension for the programming language C++ to support
  decimal floating-point arithmetic
  </p><p>
! This page describes the TR 24733 support in the GCC 8 series.
  </p><div class="table"><a id="table.decfp_status"></a><p class="title"><strong>Table 1.8. 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-8.3.0/libstdc++-v3/doc/html/manual/using.html gcc-8.4.0/libstdc++-v3/doc/html/manual/using.html
*** gcc-8.3.0/libstdc++-v3/doc/html/manual/using.html	Thu May 10 19:18:18 2018
--- gcc-8.4.0/libstdc++-v3/doc/html/manual/using.html	Wed Mar  4 08:30:03 2020
***************
*** 2,8 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 3. Using</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="intro.html" title="Part I.  Introduction" /><link rel="prev" href="make.html" title="Make" /><link rel="next" href="using_headers.html" title="Headers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="make.html">Prev</a> </td><th width="60%" align="center">Part I. 
    Introduction
    
! </th><td width="20%" align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using"></a>Chapter 3. Using</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_dual_abi.html">Dual ABI</a></span></dt><dd><dl><dt><span class="section"><a href="using_dual_abi.html#manual.intro.using.abi.trouble">Troubleshooting</a></span></dt></dl></dd><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.experimental">Experimental Library Extensions</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</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.using.flags"></a>Command Options</h2></div></div></div><p>
        The set of features available in the GNU C++ library is shaped by
        several <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Invoking-GCC.html" target="_top">GCC
        Command Options</a>. Options that impact libstdc++ are
--- 2,8 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 3. Using</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="intro.html" title="Part I.  Introduction" /><link rel="prev" href="make.html" title="Make" /><link rel="next" href="using_headers.html" title="Headers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="make.html">Prev</a> </td><th width="60%" align="center">Part I. 
    Introduction
    
! </th><td width="20%" align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using"></a>Chapter 3. Using</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_dual_abi.html">Dual ABI</a></span></dt><dd><dl><dt><span class="section"><a href="using_dual_abi.html#manual.intro.using.abi.trouble">Troubleshooting</a></span></dt></dl></dd><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.experimental">Experimental Library Extensions</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.memory.mtalloc">Non-memory leaks in Pool and MT allocators</a></span></dt></dl></dd><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</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.using.flags"></a>Command Options</h2></div></div></div><p>
        The set of features available in the GNU C++ library is shaped by
        several <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Invoking-GCC.html" target="_top">GCC
        Command Options</a>. Options that impact libstdc++ are
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/html/manual/using_macros.html gcc-8.4.0/libstdc++-v3/doc/html/manual/using_macros.html
*** gcc-8.3.0/libstdc++-v3/doc/html/manual/using_macros.html	Mon Jan 29 12:37:17 2018
--- gcc-8.4.0/libstdc++-v3/doc/html/manual/using_macros.html	Wed Mar  4 08:30:03 2020
***************
*** 116,122 ****
          enabled for
          <code class="classname">std::vector&lt;T, std::allocator&lt;T&gt;&gt;</code>
          and only when <code class="classname">std::allocator</code> is derived from
!         <a class="xref" href="memory.html#allocator.impl" title="Implementation">the section called “Implementation”</a>. The annotations
          must be present on all vector operations or none, so this macro must
          be defined to the same value for all translation units that create,
          destroy or modify vectors.
--- 116,123 ----
          enabled for
          <code class="classname">std::vector&lt;T, std::allocator&lt;T&gt;&gt;</code>
          and only when <code class="classname">std::allocator</code> is derived from
!         <a class="link" href="memory.html#allocator.impl" title="Implementation"><code class="classname">new_allocator</code>
!         or <code class="classname">malloc_allocator</code></a>. The annotations
          must be present on all vector operations or none, so this macro must
          be defined to the same value for all translation units that create,
          destroy or modify vectors.
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/faq.xml gcc-8.4.0/libstdc++-v3/doc/xml/faq.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/faq.xml	Thu May 10 19:18:18 2018
--- gcc-8.4.0/libstdc++-v3/doc/xml/faq.xml	Wed Mar  4 08:30:03 2020
***************
*** 34,42 ****
       clauses 20 through 33 and annex D (prior to the 2017 standard
       the library clauses started with 17).  For those who want to see
       exactly how far the project has come, or just want the latest
!      bleeding-edge code, the up-to-date source is available over
!      anonymous SVN, and can be browsed over the
!      <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/svn.html">web</link>.
      </para> 
  
      <para>
--- 34,41 ----
       clauses 20 through 33 and annex D (prior to the 2017 standard
       the library clauses started with 17).  For those who want to see
       exactly how far the project has come, or just want the latest
!      bleeding-edge code, the up-to-date source can be cloned via
!      <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/git.html">Git</link>.
      </para> 
  
      <para>
***************
*** 296,322 ****
      download sites</link> is provided on the main GCC site.
      </para>
      <para>
!     Current libstdc++ sources can always be checked out of the main
!     GCC source repository using the appropriate version control
!     tool. At this time, that tool
!     is <application>Subversion</application>.
!     </para>
!     <para>
!     <application>Subversion</application>, or <acronym>SVN</acronym>, is
!     one of several revision control packages.  It was selected for GNU
!     projects because it's free (speech), free (beer), and very high
!     quality.  The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://subversion.tigris.org"> Subversion
!     home page</link> has a better description.
!     </para>
!     <para>
!     The <quote>anonymous client checkout</quote> feature of SVN is
!     similar to anonymous FTP in that it allows anyone to retrieve
!     the latest libstdc++ sources.
!     </para> 
!     <para>
!     For more information
!     see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/svn.html"><acronym>SVN</acronym>
!     details</link>.
      </para>
    </answer>
  </qandaentry>
--- 295,305 ----
      download sites</link> is provided on the main GCC site.
      </para>
      <para>
!     Current libstdc++ sources can always be found in the main GCC source
!     repository, available using the appropriate version control tool.
!     At this time, that tool is <application>Git</application>.
!     For more details see the documentation on
!     <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/git.html">using the Git repository</link>.
      </para>
    </answer>
  </qandaentry>
***************
*** 1001,1021 ****
  <qandaentry xml:id="faq.memory_leaks">
    <question xml:id="q-memory_leaks">
      <para>
!       <quote>Memory leaks</quote> in containers
      </para>
    </question>
    <answer xml:id="a-memory_leaks">
-     <note>
-       <para>This answer is old and probably no longer be relevant.</para>
-     </note>
      <para>
!     A few people have reported that the standard containers appear
      to leak memory when tested with memory checkers such as
      <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://valgrind.org/"><command>valgrind</command></link>.
      Under some (non-default) configurations the library's allocators keep
      free memory in a
!     pool for later reuse, rather than returning it to the OS.  Although
!     this memory is always reachable by the library and is never
      lost, memory debugging tools can report it as a leak.  If you
      want to test the library for memory leaks please read
      <link linkend="debug.memory">Tips for memory leak hunting</link>
--- 984,1014 ----
  <qandaentry xml:id="faq.memory_leaks">
    <question xml:id="q-memory_leaks">
      <para>
!       <quote>Memory leaks</quote> in libstdc++
      </para>
    </question>
    <answer xml:id="a-memory_leaks">
      <para>
!     Since GCC 5.1.0, libstdc++ automatically allocates a pool
!     of a few dozen kilobytes on startup. This pool is used to ensure it's
!     possible to throw exceptions (such as <classname>bad_alloc</classname>)
!     even when <code>malloc</code> is unable to allocate any more memory.
!     With some versions of <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://valgrind.org/"><command>valgrind</command></link>
!     this pool will be shown as "still reachable" when the process exits, e.g.
!     <code>still reachable: 72,704 bytes in 1 blocks</code>.
!     This memory is not a leak, because it's still in use by libstdc++,
!     and the memory will be returned to the OS when the process exits.
!     Later versions of <command>valgrind</command> know how to free this
!     pool as the process exits, and so won't show any "still reachable" memory.
!     </para>
!     <para>
!     In the past, a few people reported that the standard containers appear
      to leak memory when tested with memory checkers such as
      <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://valgrind.org/"><command>valgrind</command></link>.
      Under some (non-default) configurations the library's allocators keep
      free memory in a
!     pool for later reuse, rather than deallocating it with <code>delete</code>
!     Although this memory is always reachable by the library and is never
      lost, memory debugging tools can report it as a leak.  If you
      want to test the library for memory leaks please read
      <link linkend="debug.memory">Tips for memory leak hunting</link>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/allocator.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/allocator.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/allocator.xml	Sat Sep  9 06:51:49 2017
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/allocator.xml	Wed Mar  4 08:30:03 2020
***************
*** 502,513 ****
    </biblioentry>
  
    <biblioentry>
!       <title>
! 	<link xmlns:xlink="http://www.w3.org/1999/xlink"
! 	      xlink:href="http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759">
        The Standard Librarian: What Are Allocators Good For?
! 	</link>
!       </title>
  
      <author><personname><firstname>Matt</firstname><surname>Austern</surname></personname></author>
      <publisher>
--- 502,513 ----
    </biblioentry>
  
    <biblioentry>
!     <title>
!       <link xmlns:xlink="http://www.w3.org/1999/xlink"
! 	    xlink:href="https://web.archive.org/web/20190622154249/http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759">
        The Standard Librarian: What Are Allocators Good For?
!       </link>
!     </title>
  
      <author><personname><firstname>Matt</firstname><surname>Austern</surname></personname></author>
      <publisher>
***************
*** 515,526 ****
  	C/C++ Users Journal
        </publishername>
      </publisher>
    </biblioentry>
  
    <biblioentry>
        <title>
  	<link xmlns:xlink="http://www.w3.org/1999/xlink"
! 	      xlink:href="https://www.hoard.org">
        The Hoard Memory Allocator
  	</link>
        </title>
--- 515,527 ----
  	C/C++ Users Journal
        </publishername>
      </publisher>
+     <pubdate>2000-12</pubdate>
    </biblioentry>
  
    <biblioentry>
        <title>
  	<link xmlns:xlink="http://www.w3.org/1999/xlink"
! 	      xlink:href="http://hoard.org">
        The Hoard Memory Allocator
  	</link>
        </title>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/appendix_contributing.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/appendix_contributing.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/appendix_contributing.xml	Tue May 16 10:37:22 2017
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/appendix_contributing.xml	Wed Mar  4 08:30:03 2020
***************
*** 170,183 ****
  
        <listitem>
  	<para>
! 	  The patch itself. If you are accessing the SVN
! 	  repository use <command>svn update; svn diff NEW</command>;
! 	  else, use <command>diff -cp OLD NEW</command> ... If your
  	  version of diff does not support these options, then get the
! 	  latest version of GNU
! 	  diff. The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/wiki/SvnTricks">SVN
! 	  Tricks</link> wiki page has information on customising the
! 	  output of <code>svn diff</code>.
  	</para>
        </listitem>
  
--- 170,181 ----
  
        <listitem>
  	<para>
! 	  The patch itself. If you are using the Git repository use
! 	  <command>git diff</command> or <command>git format-patch</command>
! 	  to produce a patch;
! 	  otherwise, use <command>diff -cp OLD NEW</command>. If your
  	  version of diff does not support these options, then get the
! 	  latest version of GNU diff.
  	</para>
        </listitem>
  
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/debug.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/debug.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/debug.xml	Sun Feb 19 10:54:35 2017
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/debug.xml	Wed Mar  4 08:30:03 2020
***************
*** 94,143 ****
  
  <section xml:id="debug.memory"><info><title>Memory Leak Hunting</title></info>
  
  
  <para>
!   There are various third party memory tracing and debug utilities
    that can be used to provide detailed memory allocation information
    about C++ code. An exhaustive list of tools is not going to be
    attempted, but includes <code>mtrace</code>, <code>valgrind</code>,
!   <code>mudflap</code>, and the non-free commercial product
!   <code>purify</code>. In addition, <code>libcwd</code> has a
!   replacement for the global new and delete operators that can track
!   memory allocation and deallocation and provide useful memory
!   statistics.
! </para>
! 
! <para>
!   Regardless of the memory debugging tool being used, there is one
!   thing of great importance to keep in mind when debugging C++ code
!   that uses <code>new</code> and <code>delete</code>: there are
!   different kinds of allocation schemes that can be used by <code>
!   std::allocator</code>. For implementation details, see the <link linkend="manual.ext.allocator.mt">mt allocator</link> documentation and
!   look specifically for <code>GLIBCXX_FORCE_NEW</code>.
! </para>
! 
! <para>
!   In a nutshell, the optional <classname>mt_allocator</classname>
!   is a high-performance pool allocator, and can
!   give the mistaken impression that in a suspect executable, memory is
!   being leaked, when in reality the memory "leak" is a pool being used
!   by the library's allocator and is reclaimed after program
!   termination.
  </para>
  
  <para>
    For valgrind, there are some specific items to keep in mind. First
    of all, use a version of valgrind that will work with current GNU
    C++ tools: the first that can do this is valgrind 1.0.4, but later
!   versions should work at least as well. Second of all, use a
!   completely unoptimized build to avoid confusing valgrind. Third, use
!   GLIBCXX_FORCE_NEW to keep extraneous pool allocation noise from
!   cluttering debug information.
  </para>
  
  <para>
!   Fourth, it may be necessary to force deallocation in other libraries
!   as well, namely the "C" library. On linux, this can be accomplished
    with the appropriate use of the <code>__cxa_atexit</code> or
    <code>atexit</code> functions.
  </para>
--- 94,128 ----
  
  <section xml:id="debug.memory"><info><title>Memory Leak Hunting</title></info>
  
+ <para>
+   On many targets GCC supports AddressSanitizer, a fast memory error detector,
+   which is enabled by the <option>-fsanitize=address</option> option.
+ </para>
  
  <para>
!   There are also various third party memory tracing and debug utilities
    that can be used to provide detailed memory allocation information
    about C++ code. An exhaustive list of tools is not going to be
    attempted, but includes <code>mtrace</code>, <code>valgrind</code>,
!   <code>mudflap</code> (no longer supported since GCC 4.9.0), ElectricFence,
!   and the non-free commercial product <code>purify</code>.
!   In addition, <code>libcwd</code>, jemalloc and TCMalloc have replacements
!   for the global <code>new</code> and <code>delete</code> operators
!   that can track memory allocation and deallocation and provide useful
!   memory statistics.
  </para>
  
  <para>
    For valgrind, there are some specific items to keep in mind. First
    of all, use a version of valgrind that will work with current GNU
    C++ tools: the first that can do this is valgrind 1.0.4, but later
!   versions should work better. Second, using an unoptimized build
!   might avoid confusing valgrind.
  </para>
  
  <para>
!   Third, it may be necessary to force deallocation in other libraries
!   as well, namely the "C" library. On GNU/Linux, this can be accomplished
    with the appropriate use of the <code>__cxa_atexit</code> or
    <code>atexit</code> functions.
  </para>
***************
*** 157,163 ****
     }
  </programlisting>
  
- 
  <para>or, using <code>__cxa_atexit</code>:</para>
  
  <programlisting>
--- 142,147 ----
***************
*** 184,189 ****
--- 168,206 ----
     valgrind -v --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes a.out
  </programlisting>
  
+ <section xml:id="debug.memory.mtalloc">
+ <info><title>Non-memory leaks in Pool and MT allocators</title></info>
+ 
+ <para>
+   There are different kinds of allocation schemes that can be used by
+   <code>std::allocator</code>. Prior to GCC 3.4.0 the default was to use
+   a pooling allocator, <classname>pool_allocator</classname>,
+   which is still available as the optional
+   <classname>__pool_alloc</classname> extension.
+   Another optional extension, <classname>__mt_alloc</classname>,
+   is a high-performance pool allocator.
+ </para>
+ 
+ <para>
+   In a suspect executable these pooling allocators can give
+   the mistaken impression that memory is being leaked,
+   when in reality the memory "leak" is a pool being used
+   by the library's allocator and is reclaimed after program
+   termination.
+ </para>
+ 
+ <para>
+   If you're using memory debugging tools on a program that uses
+   one of these pooling allocators, you can set the environment variable
+   <literal>GLIBCXX_FORCE_NEW</literal> to keep extraneous pool allocation
+   noise from cluttering debug information.
+   For more details, see the
+   <link linkend="manual.ext.allocator.mt">mt allocator</link>
+   documentation and look specifically for <code>GLIBCXX_FORCE_NEW</code>.
+ </para>
+ 
+ </section>
+ 
  </section>
  
  <section xml:id="debug.races"><info><title>Data Race Hunting</title></info>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/documentation_hacking.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/documentation_hacking.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/documentation_hacking.xml	Sun Mar 18 23:38:23 2018
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/documentation_hacking.xml	Wed Mar  4 08:30:03 2020
***************
*** 805,811 ****
        </para>
  
        <para>
! 	Generated files are output into separate sub directores of
  	<filename class="directory">doc/docbook/</filename> in the
  	build directory, based on the output format. For instance, the
  	HTML docs will be in <filename
--- 805,811 ----
        </para>
  
        <para>
! 	Generated files are output into separate sub-directores of
  	<filename class="directory">doc/docbook/</filename> in the
  	build directory, based on the output format. For instance, the
  	HTML docs will be in <filename
***************
*** 813,818 ****
--- 813,825 ----
        </para>
  
        <para>
+ 	The <screen>doc-html-docbook-regenerate</screen> target will generate
+ 	the HTML files and copy them back to the libstdc++ source tree.
+ 	This can be used to update the HTML files that are checked in to
+ 	version control.
+       </para>
+ 
+       <para>
  	If the Docbook stylesheets are installed in a custom location,
  	one can use the variable <literal>XSL_STYLE_DIR</literal> to
  	override the Makefile defaults. For example:
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/evolution.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/evolution.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/evolution.xml	Wed Apr 11 00:21:35 2018
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/evolution.xml	Wed Mar  4 08:30:03 2020
*************** Removal of <filename class="headerfile">
*** 80,90 ****
  
     <para> For GCC releases from 2.95 through the 3.1 series, defining
     <literal>__USE_MALLOC</literal> on the gcc command line would change the
!    default allocation strategy to instead use <code> malloc</code> and
!    <function>free</function>. For the 3.2 and 3.3 release series the same
     functionality was spelled <literal>_GLIBCXX_FORCE_NEW</literal>. From
!    GCC 3.4 onwards the functionality is enabled by setting
!    <literal>GLIBCXX_FORCE_NEW</literal> in the environment, see
     <link linkend="manual.ext.allocator.mt">the mt allocator chapter</link>
     for details.
     </para>
--- 80,91 ----
  
     <para> For GCC releases from 2.95 through the 3.1 series, defining
     <literal>__USE_MALLOC</literal> on the gcc command line would change the
!    default allocation strategy to instead use <code>malloc</code> and
!    <code>free</code>. For the 3.2 and 3.3 release series the same
     functionality was spelled <literal>_GLIBCXX_FORCE_NEW</literal>. From
!    GCC 3.4 onwards the default allocator uses <code>new</code> anyway,
!    but for the optional pooling allocators the functionality is enabled by
!    setting <literal>GLIBCXX_FORCE_NEW</literal> in the environment, see
     <link linkend="manual.ext.allocator.mt">the mt allocator chapter</link>
     for details.
     </para>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/intro.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/intro.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/intro.xml	Fri Feb  8 12:20:17 2019
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/intro.xml	Wed Mar  4 08:30:03 2020
*************** requirements of the license of GCC.
*** 1105,1110 ****
--- 1105,1118 ----
      ill-formed.
      </para></listitem></varlistentry>
  
+     <varlistentry xml:id="manual.bugs.dr2537"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2537">2537</link>:
+        <emphasis>Constructors for <code>priority_queue</code> taking allocators
+ 	 should call <code>make_heap</code>
+        </emphasis>
+     </term>
+     <listitem><para>Call <code>make_heap</code>.
+     </para></listitem></varlistentry>
+ 
      <varlistentry xml:id="manual.bugs.dr2583"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2583">2583</link>:
         <emphasis>There is no way to supply an allocator for <code>basic_string(str, pos)</code>
         </emphasis>
*************** requirements of the license of GCC.
*** 1112,1117 ****
--- 1120,1133 ----
      <listitem><para>Add new constructor
      </para></listitem></varlistentry>
  
+     <varlistentry xml:id="manual.bugs.dr2586"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2586">2586</link>:
+        <emphasis>Wrong value category used in <code>scoped_allocator_adaptor::construct()</code>
+        </emphasis>
+     </term>
+     <listitem><para>Change internal helper for uses-allocator construction
+       to always check using const lvalue allocators.
+     </para></listitem></varlistentry>
+ 
      <varlistentry xml:id="manual.bugs.dr2684"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2684">2684</link>:
         <emphasis><code>priority_queue</code> lacking comparator typedef
         </emphasis>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/shared_ptr.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/shared_ptr.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/shared_ptr.xml	Thu Feb 16 15:25:18 2017
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/shared_ptr.xml	Wed Mar  4 08:30:03 2020
*************** available policies are:
*** 239,245 ****
     <orderedlist>
       <listitem>
         <para>
!        <constant>_S_Atomic</constant>
         </para>
         <para>
  Selected when GCC supports a builtin atomic compare-and-swap operation
--- 239,245 ----
     <orderedlist>
       <listitem>
         <para>
!        <constant>_S_atomic</constant>
         </para>
         <para>
  Selected when GCC supports a builtin atomic compare-and-swap operation
*************** synchronisation.
*** 252,258 ****
  
       <listitem>
         <para>
!        <constant>_S_Mutex</constant>
         </para>
         <para>
  The _Sp_counted_base specialization for this policy contains a mutex,
--- 252,258 ----
  
       <listitem>
         <para>
!        <constant>_S_mutex</constant>
         </para>
         <para>
  The _Sp_counted_base specialization for this policy contains a mutex,
*************** builtins aren't available so explicit me
*** 263,269 ****
  
       <listitem>
         <para>
!        <constant>_S_Single</constant>
         </para>
         <para>
  This policy uses a non-reentrant add_ref_lock() with no locking. It is
--- 263,269 ----
  
       <listitem>
         <para>
!        <constant>_S_single</constant>
         </para>
         <para>
  This policy uses a non-reentrant add_ref_lock() with no locking. It is
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/spine.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/spine.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/spine.xml	Wed Apr 11 00:21:35 2018
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/spine.xml	Wed Mar  4 08:30:03 2020
***************
*** 26,31 ****
--- 26,33 ----
      <year>2016</year>
      <year>2017</year>
      <year>2018</year>
+     <year>2019</year>
+     <year>2020</year>
      <holder>
        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.fsf.org">FSF</link>
      </holder>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/status_cxx1998.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxx1998.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/status_cxx1998.xml	Fri Oct 12 11:35:03 2018
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxx1998.xml	Wed Mar  4 08:30:03 2020
*************** This status table is based on the table
*** 18,25 ****
  </para>
  
  <para>
! This page describes the C++ support in mainline GCC SVN, not in any
! particular release.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
--- 18,24 ----
  </para>
  
  <para>
! This page describes the C++ support in the GCC 8 series.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/status_cxx2011.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxx2011.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/status_cxx2011.xml	Fri Jun  2 18:35:37 2017
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxx2011.xml	Wed Mar  4 08:30:03 2020
*************** presence of the required flag.
*** 27,34 ****
  </para>
  
  <para>
! This page describes the C++11 support in mainline GCC SVN, not in any
! particular release.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
--- 27,33 ----
  </para>
  
  <para>
! This page describes the C++11 support in the GCC 8 series.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/status_cxx2014.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxx2014.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/status_cxx2014.xml	Thu Jul  7 16:35:43 2016
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxx2014.xml	Wed Mar  4 08:30:03 2020
*************** presence of the required flag.
*** 20,27 ****
  </para>
  
  <para>
! This page describes the C++14 and library TS support in mainline GCC SVN,
! not in any particular release.
  </para>
  
  <table frame="all" xml:id="table.cxx14_status">
--- 20,26 ----
  </para>
  
  <para>
! This page describes the C++14 and library TS support in the GCC 8 series.
  </para>
  
  <table frame="all" xml:id="table.cxx14_status">
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml	Wed Oct 25 14:06:12 2017
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml	Wed Mar  4 08:30:03 2020
*************** presence of the required flag.
*** 20,32 ****
  </para>
  
  <para>
! This section describes the C++17 and library TS support in mainline GCC SVN,
! not in any particular release.
  </para>
  
  <para>
! The following table lists new library features that have been accepted into
! the C++17 working draft. The "Proposal" column provides a link to the
  ISO C++ committee proposal that describes the feature, while the "Status"
  column indicates the first version of GCC that contains an implementation of
  this feature (if it has been implemented).
--- 20,31 ----
  </para>
  
  <para>
! This section describes the C++17 and library TS support in the GCC 8 series.
  </para>
  
  <para>
! The following table lists new library features that are included in
! the C++17 standard. The "Proposal" column provides a link to the
  ISO C++ committee proposal that describes the feature, while the "Status"
  column indicates the first version of GCC that contains an implementation of
  this feature (if it has been implemented).
*************** Feature-testing recommendations for C++<
*** 382,388 ****
  	</link>
        </entry>
        <entry align="center"> 7.1 </entry>
!       <entry><code> </code></entry>
      </row>
  
      <row>
--- 381,387 ----
  	</link>
        </entry>
        <entry align="center"> 7.1 </entry>
!       <entry><code>__cpp_lib_raw_memory_algorithms &gt;= 201606L</code></entry>
      </row>
  
      <row>
*************** Feature-testing recommendations for C++<
*** 788,793 ****
--- 787,817 ----
               <code> __cpp_lib_to_chars >= 201611 </code></entry>
      </row>
  
+     <row>
+       <entry> Homogeneous interface for variant, any and optional </entry>
+       <entry>
+ 	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0032r3.pdf">
+ 	P0032R3
+ 	</link>
+       </entry>
+       <entry align="center"> 7.1  </entry>
+       <entry>
+              <code> __cpp_lib_any >= 201606 </code>,
+              <code> __cpp_lib_optional >= 201606 </code>,
+              <code> __cpp_lib_variant >= 201606 </code>
+       </entry>
+     </row>
+ 
+     <row>
+       <entry> Making Optional Greater Equal Again </entry>
+       <entry>
+ 	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0307r2.pdf">
+ 	P0307R2
+ 	</link>
+       </entry>
+       <entry align="center"> 7.1  </entry>
+       <entry> <code> __cpp_lib_optional >= 201606 </code> </entry>
+     </row>
  
    </tbody>
  </tgroup>
*************** and test for <code>__STDCPP_MATH_SPEC_FU
*** 1049,1055 ****
     <para>
        <emphasis>30.10.2.1 [fs.conform.9945]</emphasis>
        The behavior of the filesystem library implementation will depend on
!       the target operating system. Some features will not be not supported
        on some targets.
     </para>
  
--- 1073,1079 ----
     <para>
        <emphasis>30.10.2.1 [fs.conform.9945]</emphasis>
        The behavior of the filesystem library implementation will depend on
!       the target operating system. Some features will not be supported
        on some targets.
     </para>
  
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml	Mon Jun  9 14:47:17 2014
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml	Wed Mar  4 08:30:03 2020
*************** In this implementation the header names
*** 22,29 ****
  </para>
  
  <para>
! This page describes the TR1 support in mainline GCC SVN, 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 8 series.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml	Mon Jun  9 14:47:17 2014
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml	Wed Mar  4 08:30:03 2020
*************** decimal floating-point arithmetic
*** 16,23 ****
  </para>
  
  <para>
! This page describes the TR 24733 support in mainline GCC SVN, 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 8 series.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
diff -Nrcpad gcc-8.3.0/libstdc++-v3/doc/xml/manual/using.xml gcc-8.4.0/libstdc++-v3/doc/xml/manual/using.xml
*** gcc-8.3.0/libstdc++-v3/doc/xml/manual/using.xml	Wed Aug  8 15:33:25 2018
--- gcc-8.4.0/libstdc++-v3/doc/xml/manual/using.xml	Wed Mar  4 08:30:03 2020
*************** g++ -Winvalid-pch -I. -include stdc++.h
*** 1130,1137 ****
          enabled for
          <classname>std::vector&lt;T, std::allocator&lt;T&gt;&gt;</classname>
          and only when <classname>std::allocator</classname> is derived from
!         <xref linkend="allocator.impl"><classname>new_allocator</classname>
!         or <classname>malloc_allocator</classname></xref>. The annotations
          must be present on all vector operations or none, so this macro must
          be defined to the same value for all translation units that create,
          destroy or modify vectors.
--- 1130,1137 ----
          enabled for
          <classname>std::vector&lt;T, std::allocator&lt;T&gt;&gt;</classname>
          and only when <classname>std::allocator</classname> is derived from
!         <link linkend="allocator.impl"><classname>new_allocator</classname>
!         or <classname>malloc_allocator</classname></link>. The annotations
          must be present on all vector operations or none, so this macro must
          be defined to the same value for all translation units that create,
          destroy or modify vectors.
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/Makefile.am gcc-8.4.0/libstdc++-v3/include/Makefile.am
*** gcc-8.3.0/libstdc++-v3/include/Makefile.am	Tue Jul 31 09:38:28 2018
--- gcc-8.4.0/libstdc++-v3/include/Makefile.am	Wed Mar  4 08:30:03 2020
*************** allstamped = \
*** 1010,1015 ****
--- 1010,1016 ----
  # catenation.
  allcreated = \
  	${host_builddir}/c++config.h \
+ 	${host_builddir}/largefile-config.h \
  	${thread_host_headers} \
  	${pch_build}
  
*************** stamp-float128:
*** 1238,1247 ****
--- 1239,1257 ----
  	echo 'undef _GLIBCXX_USE_FLOAT128' > stamp-float128
  endif
  
+ # This header is not installed, it's only used to build libstdc++ itself.
+ ${host_builddir}/largefile-config.h: ${CONFIG_HEADER}
+ 	@rm -f $@.tmp
+ 	@-grep 'define _DARWIN_USE_64_BIT_INODE' ${CONFIG_HEADER} >> $@.tmp
+ 	@-grep 'define _FILE_OFFSET_BITS' ${CONFIG_HEADER} >> $@.tmp
+ 	@-grep 'define _LARGE_FILES' ${CONFIG_HEADER} >> $@.tmp
+ 	@mv $@.tmp $@
+ 
  # NB: The non-empty default ldbl_compat works around an AIX sed
  # oddity, see libstdc++/31957 for details.
  ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
  			      ${glibcxx_srcdir}/include/bits/c++config \
+ 			      ${host_builddir}/largefile-config.h \
  			      stamp-${host_alias} \
  			      ${toplevel_srcdir}/gcc/DATESTAMP \
  			      stamp-namespace-version \
*************** ${host_builddir}/c++config.h: ${CONFIG_H
*** 1279,1284 ****
--- 1289,1297 ----
  	    -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
  	    -e 's/VERSION/_GLIBCXX_VERSION/g' \
  	    -e 's/WORDS_/_GLIBCXX_WORDS_/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' \
  	    -e 's/ICONV_CONST/_GLIBCXX_ICONV_CONST/g' \
  	    -e '/[	 ]_GLIBCXX_LONG_DOUBLE_COMPAT[	 ]/d' \
  	    < ${CONFIG_HEADER} >> $@ ;\
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/Makefile.in gcc-8.4.0/libstdc++-v3/include/Makefile.in
*** gcc-8.3.0/libstdc++-v3/include/Makefile.in	Tue Jul 31 09:38:28 2018
--- gcc-8.4.0/libstdc++-v3/include/Makefile.in	Wed Mar  4 08:30:03 2020
*************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
*** 205,210 ****
--- 205,211 ----
  VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
  WARN_FLAGS = @WARN_FLAGS@
  WERROR = @WERROR@
+ XMLCATALOG = @XMLCATALOG@
  XMLLINT = @XMLLINT@
  XSLTPROC = @XSLTPROC@
  XSL_STYLE_DIR = @XSL_STYLE_DIR@
*************** allstamped = \
*** 1293,1298 ****
--- 1294,1300 ----
  # catenation.
  allcreated = \
  	${host_builddir}/c++config.h \
+ 	${host_builddir}/largefile-config.h \
  	${thread_host_headers} \
  	${pch_build}
  
*************** stamp-host: ${host_headers} ${bits_host_
*** 1667,1676 ****
--- 1669,1687 ----
  @ENABLE_FLOAT128_FALSE@stamp-float128:
  @ENABLE_FLOAT128_FALSE@	echo 'undef _GLIBCXX_USE_FLOAT128' > stamp-float128
  
+ # This header is not installed, it's only used to build libstdc++ itself.
+ ${host_builddir}/largefile-config.h: ${CONFIG_HEADER}
+ 	@rm -f $@.tmp
+ 	@-grep 'define _DARWIN_USE_64_BIT_INODE' ${CONFIG_HEADER} >> $@.tmp
+ 	@-grep 'define _FILE_OFFSET_BITS' ${CONFIG_HEADER} >> $@.tmp
+ 	@-grep 'define _LARGE_FILES' ${CONFIG_HEADER} >> $@.tmp
+ 	@mv $@.tmp $@
+ 
  # NB: The non-empty default ldbl_compat works around an AIX sed
  # oddity, see libstdc++/31957 for details.
  ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
  			      ${glibcxx_srcdir}/include/bits/c++config \
+ 			      ${host_builddir}/largefile-config.h \
  			      stamp-${host_alias} \
  			      ${toplevel_srcdir}/gcc/DATESTAMP \
  			      stamp-namespace-version \
*************** ${host_builddir}/c++config.h: ${CONFIG_H
*** 1708,1713 ****
--- 1719,1727 ----
  	    -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
  	    -e 's/VERSION/_GLIBCXX_VERSION/g' \
  	    -e 's/WORDS_/_GLIBCXX_WORDS_/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' \
  	    -e 's/ICONV_CONST/_GLIBCXX_ICONV_CONST/g' \
  	    -e '/[	 ]_GLIBCXX_LONG_DOUBLE_COMPAT[	 ]/d' \
  	    < ${CONFIG_HEADER} >> $@ ;\
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/char_traits.h gcc-8.4.0/libstdc++-v3/include/bits/char_traits.h
*** gcc-8.3.0/libstdc++-v3/include/bits/char_traits.h	Fri Feb  8 14:16:28 2019
--- gcc-8.4.0/libstdc++-v3/include/bits/char_traits.h	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 248,254 ****
      __constant_char_array_p(const _CharT* __a, size_t __n)
      {
        size_t __i = 0;
!       while (__builtin_constant_p(__a[__i]) && __i < __n)
  	__i++;
        return __i == __n;
      }
--- 248,254 ----
      __constant_char_array_p(const _CharT* __a, size_t __n)
      {
        size_t __i = 0;
!       while (__i < __n && __builtin_constant_p(__a[__i]))
  	__i++;
        return __i == __n;
      }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/forward_list.tcc gcc-8.4.0/libstdc++-v3/include/bits/forward_list.tcc
*** gcc-8.3.0/libstdc++-v3/include/bits/forward_list.tcc	Wed Jul  4 11:46:43 2018
--- gcc-8.4.0/libstdc++-v3/include/bits/forward_list.tcc	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 375,381 ****
        auto __iy = __ly.cbegin();
        while (__ix != __lx.cend() && __iy != __ly.cend())
  	{
! 	  if (*__ix != *__iy)
  	    return false;
  	  ++__ix;
  	  ++__iy;
--- 375,381 ----
        auto __iy = __ly.cbegin();
        while (__ix != __lx.cend() && __iy != __ly.cend())
  	{
! 	  if (!(*__ix == *__iy))
  	    return false;
  	  ++__ix;
  	  ++__iy;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 445,453 ****
  			__p = static_cast<_Node*>(__p->_M_next);
  			--__psize;
  		      }
! 		    else if (__comp(*__p->_M_valptr(), *__q->_M_valptr()))
  		      {
! 			// First node of p is lower; e must come from p.
  			__e = __p;
  			__p = static_cast<_Node*>(__p->_M_next);
  			--__psize;
--- 445,453 ----
  			__p = static_cast<_Node*>(__p->_M_next);
  			--__psize;
  		      }
! 		    else if (!__comp(*__q->_M_valptr(), *__p->_M_valptr()))
  		      {
! 			// First node of q is not lower; e must come from p.
  			__e = __p;
  			__p = static_cast<_Node*>(__p->_M_next);
  			--__psize;
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/fs_path.h gcc-8.4.0/libstdc++-v3/include/bits/fs_path.h
*** gcc-8.3.0/libstdc++-v3/include/bits/fs_path.h	Thu Jan 10 16:06:49 2019
--- gcc-8.4.0/libstdc++-v3/include/bits/fs_path.h	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 107,113 ****
      template<typename _Tp1, typename _Tp2 = void>
        using _Path = typename
  	std::enable_if<__and_<__not_<is_same<remove_cv_t<_Tp1>, path>>,
! 			      __not_<is_void<_Tp1>>,
  			      __constructible_from<_Tp1, _Tp2>>::value,
  		       path>::type;
  
--- 107,113 ----
      template<typename _Tp1, typename _Tp2 = void>
        using _Path = typename
  	std::enable_if<__and_<__not_<is_same<remove_cv_t<_Tp1>, path>>,
! 			      __not_<is_void<remove_pointer_t<_Tp1>>>,
  			      __constructible_from<_Tp1, _Tp2>>::value,
  		       path>::type;
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 168,174 ****
      path(path&& __p) noexcept
      : _M_pathname(std::move(__p._M_pathname)), _M_type(__p._M_type)
      {
!       _M_split_cmpts();
        __p.clear();
      }
  
--- 168,175 ----
      path(path&& __p) noexcept
      : _M_pathname(std::move(__p._M_pathname)), _M_type(__p._M_type)
      {
!       if (_M_type == _Type::_Multi)
! 	_M_split_cmpts();
        __p.clear();
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 478,484 ****
        static basic_string<_CharT, _Traits, _Allocator>
        _S_str_convert(const string_type&, const _Allocator& __a);
  
!     bool _S_is_dir_sep(value_type __ch)
      {
  #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
        return __ch == L'/' || __ch == preferred_separator;
--- 479,485 ----
        static basic_string<_CharT, _Traits, _Allocator>
        _S_str_convert(const string_type&, const _Allocator& __a);
  
!     static bool _S_is_dir_sep(value_type __ch)
      {
  #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
        return __ch == L'/' || __ch == preferred_separator;
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 789,794 ****
--- 790,798 ----
    inline path&
    path::operator=(path&& __p) noexcept
    {
+     if (&__p == this)
+       return *this;
+ 
      _M_pathname = std::move(__p._M_pathname);
      _M_cmpts = std::move(__p._M_cmpts);
      _M_type = __p._M_type;
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/hashtable.h gcc-8.4.0/libstdc++-v3/include/bits/hashtable.h
*** gcc-8.3.0/libstdc++-v3/include/bits/hashtable.h	Wed Nov 28 06:27:28 2018
--- gcc-8.4.0/libstdc++-v3/include/bits/hashtable.h	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 192,202 ****
        static_assert(is_same<typename _Alloc::value_type, _Value>{},
  	  "unordered container must have the same value_type as its allocator");
  #endif
-       static_assert(__is_invocable<const _H1&, const _Key&>{},
- 	  "hash function must be invocable with an argument of key type");
-       static_assert(__is_invocable<const _Equal&, const _Key&, const _Key&>{},
- 	  "key equality predicate must be invocable with two arguments of "
- 	  "key type");
  
        using __traits_type = _Traits;
        using __hash_cached = typename __traits_type::__hash_cached;
--- 192,197 ----
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/hashtable_policy.h gcc-8.4.0/libstdc++-v3/include/bits/hashtable_policy.h
*** gcc-8.3.0/libstdc++-v3/include/bits/hashtable_policy.h	Tue Jan  9 21:05:10 2018
--- gcc-8.4.0/libstdc++-v3/include/bits/hashtable_policy.h	Wed Mar  4 08:30:03 2020
*************** namespace __detail
*** 1296,1302 ****
  
        __hash_code
        _M_hash_code(const _Key& __k) const
!       { return _M_h1()(__k); }
  
        std::size_t
        _M_bucket_index(const _Key&, __hash_code __c, std::size_t __n) const
--- 1296,1306 ----
  
        __hash_code
        _M_hash_code(const _Key& __k) const
!       {
! 	static_assert(__is_invocable<const _H1&, const _Key&>{},
! 	    "hash function must be invocable with an argument of key type");
! 	return _M_h1()(__k);
!       }
  
        std::size_t
        _M_bucket_index(const _Key&, __hash_code __c, std::size_t __n) const
*************** namespace __detail
*** 1384,1390 ****
  
        __hash_code
        _M_hash_code(const _Key& __k) const
!       { return _M_h1()(__k); }
  
        std::size_t
        _M_bucket_index(const _Key&, __hash_code __c,
--- 1388,1398 ----
  
        __hash_code
        _M_hash_code(const _Key& __k) const
!       {
! 	static_assert(__is_invocable<const _H1&, const _Key&>{},
! 	    "hash function must be invocable with an argument of key type");
! 	return _M_h1()(__k);
!       }
  
        std::size_t
        _M_bucket_index(const _Key&, __hash_code __c,
*************** namespace __detail
*** 1830,1835 ****
--- 1838,1846 ----
      bool
      _M_equals(const _Key& __k, __hash_code __c, __node_type* __n) const
      {
+       static_assert(__is_invocable<const _Equal&, const _Key&, const _Key&>{},
+ 	  "key equality predicate must be invocable with two arguments of "
+ 	  "key type");
        return _EqualHelper::_S_equals(_M_eq(), this->_M_extract(),
  				     __k, __c, __n);
      }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/ios_base.h gcc-8.4.0/libstdc++-v3/include/bits/ios_base.h
*** gcc-8.3.0/libstdc++-v3/include/bits/ios_base.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/include/bits/ios_base.h	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 445,451 ****
      /// Open for output.  Default for @c ofstream and fstream.
      static const openmode out =		_S_out;
  
!     /// Open for input.  Default for @c ofstream.
      static const openmode trunc =	_S_trunc;
  
      // 27.4.2.1.5  Type ios_base::seekdir
--- 445,451 ----
      /// Open for output.  Default for @c ofstream and fstream.
      static const openmode out =		_S_out;
  
!     /// Truncate an existing stream when opening.  Default for @c ofstream.
      static const openmode trunc =	_S_trunc;
  
      // 27.4.2.1.5  Type ios_base::seekdir
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/memoryfwd.h gcc-8.4.0/libstdc++-v3/include/bits/memoryfwd.h
*** gcc-8.3.0/libstdc++-v3/include/bits/memoryfwd.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/include/bits/memoryfwd.h	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 66,74 ****
--- 66,76 ----
    template<>
      class allocator<void>;
  
+ #if __cplusplus >= 201103L
    /// Declare uses_allocator so it can be specialized in \<queue\> etc.
    template<typename, typename>
      struct uses_allocator;
+ #endif
  
    /// @} group memory
  
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/random.h gcc-8.4.0/libstdc++-v3/include/bits/random.h
*** gcc-8.3.0/libstdc++-v3/include/bits/random.h	Mon Jan 15 19:58:22 2018
--- gcc-8.4.0/libstdc++-v3/include/bits/random.h	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 3645,3652 ****
  	       std::bernoulli_distribution& __x)
      {
        double __p;
!       __is >> __p;
!       __x.param(bernoulli_distribution::param_type(__p));
        return __is;
      }
  
--- 3645,3652 ----
  	       std::bernoulli_distribution& __x)
      {
        double __p;
!       if (__is >> __p)
! 	__x.param(bernoulli_distribution::param_type(__p));
        return __is;
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 5982,5990 ****
      size_t size() const noexcept
      { return _M_v.size(); }
  
!     template<typename OutputIterator>
        void
!       param(OutputIterator __dest) const
        { std::copy(_M_v.begin(), _M_v.end(), __dest); }
  
      // no copy functions
--- 5982,5990 ----
      size_t size() const noexcept
      { return _M_v.size(); }
  
!     template<typename _OutputIterator>
        void
!       param(_OutputIterator __dest) const
        { std::copy(_M_v.begin(), _M_v.end(), __dest); }
  
      // no copy functions
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/random.tcc gcc-8.4.0/libstdc++-v3/include/bits/random.tcc
*** gcc-8.3.0/libstdc++-v3/include/bits/random.tcc	Mon May  7 16:19:34 2018
--- gcc-8.4.0/libstdc++-v3/include/bits/random.tcc	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 902,910 ****
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _IntType __a, __b;
!       __is >> __a >> __b;
!       __x.param(typename uniform_int_distribution<_IntType>::
! 		param_type(__a, __b));
  
        __is.flags(__flags);
        return __is;
--- 902,910 ----
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _IntType __a, __b;
!       if (__is >> __a >> __b)
! 	__x.param(typename uniform_int_distribution<_IntType>::
! 		  param_type(__a, __b));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 964,972 ****
        __is.flags(__ios_base::skipws);
  
        _RealType __a, __b;
!       __is >> __a >> __b;
!       __x.param(typename uniform_real_distribution<_RealType>::
! 		param_type(__a, __b));
  
        __is.flags(__flags);
        return __is;
--- 964,972 ----
        __is.flags(__ios_base::skipws);
  
        _RealType __a, __b;
!       if (__is >> __a >> __b)
! 	__x.param(typename uniform_real_distribution<_RealType>::
! 		  param_type(__a, __b));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1108,1115 ****
        __is.flags(__ios_base::skipws);
  
        double __p;
!       __is >> __p;
!       __x.param(typename geometric_distribution<_IntType>::param_type(__p));
  
        __is.flags(__flags);
        return __is;
--- 1108,1115 ----
        __is.flags(__ios_base::skipws);
  
        double __p;
!       if (__is >> __p)
! 	__x.param(typename geometric_distribution<_IntType>::param_type(__p));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1225,1233 ****
  
        _IntType __k;
        double __p;
!       __is >> __k >> __p >> __x._M_gd;
!       __x.param(typename negative_binomial_distribution<_IntType>::
! 		param_type(__k, __p));
  
        __is.flags(__flags);
        return __is;
--- 1225,1233 ----
  
        _IntType __k;
        double __p;
!       if (__is >> __k >> __p >> __x._M_gd)
! 	__x.param(typename negative_binomial_distribution<_IntType>::
! 		  param_type(__k, __p));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1435,1442 ****
        __is.flags(__ios_base::skipws);
  
        double __mean;
!       __is >> __mean >> __x._M_nd;
!       __x.param(typename poisson_distribution<_IntType>::param_type(__mean));
  
        __is.flags(__flags);
        return __is;
--- 1435,1442 ----
        __is.flags(__ios_base::skipws);
  
        double __mean;
!       if (__is >> __mean >> __x._M_nd)
! 	__x.param(typename poisson_distribution<_IntType>::param_type(__mean));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1704,1712 ****
  
        _IntType __t;
        double __p;
!       __is >> __t >> __p >> __x._M_nd;
!       __x.param(typename binomial_distribution<_IntType>::
! 		param_type(__t, __p));
  
        __is.flags(__flags);
        return __is;
--- 1704,1712 ----
  
        _IntType __t;
        double __p;
!       if (__is >> __t >> __p >> __x._M_nd)
! 	__x.param(typename binomial_distribution<_IntType>::
! 		  param_type(__t, __p));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1764,1772 ****
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __lambda;
!       __is >> __lambda;
!       __x.param(typename exponential_distribution<_RealType>::
! 		param_type(__lambda));
  
        __is.flags(__flags);
        return __is;
--- 1764,1772 ----
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __lambda;
!       if (__is >> __lambda)
! 	__x.param(typename exponential_distribution<_RealType>::
! 		  param_type(__lambda));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1935,1946 ****
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        double __mean, __stddev;
!       __is >> __mean >> __stddev
! 	   >> __x._M_saved_available;
!       if (__x._M_saved_available)
! 	__is >> __x._M_saved;
!       __x.param(typename normal_distribution<_RealType>::
! 		param_type(__mean, __stddev));
  
        __is.flags(__flags);
        return __is;
--- 1935,1950 ----
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        double __mean, __stddev;
!       bool __saved_avail;
!       if (__is >> __mean >> __stddev >> __saved_avail)
! 	{
! 	  if (__saved_avail && (__is >> __x._M_saved))
! 	    {
! 	      __x._M_saved_available = __saved_avail;
! 	      __x.param(typename normal_distribution<_RealType>::
! 			param_type(__mean, __stddev));
! 	    }
! 	}
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1998,2006 ****
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __m, __s;
!       __is >> __m >> __s >> __x._M_nd;
!       __x.param(typename lognormal_distribution<_RealType>::
! 		param_type(__m, __s));
  
        __is.flags(__flags);
        return __is;
--- 2002,2010 ----
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __m, __s;
!       if (__is >> __m >> __s >> __x._M_nd)
! 	__x.param(typename lognormal_distribution<_RealType>::
! 		  param_type(__m, __s));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2070,2078 ****
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __n;
!       __is >> __n >> __x._M_gd;
!       __x.param(typename chi_squared_distribution<_RealType>::
! 		param_type(__n));
  
        __is.flags(__flags);
        return __is;
--- 2074,2082 ----
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __n;
!       if (__is >> __n >> __x._M_gd)
! 	__x.param(typename chi_squared_distribution<_RealType>::
! 		  param_type(__n));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2157,2165 ****
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __a, __b;
!       __is >> __a >> __b;
!       __x.param(typename cauchy_distribution<_RealType>::
! 		param_type(__a, __b));
  
        __is.flags(__flags);
        return __is;
--- 2161,2169 ----
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __a, __b;
!       if (__is >> __a >> __b)
! 	__x.param(typename cauchy_distribution<_RealType>::
! 		  param_type(__a, __b));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2235,2243 ****
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __m, __n;
!       __is >> __m >> __n >> __x._M_gd_x >> __x._M_gd_y;
!       __x.param(typename fisher_f_distribution<_RealType>::
! 		param_type(__m, __n));
  
        __is.flags(__flags);
        return __is;
--- 2239,2247 ----
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __m, __n;
!       if (__is >> __m >> __n >> __x._M_gd_x >> __x._M_gd_y)
! 	__x.param(typename fisher_f_distribution<_RealType>::
! 		  param_type(__m, __n));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2309,2316 ****
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __n;
!       __is >> __n >> __x._M_nd >> __x._M_gd;
!       __x.param(typename student_t_distribution<_RealType>::param_type(__n));
  
        __is.flags(__flags);
        return __is;
--- 2313,2320 ----
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __n;
!       if (__is >> __n >> __x._M_nd >> __x._M_gd)
! 	__x.param(typename student_t_distribution<_RealType>::param_type(__n));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2479,2487 ****
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __alpha_val, __beta_val;
!       __is >> __alpha_val >> __beta_val >> __x._M_nd;
!       __x.param(typename gamma_distribution<_RealType>::
! 		param_type(__alpha_val, __beta_val));
  
        __is.flags(__flags);
        return __is;
--- 2483,2491 ----
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __alpha_val, __beta_val;
!       if (__is >> __alpha_val >> __beta_val >> __x._M_nd)
! 	__x.param(typename gamma_distribution<_RealType>::
! 		  param_type(__alpha_val, __beta_val));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2556,2564 ****
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __a, __b;
!       __is >> __a >> __b;
!       __x.param(typename weibull_distribution<_RealType>::
! 		param_type(__a, __b));
  
        __is.flags(__flags);
        return __is;
--- 2560,2568 ----
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __a, __b;
!       if (__is >> __a >> __b)
! 	__x.param(typename weibull_distribution<_RealType>::
! 		  param_type(__a, __b));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2632,2640 ****
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __a, __b;
!       __is >> __a >> __b;
!       __x.param(typename extreme_value_distribution<_RealType>::
! 		param_type(__a, __b));
  
        __is.flags(__flags);
        return __is;
--- 2636,2644 ----
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        _RealType __a, __b;
!       if (__is >> __a >> __b)
! 	__x.param(typename extreme_value_distribution<_RealType>::
! 		  param_type(__a, __b));
  
        __is.flags(__flags);
        return __is;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2759,2764 ****
--- 2763,2788 ----
        return __os;
      }
  
+ namespace __detail
+ {
+   template<typename _ValT, typename _CharT, typename _Traits>
+     basic_istream<_CharT, _Traits>&
+     __extract_params(basic_istream<_CharT, _Traits>& __is,
+ 		     vector<_ValT>& __vals, size_t __n)
+     {
+       __vals.reserve(__n);
+       while (__n--)
+ 	{
+ 	  _ValT __val;
+ 	  if (__is >> __val)
+ 	    __vals.push_back(__val);
+ 	  else
+ 	    break;
+ 	}
+       return __is;
+     }
+ } // namespace __detail
+ 
    template<typename _IntType, typename _CharT, typename _Traits>
      std::basic_istream<_CharT, _Traits>&
      operator>>(std::basic_istream<_CharT, _Traits>& __is,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2771,2790 ****
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        size_t __n;
!       __is >> __n;
! 
!       std::vector<double> __prob_vec;
!       __prob_vec.reserve(__n);
!       for (; __n != 0; --__n)
  	{
! 	  double __prob;
! 	  __is >> __prob;
! 	  __prob_vec.push_back(__prob);
  	}
  
-       __x.param(typename discrete_distribution<_IntType>::
- 		param_type(__prob_vec.begin(), __prob_vec.end()));
- 
        __is.flags(__flags);
        return __is;
      }
--- 2795,2807 ----
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        size_t __n;
!       if (__is >> __n)
  	{
! 	  std::vector<double> __prob_vec;
! 	  if (__detail::__extract_params(__is, __prob_vec, __n))
! 	    __x.param({__prob_vec.begin(), __prob_vec.end()});
  	}
  
        __is.flags(__flags);
        return __is;
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2986,3014 ****
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        size_t __n;
!       __is >> __n;
! 
!       std::vector<_RealType> __int_vec;
!       __int_vec.reserve(__n + 1);
!       for (size_t __i = 0; __i <= __n; ++__i)
! 	{
! 	  _RealType __int;
! 	  __is >> __int;
! 	  __int_vec.push_back(__int);
! 	}
! 
!       std::vector<double> __den_vec;
!       __den_vec.reserve(__n);
!       for (size_t __i = 0; __i < __n; ++__i)
  	{
! 	  double __den;
! 	  __is >> __den;
! 	  __den_vec.push_back(__den);
  	}
  
-       __x.param(typename piecewise_constant_distribution<_RealType>::
- 	  param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin()));
- 
        __is.flags(__flags);
        return __is;
      }
--- 3003,3022 ----
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        size_t __n;
!       if (__is >> __n)
  	{
! 	  std::vector<_RealType> __int_vec;
! 	  if (__detail::__extract_params(__is, __int_vec, __n + 1))
! 	    {
! 	      std::vector<double> __den_vec;
! 	      if (__detail::__extract_params(__is, __den_vec, __n))
! 		{
! 		  __x.param({ __int_vec.begin(), __int_vec.end(),
! 			      __den_vec.begin() });
! 		}
! 	    }
  	}
  
        __is.flags(__flags);
        return __is;
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 3202,3230 ****
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        size_t __n;
!       __is >> __n;
! 
!       std::vector<_RealType> __int_vec;
!       __int_vec.reserve(__n + 1);
!       for (size_t __i = 0; __i <= __n; ++__i)
! 	{
! 	  _RealType __int;
! 	  __is >> __int;
! 	  __int_vec.push_back(__int);
! 	}
! 
!       std::vector<double> __den_vec;
!       __den_vec.reserve(__n + 1);
!       for (size_t __i = 0; __i <= __n; ++__i)
  	{
! 	  double __den;
! 	  __is >> __den;
! 	  __den_vec.push_back(__den);
  	}
- 
-       __x.param(typename piecewise_linear_distribution<_RealType>::
- 	  param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin()));
- 
        __is.flags(__flags);
        return __is;
      }
--- 3210,3228 ----
        __is.flags(__ios_base::dec | __ios_base::skipws);
  
        size_t __n;
!       if (__is >> __n)
  	{
! 	  vector<_RealType> __int_vec;
! 	  if (__detail::__extract_params(__is, __int_vec, __n + 1))
! 	    {
! 	      vector<double> __den_vec;
! 	      if (__detail::__extract_params(__is, __den_vec, __n + 1))
! 		{
! 		  __x.param({ __int_vec.begin(), __int_vec.end(),
! 			      __den_vec.begin() });
! 		}
! 	    }
  	}
        __is.flags(__flags);
        return __is;
      }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/stl_algobase.h gcc-8.4.0/libstdc++-v3/include/bits/stl_algobase.h
*** gcc-8.3.0/libstdc++-v3/include/bits/stl_algobase.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/include/bits/stl_algobase.h	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 998,1024 ****
    //  Precondition: __n > 0.
    inline _GLIBCXX_CONSTEXPR int
    __lg(int __n)
!   { return sizeof(int) * __CHAR_BIT__  - 1 - __builtin_clz(__n); }
  
    inline _GLIBCXX_CONSTEXPR unsigned
    __lg(unsigned __n)
!   { return sizeof(int) * __CHAR_BIT__  - 1 - __builtin_clz(__n); }
  
    inline _GLIBCXX_CONSTEXPR long
    __lg(long __n)
!   { return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); }
  
    inline _GLIBCXX_CONSTEXPR unsigned long
    __lg(unsigned long __n)
!   { return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); }
  
    inline _GLIBCXX_CONSTEXPR long long
    __lg(long long __n)
!   { return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); }
  
    inline _GLIBCXX_CONSTEXPR unsigned long long
    __lg(unsigned long long __n)
!   { return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); }
  
  _GLIBCXX_BEGIN_NAMESPACE_ALGO
  
--- 998,1024 ----
    //  Precondition: __n > 0.
    inline _GLIBCXX_CONSTEXPR int
    __lg(int __n)
!   { return (int)sizeof(int) * __CHAR_BIT__  - 1 - __builtin_clz(__n); }
  
    inline _GLIBCXX_CONSTEXPR unsigned
    __lg(unsigned __n)
!   { return (int)sizeof(int) * __CHAR_BIT__  - 1 - __builtin_clz(__n); }
  
    inline _GLIBCXX_CONSTEXPR long
    __lg(long __n)
!   { return (int)sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); }
  
    inline _GLIBCXX_CONSTEXPR unsigned long
    __lg(unsigned long __n)
!   { return (int)sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); }
  
    inline _GLIBCXX_CONSTEXPR long long
    __lg(long long __n)
!   { return (int)sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); }
  
    inline _GLIBCXX_CONSTEXPR unsigned long long
    __lg(unsigned long long __n)
!   { return (int)sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); }
  
  _GLIBCXX_BEGIN_NAMESPACE_ALGO
  
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/stl_queue.h gcc-8.4.0/libstdc++-v3/include/bits/stl_queue.h
*** gcc-8.3.0/libstdc++-v3/include/bits/stl_queue.h	Fri Feb  8 14:15:03 2019
--- gcc-8.4.0/libstdc++-v3/include/bits/stl_queue.h	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 504,517 ****
  	priority_queue(const _Compare& __x, const _Alloc& __a)
  	: c(__a), comp(__x) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	priority_queue(const _Compare& __x, const _Sequence& __c,
  		       const _Alloc& __a)
! 	: c(__c, __a), comp(__x) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	priority_queue(const _Compare& __x, _Sequence&& __c, const _Alloc& __a)
! 	: c(std::move(__c), __a), comp(__x) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	priority_queue(const priority_queue& __q, const _Alloc& __a)
--- 504,521 ----
  	priority_queue(const _Compare& __x, const _Alloc& __a)
  	: c(__a), comp(__x) { }
  
+       // _GLIBCXX_RESOLVE_LIB_DEFECTS
+       // 2537. Constructors [...] taking allocators should call make_heap
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	priority_queue(const _Compare& __x, const _Sequence& __c,
  		       const _Alloc& __a)
! 	: c(__c, __a), comp(__x)
! 	{ std::make_heap(c.begin(), c.end(), comp); }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	priority_queue(const _Compare& __x, _Sequence&& __c, const _Alloc& __a)
! 	: c(std::move(__c), __a), comp(__x)
! 	{ std::make_heap(c.begin(), c.end(), comp); }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	priority_queue(const priority_queue& __q, const _Alloc& __a)
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/stl_tree.h gcc-8.4.0/libstdc++-v3/include/bits/stl_tree.h
*** gcc-8.3.0/libstdc++-v3/include/bits/stl_tree.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/include/bits/stl_tree.h	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 448,464 ****
  
        typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Alloc_traits;
  
- #if __cplusplus >= 201103L
-       static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{},
- 	  "comparison object must be invocable with two arguments of key type");
- # if __cplusplus >= 201703L
-       // _GLIBCXX_RESOLVE_LIB_DEFECTS
-       // 2542. Missing const requirements for associative containers
-       static_assert(is_invocable_v<const _Compare&, const _Key&, const _Key&>,
- 	  "comparison object must be invocable as const");
- # endif // C++17
- #endif // C++11
- 
      protected:
        typedef _Rb_tree_node_base* 		_Base_ptr;
        typedef const _Rb_tree_node_base* 	_Const_Base_ptr;
--- 448,453 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 773,779 ****
  
        static const _Key&
        _S_key(_Const_Link_type __x)
!       { return _KeyOfValue()(_S_value(__x)); }
  
        static _Link_type
        _S_left(_Base_ptr __x) _GLIBCXX_NOEXCEPT
--- 762,786 ----
  
        static const _Key&
        _S_key(_Const_Link_type __x)
!       {
! #if __cplusplus >= 201103L
! 	// If we're asking for the key we're presumably using the comparison
! 	// object, and so this is a good place to sanity check it.
! 	static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{},
! 		      "comparison object must be invocable "
! 		      "with two arguments of key type");
! # if __cplusplus >= 201703L
! 	// _GLIBCXX_RESOLVE_LIB_DEFECTS
! 	// 2542. Missing const requirements for associative containers
! 	if constexpr (__is_invocable<_Compare&, const _Key&, const _Key&>{})
! 	  static_assert(
! 	      is_invocable_v<const _Compare&, const _Key&, const _Key&>,
! 	      "comparison object must be invocable as const");
! # endif // C++17
! #endif // C++11
! 
! 	return _KeyOfValue()(*__x->_M_valptr());
!       }
  
        static _Link_type
        _S_left(_Base_ptr __x) _GLIBCXX_NOEXCEPT
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 797,803 ****
  
        static const _Key&
        _S_key(_Const_Base_ptr __x)
!       { return _KeyOfValue()(_S_value(__x)); }
  
        static _Base_ptr
        _S_minimum(_Base_ptr __x) _GLIBCXX_NOEXCEPT
--- 804,810 ----
  
        static const _Key&
        _S_key(_Const_Base_ptr __x)
!       { return _S_key(static_cast<_Const_Link_type>(__x)); }
  
        static _Base_ptr
        _S_minimum(_Base_ptr __x) _GLIBCXX_NOEXCEPT
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/stl_uninitialized.h gcc-8.4.0/libstdc++-v3/include/bits/stl_uninitialized.h
*** gcc-8.3.0/libstdc++-v3/include/bits/stl_uninitialized.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/include/bits/stl_uninitialized.h	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 826,832 ****
  
  #endif
  
! #if __cplusplus > 201402L
    template <typename _ForwardIterator>
      inline void
      uninitialized_default_construct(_ForwardIterator __first,
--- 826,834 ----
  
  #endif
  
! #if __cplusplus >= 201703L
! # define __cpp_lib_raw_memory_algorithms 201606L
! 
    template <typename _ForwardIterator>
      inline void
      uninitialized_default_construct(_ForwardIterator __first,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 877,883 ****
  	 __count, __result);
        return {__res.first.base(), __res.second};
      }
! #endif
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 879,885 ----
  	 __count, __result);
        return {__res.first.base(), __res.second};
      }
! #endif // C++17
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/stl_vector.h gcc-8.4.0/libstdc++-v3/include/bits/stl_vector.h
*** gcc-8.3.0/libstdc++-v3/include/bits/stl_vector.h	Wed Jul  4 11:44:45 2018
--- gcc-8.4.0/libstdc++-v3/include/bits/stl_vector.h	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1600,1610 ****
  	{ _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); }
  
  	value_type&
! 	_M_val() { return *reinterpret_cast<_Tp*>(&__buf); }
  
        private:
! 	pointer
! 	_M_ptr() { return pointer_traits<pointer>::pointer_to(_M_val()); }
  
  	vector* _M_this;
  	typename aligned_storage<sizeof(_Tp), alignof(_Tp)>::type __buf;
--- 1600,1610 ----
  	{ _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); }
  
  	value_type&
! 	_M_val() { return *_M_ptr(); }
  
        private:
! 	_Tp*
! 	_M_ptr() { return reinterpret_cast<_Tp*>(&__buf); }
  
  	vector* _M_this;
  	typename aligned_storage<sizeof(_Tp), alignof(_Tp)>::type __buf;
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/unique_ptr.h gcc-8.4.0/libstdc++-v3/include/bits/unique_ptr.h
*** gcc-8.3.0/libstdc++-v3/include/bits/unique_ptr.h	Tue Oct 23 15:29:03 2018
--- gcc-8.4.0/libstdc++-v3/include/bits/unique_ptr.h	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 151,156 ****
--- 151,164 ----
        _Dp&       _M_deleter() { return std::get<1>(_M_t); }
        const _Dp& _M_deleter() const { return std::get<1>(_M_t); }
  
+       void
+       swap(__uniq_ptr_impl& __rhs) noexcept
+       {
+ 	using std::swap;
+ 	swap(this->_M_ptr(), __rhs._M_ptr());
+ 	swap(this->_M_deleter(), __rhs._M_deleter());
+       }
+ 
      private:
        tuple<pointer, _Dp> _M_t;
      };
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 174,187 ****
        // unique_ptr
        template<typename _Up, typename _Ep>
  	using __safe_conversion_up = __and_<
! 	        is_convertible<typename unique_ptr<_Up, _Ep>::pointer, pointer>,
!                 __not_<is_array<_Up>>,
!                 __or_<__and_<is_reference<deleter_type>,
!                              is_same<deleter_type, _Ep>>,
!                       __and_<__not_<is_reference<deleter_type>>,
!                              is_convertible<_Ep, deleter_type>>
!                 >
!               >;
  
        // Constructors.
  
--- 182,190 ----
        // unique_ptr
        template<typename _Up, typename _Ep>
  	using __safe_conversion_up = __and_<
! 	  is_convertible<typename unique_ptr<_Up, _Ep>::pointer, pointer>,
! 	  __not_<is_array<_Up>>
!         >;
  
        // Constructors.
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 386,393 ****
        void
        swap(unique_ptr& __u) noexcept
        {
! 	using std::swap;
! 	swap(_M_t, __u._M_t);
        }
  
        // Disable copy from lvalue.
--- 389,396 ----
        void
        swap(unique_ptr& __u) noexcept
        {
! 	static_assert(__is_swappable<_Dp>::value, "deleter must be swappable");
! 	_M_t.swap(__u._M_t);
        }
  
        // Disable copy from lvalue.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 425,440 ****
        // helper template for detecting a safe conversion from another
        // unique_ptr
        template<typename _Up, typename _Ep,
!                typename _Up_up = unique_ptr<_Up, _Ep>,
! 	       typename _Up_element_type = typename _Up_up::element_type>
  	using __safe_conversion_up = __and_<
            is_array<_Up>,
            is_same<pointer, element_type*>,
!           is_same<typename _Up_up::pointer, _Up_element_type*>,
!           is_convertible<_Up_element_type(*)[], element_type(*)[]>,
!           __or_<__and_<is_reference<deleter_type>, is_same<deleter_type, _Ep>>,
!                 __and_<__not_<is_reference<deleter_type>>,
!                        is_convertible<_Ep, deleter_type>>>
          >;
  
        // helper template for detecting a safe conversion from a raw pointer
--- 428,441 ----
        // helper template for detecting a safe conversion from another
        // unique_ptr
        template<typename _Up, typename _Ep,
!                typename _UPtr = unique_ptr<_Up, _Ep>,
! 	       typename _UP_pointer = typename _UPtr::pointer,
! 	       typename _UP_element_type = typename _UPtr::element_type>
  	using __safe_conversion_up = __and_<
            is_array<_Up>,
            is_same<pointer, element_type*>,
!           is_same<_UP_pointer, _UP_element_type*>,
!           is_convertible<_UP_element_type(*)[], element_type(*)[]>
          >;
  
        // helper template for detecting a safe conversion from a raw pointer
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 519,526 ****
  		typename = _DeleterConstraint<_Up>>
  	constexpr unique_ptr(nullptr_t) noexcept : _M_t() { }
  
!       template<typename _Up, typename _Ep,
! 	       typename = _Require<__safe_conversion_up<_Up, _Ep>>>
  	unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept
  	: _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter()))
  	{ }
--- 520,530 ----
  		typename = _DeleterConstraint<_Up>>
  	constexpr unique_ptr(nullptr_t) noexcept : _M_t() { }
  
!       template<typename _Up, typename _Ep, typename = _Require<
! 	       __safe_conversion_up<_Up, _Ep>,
! 	       typename conditional<is_reference<_Dp>::value,
! 				    is_same<_Ep, _Dp>,
! 				    is_convertible<_Ep, _Dp>>::type>>
  	unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept
  	: _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter()))
  	{ }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 655,662 ****
        void
        swap(unique_ptr& __u) noexcept
        {
! 	using std::swap;
! 	swap(_M_t, __u._M_t);
        }
  
        // Disable copy from lvalue.
--- 659,666 ----
        void
        swap(unique_ptr& __u) noexcept
        {
! 	static_assert(__is_swappable<_Dp>::value, "deleter must be swappable");
! 	_M_t.swap(__u._M_t);
        }
  
        // Disable copy from lvalue.
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/bits/uses_allocator.h gcc-8.4.0/libstdc++-v3/include/bits/uses_allocator.h
*** gcc-8.3.0/libstdc++-v3/include/bits/uses_allocator.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/include/bits/uses_allocator.h	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 83,96 ****
    template<typename _Tp, typename _Alloc, typename... _Args>
      struct __uses_alloc<true, _Tp, _Alloc, _Args...>
      : conditional<
!         is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value,
          __uses_alloc1<_Alloc>,
         	__uses_alloc2<_Alloc>>::type
      {
        static_assert(__or_<
! 	  is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>,
! 	  is_constructible<_Tp, _Args..., _Alloc>>::value, "construction with"
! 	  " an allocator must be possible if uses_allocator is true");
      };
  
    template<typename _Tp, typename _Alloc, typename... _Args>
--- 83,99 ----
    template<typename _Tp, typename _Alloc, typename... _Args>
      struct __uses_alloc<true, _Tp, _Alloc, _Args...>
      : conditional<
!         is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>::value,
          __uses_alloc1<_Alloc>,
         	__uses_alloc2<_Alloc>>::type
      {
+       // _GLIBCXX_RESOLVE_LIB_DEFECTS
+       // 2586. Wrong value category used in scoped_allocator_adaptor::construct
        static_assert(__or_<
! 	  is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>,
! 	  is_constructible<_Tp, _Args..., const _Alloc&>>::value,
! 	  "construction with an allocator must be possible"
! 	  " if uses_allocator is true");
      };
  
    template<typename _Tp, typename _Alloc, typename... _Args>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/experimental/any gcc-8.4.0/libstdc++-v3/include/experimental/any
*** gcc-8.3.0/libstdc++-v3/include/experimental/any	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/include/experimental/any	Wed Mar  4 08:30:03 2020
*************** inline namespace fundamentals_v1
*** 300,306 ****
      _Storage _M_storage;
  
      template<typename _Tp>
!       friend void* __any_caster(const any* __any);
  
      // Manage in-place contained object.
      template<typename _Tp>
--- 300,307 ----
      _Storage _M_storage;
  
      template<typename _Tp>
!       friend enable_if_t<is_object<_Tp>::value, void*>
!       __any_caster(const any* __any);
  
      // Manage in-place contained object.
      template<typename _Tp>
*************** inline namespace fundamentals_v1
*** 410,428 ****
      }
    // @}
  
    template<typename _Tp>
!     void* __any_caster(const any* __any)
      {
!       struct _None { };
!       using _Up = decay_t<_Tp>;
!       using _Vp = conditional_t<is_copy_constructible<_Up>::value, _Up, _None>;
!       if (__any->_M_manager != &any::_Manager<_Vp>::_S_manage)
! 	return nullptr;
!       any::_Arg __arg;
!       __any->_M_manager(any::_Op_access, __any, &__arg);
!       return __arg._M_obj;
      }
  
    /**
     * @brief Access the contained object.
     *
--- 411,455 ----
      }
    // @}
  
+   /// @cond undocumented
    template<typename _Tp>
!     enable_if_t<is_object<_Tp>::value, void*>
!     __any_caster(const any* __any)
      {
!       // any_cast<T> returns non-null if __any->type() == typeid(T) and
!       // typeid(T) ignores cv-qualifiers so remove them:
!       using _Up = remove_cv_t<_Tp>;
!       // The contained value has a decayed type, so if decay_t<U> is not U,
!       // then it's not possible to have a contained value of type U.
!       using __does_not_decay = is_same<decay_t<_Up>, _Up>;
!       // Only copy constructible types can be used for contained values.
!       using __is_copyable = is_copy_constructible<_Up>;
!       // If the type _Tp could never be stored in an any we don't want to
!       // instantiate _Manager<_Tp>, so use _Manager<any::_Op> instead, which
!       // is explicitly specialized and has a no-op _S_manage function.
!       using _Vp = conditional_t<__and_<__does_not_decay, __is_copyable>::value,
! 				_Up, any::_Op>;
!       // First try comparing function addresses, which works without RTTI
!       if (__any->_M_manager == &any::_Manager<_Vp>::_S_manage
! #if __cpp_rtti
! 	  || __any->type() == typeid(_Tp)
! #endif
! 	  )
! 	{
! 	  any::_Arg __arg;
! 	  __any->_M_manager(any::_Op_access, __any, &__arg);
! 	  return __arg._M_obj;
! 	}
!       return nullptr;
      }
  
+   // This overload exists so that std::any_cast<void(*)()>(a) is well-formed.
+   template<typename _Tp>
+     enable_if_t<!is_object<_Tp>::value, _Tp*>
+     __any_caster(const any*) noexcept
+     { return nullptr; }
+   /// @endcond
+ 
    /**
     * @brief Access the contained object.
     *
*************** inline namespace fundamentals_v1
*** 517,522 ****
--- 544,557 ----
        }
      }
  
+   // Dummy specialization used by __any_caster.
+   template<>
+     struct any::_Manager_internal<any::_Op>
+     {
+       static void
+       _S_manage(_Op, const any*, _Arg*) { }
+     };
+ 
    // @} group any
  } // namespace fundamentals_v1
  } // namespace experimental
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/experimental/bits/fs_path.h gcc-8.4.0/libstdc++-v3/include/experimental/bits/fs_path.h
*** gcc-8.3.0/libstdc++-v3/include/experimental/bits/fs_path.h	Thu Jan 10 16:06:49 2019
--- gcc-8.4.0/libstdc++-v3/include/experimental/bits/fs_path.h	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 120,130 ****
        : decltype(__is_path_src(std::declval<_Source>(), 0))
        { };
  
!     template<typename _Tp1, typename _Tp2 = void>
        using _Path = typename
! 	std::enable_if<__and_<__not_<is_same<typename remove_cv<_Tp1>::type,
! 					     path>>,
! 			      __not_<is_void<_Tp1>>,
  			      __constructible_from<_Tp1, _Tp2>>::value,
  		       path>::type;
  
--- 120,131 ----
        : decltype(__is_path_src(std::declval<_Source>(), 0))
        { };
  
!     template<typename _Tp1, typename _Tp2 = void,
! 	     typename _Tp1_nocv = typename remove_cv<_Tp1>::type,
! 	     typename _Tp1_noptr = typename remove_pointer<_Tp1>::type>
        using _Path = typename
! 	std::enable_if<__and_<__not_<is_same<_Tp1_nocv, path>>,
! 			      __not_<is_void<_Tp1_noptr>>,
  			      __constructible_from<_Tp1, _Tp2>>::value,
  		       path>::type;
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 185,191 ****
      path(path&& __p) noexcept
      : _M_pathname(std::move(__p._M_pathname)), _M_type(__p._M_type)
      {
!       _M_split_cmpts();
        __p.clear();
      }
  
--- 186,193 ----
      path(path&& __p) noexcept
      : _M_pathname(std::move(__p._M_pathname)), _M_type(__p._M_type)
      {
!       if (_M_type == _Type::_Multi)
! 	_M_split_cmpts();
        __p.clear();
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 459,465 ****
  	return _S_convert_loc(__tmp.data(), __tmp.data()+__tmp.size(), __loc);
        }
  
!     bool _S_is_dir_sep(value_type __ch)
      {
  #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
        return __ch == L'/' || __ch == preferred_separator;
--- 461,467 ----
  	return _S_convert_loc(__tmp.data(), __tmp.data()+__tmp.size(), __loc);
        }
  
!     static bool _S_is_dir_sep(value_type __ch)
      {
  #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
        return __ch == L'/' || __ch == preferred_separator;
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/experimental/type_traits gcc-8.4.0/libstdc++-v3/include/experimental/type_traits
*** gcc-8.3.0/libstdc++-v3/include/experimental/type_traits	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/include/experimental/type_traits	Wed Mar  4 08:30:03 2020
*************** template<typename _Default, template<typ
*** 251,262 ****
  template<typename _Default, template<typename...> class _Op, typename... _Args>
    using detected_or_t = typename detected_or<_Default, _Op, _Args...>::type;
  
! template<typename Expected, template<typename...> class _Op, typename... _Args>
!   using is_detected_exact = is_same<Expected, detected_t<_Op, _Args...>>;
  
! template<typename Expected, template<typename...> class _Op, typename... _Args>
    constexpr bool is_detected_exact_v
!     = is_detected_exact<Expected, _Op, _Args...>::value;
  
  template<typename _To, template<typename...> class _Op, typename... _Args>
    using is_detected_convertible
--- 251,262 ----
  template<typename _Default, template<typename...> class _Op, typename... _Args>
    using detected_or_t = typename detected_or<_Default, _Op, _Args...>::type;
  
! template<typename _Expected, template<typename...> class _Op, typename... _Args>
!   using is_detected_exact = is_same<_Expected, detected_t<_Op, _Args...>>;
  
! template<typename _Expected, template<typename...> class _Op, typename... _Args>
    constexpr bool is_detected_exact_v
!     = is_detected_exact<_Expected, _Op, _Args...>::value;
  
  template<typename _To, template<typename...> class _Op, typename... _Args>
    using is_detected_convertible
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/std/any gcc-8.4.0/libstdc++-v3/include/std/any
*** gcc-8.3.0/libstdc++-v3/include/std/any	Tue Feb 27 11:33:30 2018
--- gcc-8.4.0/libstdc++-v3/include/std/any	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 66,72 ****
  #endif
    }
  
! #define __cpp_lib_any 201603
  
    /**
     *  @brief A type-safe container of any type.
--- 66,72 ----
  #endif
    }
  
! #define __cpp_lib_any 201606L
  
    /**
     *  @brief A type-safe container of any type.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 503,522 ****
      }
    // @}
  
    template<typename _Tp>
      void* __any_caster(const any* __any)
      {
!       if constexpr (is_copy_constructible_v<decay_t<_Tp>>)
  	{
! 	  if (__any->_M_manager == &any::_Manager<decay_t<_Tp>>::_S_manage)
! 	    {
! 	      any::_Arg __arg;
! 	      __any->_M_manager(any::_Op_access, __any, &__arg);
! 	      return __arg._M_obj;
! 	    }
  	}
        return nullptr;
      }
  
    /**
     * @brief Access the contained object.
--- 503,536 ----
      }
    // @}
  
+   /// @cond undocumented
    template<typename _Tp>
      void* __any_caster(const any* __any)
      {
!       // any_cast<T> returns non-null if __any->type() == typeid(T) and
!       // typeid(T) ignores cv-qualifiers so remove them:
!       using _Up = remove_cv_t<_Tp>;
!       // The contained value has a decayed type, so if decay_t<U> is not U,
!       // then it's not possible to have a contained value of type U:
!       if constexpr (!is_same_v<decay_t<_Up>, _Up>)
! 	return nullptr;
!       // Only copy constructible types can be used for contained values:
!       else if constexpr (!is_copy_constructible_v<_Up>)
! 	return nullptr;
!       // First try comparing function addresses, which works without RTTI
!       else if (__any->_M_manager == &any::_Manager<_Up>::_S_manage
! #if __cpp_rtti
! 	  || __any->type() == typeid(_Tp)
! #endif
! 	  )
  	{
! 	  any::_Arg __arg;
! 	  __any->_M_manager(any::_Op_access, __any, &__arg);
! 	  return __arg._M_obj;
  	}
        return nullptr;
      }
+   /// @endcond
  
    /**
     * @brief Access the contained object.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 532,547 ****
    template<typename _ValueType>
      inline const _ValueType* any_cast(const any* __any) noexcept
      {
!       if (__any)
! 	return static_cast<_ValueType*>(__any_caster<_ValueType>(__any));
        return nullptr;
      }
  
    template<typename _ValueType>
      inline _ValueType* any_cast(any* __any) noexcept
      {
!       if (__any)
! 	return static_cast<_ValueType*>(__any_caster<_ValueType>(__any));
        return nullptr;
      }
    // @}
--- 546,563 ----
    template<typename _ValueType>
      inline const _ValueType* any_cast(const any* __any) noexcept
      {
!       if constexpr (is_object_v<_ValueType>)
! 	if (__any)
! 	  return static_cast<_ValueType*>(__any_caster<_ValueType>(__any));
        return nullptr;
      }
  
    template<typename _ValueType>
      inline _ValueType* any_cast(any* __any) noexcept
      {
!       if constexpr (is_object_v<_ValueType>)
! 	if (__any)
! 	  return static_cast<_ValueType*>(__any_caster<_ValueType>(__any));
        return nullptr;
      }
    // @}
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/std/optional gcc-8.4.0/libstdc++-v3/include/std/optional
*** gcc-8.3.0/libstdc++-v3/include/std/optional	Wed Jan  9 10:17:10 2019
--- gcc-8.4.0/libstdc++-v3/include/std/optional	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 51,57 ****
     *  @{
     */
  
! #define __cpp_lib_optional 201603
  
    template<typename _Tp>
      class optional;
--- 51,57 ----
     *  @{
     */
  
! #define __cpp_lib_optional 201606L
  
    template<typename _Tp>
      class optional;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1256,1262 ****
  	}
  
        template<typename _Up>
! 	_Tp
  	value_or(_Up&& __u) &&
  	{
  	  static_assert(is_move_constructible_v<_Tp>);
--- 1256,1262 ----
  	}
  
        template<typename _Up>
! 	constexpr _Tp
  	value_or(_Up&& __u) &&
  	{
  	  static_assert(is_move_constructible_v<_Tp>);
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/std/ostream gcc-8.4.0/libstdc++-v3/include/std/ostream
*** gcc-8.3.0/libstdc++-v3/include/std/ostream	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/include/std/ostream	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 444,449 ****
--- 444,451 ----
        explicit
        sentry(basic_ostream<_CharT, _Traits>& __os);
  
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
        /**
         *  @brief  Possibly flushes the stream.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 461,466 ****
--- 463,469 ----
  	      _M_os.setstate(ios_base::badbit);
  	  }
        }
+ #pragma GCC diagnostic pop
  
        /**
         *  @brief  Quick status checking.
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/std/type_traits gcc-8.4.0/libstdc++-v3/include/std/type_traits
*** gcc-8.3.0/libstdc++-v3/include/std/type_traits	Fri Feb  8 14:14:57 2019
--- gcc-8.4.0/libstdc++-v3/include/std/type_traits	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 867,924 ****
      : public __is_nt_destructible_safe<_Tp>::type
      { };
  
!   struct __do_is_default_constructible_impl
!   {
!     template<typename _Tp, typename = decltype(_Tp())>
!       static true_type __test(int);
! 
!     template<typename>
!       static false_type __test(...);
!   };
! 
!   template<typename _Tp>
!     struct __is_default_constructible_impl
!     : public __do_is_default_constructible_impl
!     {
!       typedef decltype(__test<_Tp>(0)) type;
!     };
! 
!   template<typename _Tp>
!     struct __is_default_constructible_atom
!     : public __and_<__not_<is_void<_Tp>>,
!                     __is_default_constructible_impl<_Tp>>
!     { };
! 
!   template<typename _Tp, bool = is_array<_Tp>::value>
!     struct __is_default_constructible_safe;
! 
!   // The following technique is a workaround for a current core language
!   // restriction, which does not allow for array types to occur in
!   // functional casts of the form T().  Complete arrays can be default-
!   // constructed, if the element type is default-constructible, but
!   // arrays with unknown bounds are not.
!   template<typename _Tp>
!     struct __is_default_constructible_safe<_Tp, true>
!     : public __and_<__is_array_known_bounds<_Tp>,
! 		    __is_default_constructible_atom<typename
!                       remove_all_extents<_Tp>::type>>
!     { };
! 
!   template<typename _Tp>
!     struct __is_default_constructible_safe<_Tp, false>
!     : public __is_default_constructible_atom<_Tp>::type
      { };
  
    /// is_default_constructible
    template<typename _Tp>
      struct is_default_constructible
!     : public __is_default_constructible_safe<_Tp>::type
!     { };
! 
!   /// is_constructible
!   template<typename _Tp, typename... _Args>
!     struct is_constructible
!       : public __bool_constant<__is_constructible(_Tp, _Args...)>
      { };
  
    template<typename _Tp, bool = __is_referenceable<_Tp>::value>
--- 867,882 ----
      : public __is_nt_destructible_safe<_Tp>::type
      { };
  
!   /// is_constructible
!   template<typename _Tp, typename... _Args>
!     struct is_constructible
!       : public __bool_constant<__is_constructible(_Tp, _Args...)>
      { };
  
    /// is_default_constructible
    template<typename _Tp>
      struct is_default_constructible
!     : public is_constructible<_Tp>::type
      { };
  
    template<typename _Tp, bool = __is_referenceable<_Tp>::value>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2024,2032 ****
      struct __expanded_common_type_wrapper<__failure_type, _Args...>
      { typedef __failure_type type; };
  
    template<typename _Tp>
      struct common_type<_Tp>
!     { typedef typename decay<_Tp>::type type; };
  
    template<typename _Tp, typename _Up>
      struct common_type<_Tp, _Up>
--- 1982,1995 ----
      struct __expanded_common_type_wrapper<__failure_type, _Args...>
      { typedef __failure_type type; };
  
+   template<>
+     struct common_type<>
+     { };
+ 
    template<typename _Tp>
      struct common_type<_Tp>
!     : common_type<_Tp, _Tp>
!     { };
  
    template<typename _Tp, typename _Up>
      struct common_type<_Tp, _Up>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/std/variant gcc-8.4.0/libstdc++-v3/include/std/variant
*** gcc-8.3.0/libstdc++-v3/include/std/variant	Tue Aug  7 21:38:50 2018
--- gcc-8.4.0/libstdc++-v3/include/std/variant	Wed Mar  4 08:30:03 2020
*************** namespace __variant
*** 68,74 ****
  } // namespace __variant
  } // namespace __detail
  
! #define __cpp_lib_variant 201603
  
    template<typename... _Types> class tuple;
    template<typename... _Types> class variant;
--- 68,74 ----
  } // namespace __variant
  } // namespace __detail
  
! #define __cpp_lib_variant 201606L
  
    template<typename... _Types> class tuple;
    template<typename... _Types> class variant;
*************** namespace __variant
*** 809,817 ****
  	{
  	  using _Alternative = variant_alternative_t<__index, _Next>;
  	  __element = __gen_vtable_impl<
! 	    remove_reference_t<
! 	      decltype(__element)>, tuple<_Variants...>,
! 	      std::index_sequence<__indices..., __index>>::_S_apply();
  	}
      };
  
--- 809,816 ----
  	{
  	  using _Alternative = variant_alternative_t<__index, _Next>;
  	  __element = __gen_vtable_impl<
! 	    remove_reference_t<decltype(__element)>, tuple<_Variants...>,
! 	    std::index_sequence<__indices..., __index>>::_S_apply();
  	}
      };
  
*************** namespace __variant
*** 824,834 ****
        using _Array_type =
  	  _Multi_array<_Result_type (*)(_Visitor&&, _Variants...)>;
  
!       decltype(auto)
!       static constexpr __visit_invoke(_Visitor&& __visitor, _Variants... __vars)
        {
  	return std::__invoke(std::forward<_Visitor>(__visitor),
! 	    std::get<__indices>(std::forward<_Variants>(__vars))...);
        }
  
        static constexpr auto
--- 823,833 ----
        using _Array_type =
  	  _Multi_array<_Result_type (*)(_Visitor&&, _Variants...)>;
  
!       static constexpr decltype(auto)
!       __visit_invoke(_Visitor&& __visitor, _Variants... __vars)
        {
  	return std::__invoke(std::forward<_Visitor>(__visitor),
! 	    __variant::__get<__indices>(std::forward<_Variants>(__vars))...);
        }
  
        static constexpr auto
*************** namespace __variant
*** 869,876 ****
  } // namespace __detail
  
    template<typename _Tp, typename... _Types>
!     inline constexpr bool holds_alternative(const variant<_Types...>& __v)
!     noexcept
      {
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
--- 868,875 ----
  } // namespace __detail
  
    template<typename _Tp, typename... _Types>
!     constexpr bool
!     holds_alternative(const variant<_Types...>& __v) noexcept
      {
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
*************** namespace __variant
*** 878,884 ****
      }
  
    template<typename _Tp, typename... _Types>
!     constexpr inline _Tp& get(variant<_Types...>& __v)
      {
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
--- 877,883 ----
      }
  
    template<typename _Tp, typename... _Types>
!     constexpr _Tp& get(variant<_Types...>& __v)
      {
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
*************** namespace __variant
*** 887,893 ****
      }
  
    template<typename _Tp, typename... _Types>
!     constexpr inline _Tp&& get(variant<_Types...>&& __v)
      {
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
--- 886,892 ----
      }
  
    template<typename _Tp, typename... _Types>
!     constexpr _Tp&& get(variant<_Types...>&& __v)
      {
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
*************** namespace __variant
*** 897,903 ****
      }
  
    template<typename _Tp, typename... _Types>
!     constexpr inline const _Tp& get(const variant<_Types...>& __v)
      {
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
--- 896,902 ----
      }
  
    template<typename _Tp, typename... _Types>
!     constexpr const _Tp& get(const variant<_Types...>& __v)
      {
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
*************** namespace __variant
*** 906,912 ****
      }
  
    template<typename _Tp, typename... _Types>
!     constexpr inline const _Tp&& get(const variant<_Types...>&& __v)
      {
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
--- 905,911 ----
      }
  
    template<typename _Tp, typename... _Types>
!     constexpr const _Tp&& get(const variant<_Types...>&& __v)
      {
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
*************** namespace __variant
*** 916,923 ****
      }
  
    template<size_t _Np, typename... _Types>
!     constexpr inline
!     add_pointer_t<variant_alternative_t<_Np, variant<_Types...>>>
      get_if(variant<_Types...>* __ptr) noexcept
      {
        using _Alternative_type = variant_alternative_t<_Np, variant<_Types...>>;
--- 915,921 ----
      }
  
    template<size_t _Np, typename... _Types>
!     constexpr add_pointer_t<variant_alternative_t<_Np, variant<_Types...>>>
      get_if(variant<_Types...>* __ptr) noexcept
      {
        using _Alternative_type = variant_alternative_t<_Np, variant<_Types...>>;
*************** namespace __variant
*** 930,936 ****
      }
  
    template<size_t _Np, typename... _Types>
!     constexpr inline
      add_pointer_t<const variant_alternative_t<_Np, variant<_Types...>>>
      get_if(const variant<_Types...>* __ptr) noexcept
      {
--- 928,934 ----
      }
  
    template<size_t _Np, typename... _Types>
!     constexpr
      add_pointer_t<const variant_alternative_t<_Np, variant<_Types...>>>
      get_if(const variant<_Types...>* __ptr) noexcept
      {
*************** namespace __variant
*** 944,950 ****
      }
  
    template<typename _Tp, typename... _Types>
!     constexpr inline add_pointer_t<_Tp>
      get_if(variant<_Types...>* __ptr) noexcept
      {
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
--- 942,948 ----
      }
  
    template<typename _Tp, typename... _Types>
!     constexpr add_pointer_t<_Tp>
      get_if(variant<_Types...>* __ptr) noexcept
      {
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
*************** namespace __variant
*** 955,961 ****
      }
  
    template<typename _Tp, typename... _Types>
!     constexpr inline add_pointer_t<const _Tp>
      get_if(const variant<_Types...>* __ptr)
      noexcept
      {
--- 953,959 ----
      }
  
    template<typename _Tp, typename... _Types>
!     constexpr add_pointer_t<const _Tp>
      get_if(const variant<_Types...>* __ptr)
      noexcept
      {
*************** namespace __variant
*** 1076,1081 ****
--- 1074,1090 ----
  
        using _Traits = __detail::__variant::_Traits<_Types...>;
  
+       template<typename _Tp>
+ 	struct __is_in_place_tag : false_type { };
+       template<typename _Tp>
+ 	struct __is_in_place_tag<in_place_type_t<_Tp>> : true_type { };
+       template<size_t _Np>
+ 	struct __is_in_place_tag<in_place_index_t<_Np>> : true_type { };
+ 
+       template<typename _Tp>
+ 	static constexpr bool __not_in_place_tag
+ 	  = !__is_in_place_tag<decay_t<_Tp>>::value;
+ 
      public:
        variant() = default;
        variant(const variant& __rhs) = default;
*************** namespace __variant
*** 1087,1092 ****
--- 1096,1102 ----
        template<typename _Tp,
  	       typename = enable_if_t<!is_same_v<decay_t<_Tp>, variant>>,
  	       typename = enable_if_t<(sizeof...(_Types)>0)>,
+ 	       typename = enable_if_t<__not_in_place_tag<_Tp>>,
  	       typename = enable_if_t<__exactly_once<__accepted_type<_Tp&&>>
  			  && is_constructible_v<__accepted_type<_Tp&&>, _Tp&&>>>
  	constexpr
*************** namespace __variant
*** 1275,1281 ****
  	  { &__detail::__variant::__erased_##__NAME< \
  		const variant&, __indices>... }; \
        template<size_t... __indices> \
! 	constexpr inline bool \
  	_M_##__NAME(const variant& __rhs, \
  		    std::index_sequence<__indices...>) const \
  	{ \
--- 1285,1291 ----
  	  { &__detail::__variant::__erased_##__NAME< \
  		const variant&, __indices>... }; \
        template<size_t... __indices> \
! 	constexpr bool \
  	_M_##__NAME(const variant& __rhs, \
  		    std::index_sequence<__indices...>) const \
  	{ \
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/tr2/dynamic_bitset gcc-8.4.0/libstdc++-v3/include/tr2/dynamic_bitset
*** gcc-8.3.0/libstdc++-v3/include/tr2/dynamic_bitset	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/include/tr2/dynamic_bitset	Wed Mar  4 08:30:03 2020
***************
*** 34,43 ****
  #include <limits>
  #include <vector>
  #include <string>
! #include <memory> // For std::allocator
! #include <bits/functexcept.h>   // For invalid_argument, out_of_range,
! 				// overflow_error
! #include <iosfwd>
  #include <bits/cxxabi_forced.h>
  
  namespace std _GLIBCXX_VISIBILITY(default)
--- 34,42 ----
  #include <limits>
  #include <vector>
  #include <string>
! #include <istream>
! #include <bits/functexcept.h>
! #include <bits/stl_algo.h>	// For fill
  #include <bits/cxxabi_forced.h>
  
  namespace std _GLIBCXX_VISIBILITY(default)
*************** namespace tr2
*** 76,116 ****
        std::vector<block_type, allocator_type> _M_w;
  
        explicit
!       __dynamic_bitset_base(const allocator_type& __alloc = allocator_type())
        : _M_w(__alloc)
        { }
  
!       explicit
!       __dynamic_bitset_base(__dynamic_bitset_base&& __b)
!       { this->_M_w.swap(__b._M_w); }
  
        explicit
        __dynamic_bitset_base(size_type __nbits, unsigned long long __val = 0ULL,
  			   const allocator_type& __alloc = allocator_type())
!       : _M_w(__nbits / _S_bits_per_block
! 	     + (__nbits % _S_bits_per_block > 0),
! 	     __val, __alloc)
        {
! 	unsigned long long __mask = ~static_cast<block_type>(0);
! 	size_t __n = std::min(this->_M_w.size(),
! 			      sizeof(unsigned long long) / sizeof(block_type));
! 	for (size_t __i = 0; __i < __n; ++__i)
  	  {
! 	    this->_M_w[__i] = (__val & __mask) >> (__i * _S_bits_per_block);
! 	    __mask <<= _S_bits_per_block;
  	  }
        }
  
        void
!       _M_assign(const __dynamic_bitset_base& __b)
!       { this->_M_w = __b._M_w; }
! 
!       void
!       _M_swap(__dynamic_bitset_base& __b)
        { this->_M_w.swap(__b._M_w); }
  
        void
!       _M_clear()
        { this->_M_w.clear(); }
  
        void
--- 75,122 ----
        std::vector<block_type, allocator_type> _M_w;
  
        explicit
!       __dynamic_bitset_base(const allocator_type& __alloc)
        : _M_w(__alloc)
        { }
  
!       __dynamic_bitset_base() = default;
!       __dynamic_bitset_base(const __dynamic_bitset_base&) = default;
!       __dynamic_bitset_base(__dynamic_bitset_base&& __b) = default;
!       __dynamic_bitset_base& operator=(const __dynamic_bitset_base&) = default;
!       __dynamic_bitset_base& operator=(__dynamic_bitset_base&&) = default;
!       ~__dynamic_bitset_base() = default;
  
        explicit
        __dynamic_bitset_base(size_type __nbits, unsigned long long __val = 0ULL,
  			   const allocator_type& __alloc = allocator_type())
!       : _M_w(__nbits / _S_bits_per_block + (__nbits % _S_bits_per_block > 0),
! 	     block_type(0), __alloc)
        {
! 	if (__nbits < std::numeric_limits<decltype(__val)>::digits)
! 	  __val &= ~(-1ULL << __nbits);
! 	if (__val == 0)
! 	  return;
! 
! 	if _GLIBCXX17_CONSTEXPR (sizeof(__val) == sizeof(block_type))
! 	  _M_w[0] = __val;
! 	else
  	  {
! 	    const size_t __n
! 	      = std::min(_M_w.size(), sizeof(__val) / sizeof(block_type));
! 	    for (size_t __i = 0; __val && __i < __n; ++__i)
! 	      {
! 		_M_w[__i] = static_cast<block_type>(__val);
! 		__val >>= _S_bits_per_block;
! 	      }
  	  }
        }
  
        void
!       _M_swap(__dynamic_bitset_base& __b) noexcept
        { this->_M_w.swap(__b._M_w); }
  
        void
!       _M_clear() noexcept
        { this->_M_w.clear(); }
  
        void
*************** namespace tr2
*** 129,135 ****
        }
  
        allocator_type
!       _M_get_allocator() const
        { return this->_M_w.get_allocator(); }
  
        static size_type
--- 135,141 ----
        }
  
        allocator_type
!       _M_get_allocator() const noexcept
        { return this->_M_w.get_allocator(); }
  
        static size_type
*************** namespace tr2
*** 149,171 ****
        { return (static_cast<block_type>(1)) << _S_whichbit(__pos); }
  
        block_type&
!       _M_getword(size_type __pos)
        { return this->_M_w[_S_whichword(__pos)]; }
  
        block_type
!       _M_getword(size_type __pos) const
        { return this->_M_w[_S_whichword(__pos)]; }
  
        block_type&
!       _M_hiword()
        { return this->_M_w[_M_w.size() - 1]; }
  
        block_type
!       _M_hiword() const
        { return this->_M_w[_M_w.size() - 1]; }
  
        void
!       _M_do_and(const __dynamic_bitset_base& __x)
        {
  	if (__x._M_w.size() == this->_M_w.size())
  	  for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
--- 155,177 ----
        { return (static_cast<block_type>(1)) << _S_whichbit(__pos); }
  
        block_type&
!       _M_getword(size_type __pos) noexcept
        { return this->_M_w[_S_whichword(__pos)]; }
  
        block_type
!       _M_getword(size_type __pos) const noexcept
        { return this->_M_w[_S_whichword(__pos)]; }
  
        block_type&
!       _M_hiword() noexcept
        { return this->_M_w[_M_w.size() - 1]; }
  
        block_type
!       _M_hiword() const noexcept
        { return this->_M_w[_M_w.size() - 1]; }
  
        void
!       _M_do_and(const __dynamic_bitset_base& __x) noexcept
        {
  	if (__x._M_w.size() == this->_M_w.size())
  	  for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
*************** namespace tr2
*** 175,181 ****
        }
  
        void
!       _M_do_or(const __dynamic_bitset_base& __x)
        {
  	if (__x._M_w.size() == this->_M_w.size())
  	  for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
--- 181,187 ----
        }
  
        void
!       _M_do_or(const __dynamic_bitset_base& __x) noexcept
        {
  	if (__x._M_w.size() == this->_M_w.size())
  	  for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
*************** namespace tr2
*** 185,191 ****
        }
  
        void
!       _M_do_xor(const __dynamic_bitset_base& __x)
        {
  	if (__x._M_w.size() == this->_M_w.size())
  	  for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
--- 191,197 ----
        }
  
        void
!       _M_do_xor(const __dynamic_bitset_base& __x) noexcept
        {
  	if (__x._M_w.size() == this->_M_w.size())
  	  for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
*************** namespace tr2
*** 195,201 ****
        }
  
        void
!       _M_do_dif(const __dynamic_bitset_base& __x)
        {
  	if (__x._M_w.size() == this->_M_w.size())
  	  for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
--- 201,207 ----
        }
  
        void
!       _M_do_dif(const __dynamic_bitset_base& __x) noexcept
        {
  	if (__x._M_w.size() == this->_M_w.size())
  	  for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
*************** namespace tr2
*** 211,238 ****
        _M_do_right_shift(size_t __shift);
  
        void
!       _M_do_flip()
        {
  	for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
  	  this->_M_w[__i] = ~this->_M_w[__i];
        }
  
        void
!       _M_do_set()
        {
  	for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
! 	  this->_M_w[__i] = ~static_cast<block_type>(0);
        }
  
        void
!       _M_do_reset()
        {
! 	for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
! 	  this->_M_w[__i] = static_cast<block_type>(0);
        }
  
        bool
!       _M_is_equal(const __dynamic_bitset_base& __x) const
        {
  	if (__x._M_w.size() == this->_M_w.size())
  	  {
--- 217,243 ----
        _M_do_right_shift(size_t __shift);
  
        void
!       _M_do_flip() noexcept
        {
  	for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
  	  this->_M_w[__i] = ~this->_M_w[__i];
        }
  
        void
!       _M_do_set() noexcept
        {
  	for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
! 	  this->_M_w[__i] = static_cast<block_type>(-1);
        }
  
        void
!       _M_do_reset() noexcept
        {
! 	std::fill(_M_w.begin(), _M_w.end(), static_cast<block_type>(0));
        }
  
        bool
!       _M_is_equal(const __dynamic_bitset_base& __x) const noexcept
        {
  	if (__x._M_w.size() == this->_M_w.size())
  	  {
*************** namespace tr2
*** 246,252 ****
        }
  
        bool
!       _M_is_less(const __dynamic_bitset_base& __x) const
        {
  	if (__x._M_w.size() == this->_M_w.size())
  	  {
--- 251,257 ----
        }
  
        bool
!       _M_is_less(const __dynamic_bitset_base& __x) const noexcept
        {
  	if (__x._M_w.size() == this->_M_w.size())
  	  {
*************** namespace tr2
*** 264,280 ****
        }
  
        size_t
!       _M_are_all_aux() const
        {
  	for (size_t __i = 0; __i < this->_M_w.size() - 1; ++__i)
! 	  if (_M_w[__i] != ~static_cast<block_type>(0))
  	    return 0;
  	return ((this->_M_w.size() - 1) * _S_bits_per_block
  		+ __builtin_popcountll(this->_M_hiword()));
        }
  
        bool
!       _M_is_any() const
        {
  	for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
  	  if (this->_M_w[__i] != static_cast<block_type>(0))
--- 269,285 ----
        }
  
        size_t
!       _M_are_all_aux() const noexcept
        {
  	for (size_t __i = 0; __i < this->_M_w.size() - 1; ++__i)
! 	  if (_M_w[__i] != static_cast<block_type>(-1))
  	    return 0;
  	return ((this->_M_w.size() - 1) * _S_bits_per_block
  		+ __builtin_popcountll(this->_M_hiword()));
        }
  
        bool
!       _M_is_any() const noexcept
        {
  	for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
  	  if (this->_M_w[__i] != static_cast<block_type>(0))
*************** namespace tr2
*** 283,289 ****
        }
  
        bool
!       _M_is_subset_of(const __dynamic_bitset_base& __b)
        {
  	if (__b._M_w.size() == this->_M_w.size())
  	  {
--- 288,294 ----
        }
  
        bool
!       _M_is_subset_of(const __dynamic_bitset_base& __b) noexcept
        {
  	if (__b._M_w.size() == this->_M_w.size())
  	  {
*************** namespace tr2
*** 297,303 ****
        }
  
        bool
!       _M_is_proper_subset_of(const __dynamic_bitset_base& __b) const
        {
  	if (this->is_subset_of(__b))
  	  {
--- 302,308 ----
        }
  
        bool
!       _M_is_proper_subset_of(const __dynamic_bitset_base& __b) const noexcept
        {
  	if (this->is_subset_of(__b))
  	  {
*************** namespace tr2
*** 311,317 ****
        }
  
        size_t
!       _M_do_count() const
        {
  	size_t __result = 0;
  	for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
--- 316,322 ----
        }
  
        size_t
!       _M_do_count() const noexcept
        {
  	size_t __result = 0;
  	for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
*************** namespace tr2
*** 357,362 ****
--- 362,368 ----
     *
     *  See N2050,
     *  Proposal to Add a Dynamically Sizeable Bitset to the Standard Library.
+    *  http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2050.pdf
     *
     *  In the general unoptimized case, storage is allocated in
     *  word-sized blocks.  Let B be the number of bits in a word, then
*************** namespace tr2
*** 435,441 ****
        {
  	size_type __shift = this->_M_Nb % bits_per_block;
  	if (__shift > 0)
! 	  this->_M_hiword() &= ~((~static_cast<block_type>(0)) << __shift);
        }
  
        //  Set the unused bits in the uppermost word.
--- 441,447 ----
        {
  	size_type __shift = this->_M_Nb % bits_per_block;
  	if (__shift > 0)
! 	  this->_M_hiword() &= block_type(~(block_type(-1) << __shift));
        }
  
        //  Set the unused bits in the uppermost word.
*************** namespace tr2
*** 444,465 ****
        {
  	size_type __shift = this->_M_Nb % bits_per_block;
  	if (__shift > 0)
! 	  this->_M_hiword() |= ((~static_cast<block_type>(0)) << __shift);
        }
  
        /**
         *  These versions of single-bit set, reset, flip, and test
         *  do no range checking.
         */
!       dynamic_bitset<_WordT, _Alloc>&
!       _M_unchecked_set(size_type __pos)
        {
  	this->_M_getword(__pos) |= _Base::_S_maskbit(__pos);
  	return *this;
        }
  
!       dynamic_bitset<_WordT, _Alloc>&
!       _M_unchecked_set(size_type __pos, int __val)
        {
  	if (__val)
  	  this->_M_getword(__pos) |= _Base::_S_maskbit(__pos);
--- 450,471 ----
        {
  	size_type __shift = this->_M_Nb % bits_per_block;
  	if (__shift > 0)
! 	  this->_M_hiword() |= block_type(block_type(-1) << __shift);
        }
  
        /**
         *  These versions of single-bit set, reset, flip, and test
         *  do no range checking.
         */
!       dynamic_bitset&
!       _M_unchecked_set(size_type __pos) noexcept
        {
  	this->_M_getword(__pos) |= _Base::_S_maskbit(__pos);
  	return *this;
        }
  
!       dynamic_bitset&
!       _M_unchecked_set(size_type __pos, int __val) noexcept
        {
  	if (__val)
  	  this->_M_getword(__pos) |= _Base::_S_maskbit(__pos);
*************** namespace tr2
*** 468,493 ****
  	return *this;
        }
  
!       dynamic_bitset<_WordT, _Alloc>&
!       _M_unchecked_reset(size_type __pos)
        {
  	this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos);
  	return *this;
        }
  
!       dynamic_bitset<_WordT, _Alloc>&
!       _M_unchecked_flip(size_type __pos)
        {
  	this->_M_getword(__pos) ^= _Base::_S_maskbit(__pos);
  	return *this;
        }
  
        bool
!       _M_unchecked_test(size_type __pos) const
        { return ((this->_M_getword(__pos) & _Base::_S_maskbit(__pos))
  		!= static_cast<_WordT>(0)); }
  
!       size_type _M_Nb;
  
      public:
        /**
--- 474,499 ----
  	return *this;
        }
  
!       dynamic_bitset&
!       _M_unchecked_reset(size_type __pos) noexcept
        {
  	this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos);
  	return *this;
        }
  
!       dynamic_bitset&
!       _M_unchecked_flip(size_type __pos) noexcept
        {
  	this->_M_getword(__pos) ^= _Base::_S_maskbit(__pos);
  	return *this;
        }
  
        bool
!       _M_unchecked_test(size_type __pos) const noexcept
        { return ((this->_M_getword(__pos) & _Base::_S_maskbit(__pos))
  		!= static_cast<_WordT>(0)); }
  
!       size_type _M_Nb = 0;
  
      public:
        /**
*************** namespace tr2
*** 511,532 ****
  	block_type *_M_wp;
  	size_type _M_bpos;
  
- 	// left undefined
- 	reference();
- 
        public:
! 	reference(dynamic_bitset& __b, size_type __pos)
  	{
  	  this->_M_wp = &__b._M_getword(__pos);
  	  this->_M_bpos = _Base::_S_whichbit(__pos);
  	}
  
- 	~reference()
- 	{ }
- 
  	// For b[i] = __x;
  	reference&
! 	operator=(bool __x)
  	{
  	  if (__x)
  	    *this->_M_wp |= _Base::_S_maskbit(this->_M_bpos);
--- 517,532 ----
  	block_type *_M_wp;
  	size_type _M_bpos;
  
        public:
! 	reference(dynamic_bitset& __b, size_type __pos) noexcept
  	{
  	  this->_M_wp = &__b._M_getword(__pos);
  	  this->_M_bpos = _Base::_S_whichbit(__pos);
  	}
  
  	// For b[i] = __x;
  	reference&
! 	operator=(bool __x) noexcept
  	{
  	  if (__x)
  	    *this->_M_wp |= _Base::_S_maskbit(this->_M_bpos);
*************** namespace tr2
*** 537,543 ****
  
  	// For b[i] = b[__j];
  	reference&
! 	operator=(const reference& __j)
  	{
  	  if ((*(__j._M_wp) & _Base::_S_maskbit(__j._M_bpos)))
  	    *this->_M_wp |= _Base::_S_maskbit(this->_M_bpos);
--- 537,543 ----
  
  	// For b[i] = b[__j];
  	reference&
! 	operator=(const reference& __j) noexcept
  	{
  	  if ((*(__j._M_wp) & _Base::_S_maskbit(__j._M_bpos)))
  	    *this->_M_wp |= _Base::_S_maskbit(this->_M_bpos);
*************** namespace tr2
*** 548,563 ****
  
  	// Flips the bit
  	bool
! 	operator~() const
  	{ return (*(_M_wp) & _Base::_S_maskbit(this->_M_bpos)) == 0; }
  
  	// For __x = b[i];
! 	operator bool() const
  	{ return (*(this->_M_wp) & _Base::_S_maskbit(this->_M_bpos)) != 0; }
  
  	// For b[i].flip();
  	reference&
! 	flip()
  	{
  	  *this->_M_wp ^= _Base::_S_maskbit(this->_M_bpos);
  	  return *this;
--- 548,563 ----
  
  	// Flips the bit
  	bool
! 	operator~() const noexcept
  	{ return (*(_M_wp) & _Base::_S_maskbit(this->_M_bpos)) == 0; }
  
  	// For __x = b[i];
! 	operator bool() const noexcept
  	{ return (*(this->_M_wp) & _Base::_S_maskbit(this->_M_bpos)) != 0; }
  
  	// For b[i].flip();
  	reference&
! 	flip() noexcept
  	{
  	  *this->_M_wp ^= _Base::_S_maskbit(this->_M_bpos);
  	  return *this;
*************** namespace tr2
*** 569,578 ****
        typedef bool const_reference;
  
        // 23.3.5.1 constructors:
        /// All bits set to zero.
        explicit
!       dynamic_bitset(const allocator_type& __alloc = allocator_type())
!       : _Base(__alloc), _M_Nb(0)
        { }
  
        /// Initial bits bitwise-copied from a single word (others set to zero).
--- 569,582 ----
        typedef bool const_reference;
  
        // 23.3.5.1 constructors:
+ 
+       /// All bits set to zero.
+       dynamic_bitset() = default;
+ 
        /// All bits set to zero.
        explicit
!       dynamic_bitset(const allocator_type& __alloc)
!       : _Base(__alloc)
        { }
  
        /// Initial bits bitwise-copied from a single word (others set to zero).
*************** namespace tr2
*** 585,591 ****
  
        dynamic_bitset(initializer_list<block_type> __il,
  		     const allocator_type& __alloc = allocator_type())
!       : _Base(__alloc), _M_Nb(0)
        { this->append(__il); }
  
        /**
--- 589,595 ----
  
        dynamic_bitset(initializer_list<block_type> __il,
  		     const allocator_type& __alloc = allocator_type())
!       : _Base(__alloc)
        { this->append(__il); }
  
        /**
*************** namespace tr2
*** 609,616 ****
  		       __n = std::basic_string<_CharT, _Traits, _Alloc1>::npos,
  		       _CharT __zero = _CharT('0'), _CharT __one = _CharT('1'),
  		       const allocator_type& __alloc = allocator_type())
! 	: _Base(__alloc),
! 	  _M_Nb(0) // Watch for npos.
  	{
  	  if (__pos > __str.size())
  	    __throw_out_of_range(__N("dynamic_bitset::bitset initial position "
--- 613,619 ----
  		       __n = std::basic_string<_CharT, _Traits, _Alloc1>::npos,
  		       _CharT __zero = _CharT('0'), _CharT __one = _CharT('1'),
  		       const allocator_type& __alloc = allocator_type())
! 	: _Base(__alloc)
  	{
  	  if (__pos > __str.size())
  	    __throw_out_of_range(__N("dynamic_bitset::bitset initial position "
*************** namespace tr2
*** 619,626 ****
  	  // Watch for npos.
  	  this->_M_Nb = (__n > __str.size() ? __str.size() - __pos : __n);
  	  this->resize(this->_M_Nb);
! 	  this->_M_copy_from_string(__str, __pos, __n,
! 				    _CharT('0'), _CharT('1'));
  	}
  
        /**
--- 622,628 ----
  	  // Watch for npos.
  	  this->_M_Nb = (__n > __str.size() ? __str.size() - __pos : __n);
  	  this->resize(this->_M_Nb);
! 	  this->_M_copy_from_string(__str, __pos, __n);
  	}
  
        /**
*************** namespace tr2
*** 633,693 ****
        explicit
        dynamic_bitset(const char* __str,
  		     const allocator_type& __alloc = allocator_type())
!       : _Base(__alloc)
        {
! 	size_t __len = 0;
! 	if (__str)
! 	  while (__str[__len] != '\0')
! 	    ++__len;
! 	this->resize(__len);
! 	this->_M_copy_from_ptr<char,std::char_traits<char>>
! 		   (__str, __len, 0, __len, '0', '1');
        }
  
!       /**
!        *  @brief  Copy constructor.
!        */
!       dynamic_bitset(const dynamic_bitset& __b)
!       : _Base(__b), _M_Nb(__b.size())
!       { }
  
!       /**
!        *  @brief  Move constructor.
!        */
!       dynamic_bitset(dynamic_bitset&& __b)
!       : _Base(std::forward<_Base>(__b)), _M_Nb(__b.size())
!       { }
  
!       /**
!        *  @brief  Swap with another bitset.
!        */
        void
!       swap(dynamic_bitset& __b)
        {
  	this->_M_swap(__b);
  	std::swap(this->_M_Nb, __b._M_Nb);
        }
  
!       /**
!        *  @brief  Assignment.
!        */
!       dynamic_bitset&
!       operator=(const dynamic_bitset& __b)
!       {
! 	if (&__b != this)
! 	  {
! 	    this->_M_assign(__b);
! 	    this->_M_Nb = __b._M_Nb;
! 	  }
!       }
  
!       /**
!        *  @brief  Move assignment.
!        */
        dynamic_bitset&
        operator=(dynamic_bitset&& __b)
        {
! 	this->swap(__b);
  	return *this;
        }
  
--- 635,676 ----
        explicit
        dynamic_bitset(const char* __str,
  		     const allocator_type& __alloc = allocator_type())
!       : _Base(__builtin_strlen(__str), 0ULL, __alloc),
! 	_M_Nb(__builtin_strlen(__str))
        {
! 	this->_M_copy_from_ptr(__str, _M_Nb, 0, _M_Nb);
        }
  
!       /// Copy constructor.
!       dynamic_bitset(const dynamic_bitset&) = default;
  
!       /// Move constructor.
!       dynamic_bitset(dynamic_bitset&& __b) noexcept
!       : _Base(std::move(__b)), _M_Nb(__b._M_Nb)
!       { __b.clear(); }
  
!       /// Swap with another bitset.
        void
!       swap(dynamic_bitset& __b) noexcept
        {
  	this->_M_swap(__b);
  	std::swap(this->_M_Nb, __b._M_Nb);
        }
  
!       /// Copy assignment operator.
!       dynamic_bitset& operator=(const dynamic_bitset&) = default;
  
!       /// Move assignment operator.
        dynamic_bitset&
        operator=(dynamic_bitset&& __b)
+       noexcept(std::is_nothrow_move_assignable<_Base>::value)
        {
! 	static_cast<_Base&>(*this) = static_cast<_Base&&>(__b);
! 	_M_Nb = __b._M_Nb;
! 	if _GLIBCXX17_CONSTEXPR (std::is_nothrow_move_assignable<_Base>::value)
! 	  __b._M_Nb = 0;
! 	else if (get_allocator() == __b.get_allocator())
! 	  __b._M_Nb = 0;
  	return *this;
        }
  
*************** namespace tr2
*** 695,701 ****
         *  @brief  Return the allocator for the bitset.
         */
        allocator_type
!       get_allocator() const
        { return this->_M_get_allocator(); }
  
        /**
--- 678,684 ----
         *  @brief  Return the allocator for the bitset.
         */
        allocator_type
!       get_allocator() const noexcept
        { return this->_M_get_allocator(); }
  
        /**
*************** namespace tr2
*** 733,738 ****
--- 716,723 ----
  	this->_M_unchecked_set(this->_M_Nb, __bit);
        }
  
+       // XXX why is there no pop_back() member in the proposal?
+ 
        /**
         *  @brief  Append a block.
         */
*************** namespace tr2
*** 769,804 ****
         *
         *  These should be self-explanatory.
         */
!       dynamic_bitset<_WordT, _Alloc>&
!       operator&=(const dynamic_bitset<_WordT, _Alloc>& __rhs)
        {
  	this->_M_do_and(__rhs);
  	return *this;
        }
  
!       dynamic_bitset<_WordT, _Alloc>&
!       operator&=(dynamic_bitset<_WordT, _Alloc>&& __rhs)
        {
  	this->_M_do_and(std::move(__rhs));
  	return *this;
        }
  
!       dynamic_bitset<_WordT, _Alloc>&
!       operator|=(const dynamic_bitset<_WordT, _Alloc>& __rhs)
        {
  	this->_M_do_or(__rhs);
  	return *this;
        }
  
!       dynamic_bitset<_WordT, _Alloc>&
!       operator^=(const dynamic_bitset<_WordT, _Alloc>& __rhs)
        {
  	this->_M_do_xor(__rhs);
  	return *this;
        }
  
!       dynamic_bitset<_WordT, _Alloc>&
!       operator-=(const dynamic_bitset<_WordT, _Alloc>& __rhs)
        {
  	this->_M_do_dif(__rhs);
  	return *this;
--- 754,789 ----
         *
         *  These should be self-explanatory.
         */
!       dynamic_bitset&
!       operator&=(const dynamic_bitset& __rhs)
        {
  	this->_M_do_and(__rhs);
  	return *this;
        }
  
!       dynamic_bitset&
!       operator&=(dynamic_bitset&& __rhs)
        {
  	this->_M_do_and(std::move(__rhs));
  	return *this;
        }
  
!       dynamic_bitset&
!       operator|=(const dynamic_bitset& __rhs)
        {
  	this->_M_do_or(__rhs);
  	return *this;
        }
  
!       dynamic_bitset&
!       operator^=(const dynamic_bitset& __rhs)
        {
  	this->_M_do_xor(__rhs);
  	return *this;
        }
  
!       dynamic_bitset&
!       operator-=(const dynamic_bitset& __rhs)
        {
  	this->_M_do_dif(__rhs);
  	return *this;
*************** namespace tr2
*** 812,818 ****
         *
         *  These should be self-explanatory.
         */
!       dynamic_bitset<_WordT, _Alloc>&
        operator<<=(size_type __pos)
        {
  	if (__builtin_expect(__pos < this->_M_Nb, 1))
--- 797,803 ----
         *
         *  These should be self-explanatory.
         */
!       dynamic_bitset&
        operator<<=(size_type __pos)
        {
  	if (__builtin_expect(__pos < this->_M_Nb, 1))
*************** namespace tr2
*** 825,831 ****
  	return *this;
        }
  
!       dynamic_bitset<_WordT, _Alloc>&
        operator>>=(size_type __pos)
        {
  	if (__builtin_expect(__pos < this->_M_Nb, 1))
--- 810,816 ----
  	return *this;
        }
  
!       dynamic_bitset&
        operator>>=(size_type __pos)
        {
  	if (__builtin_expect(__pos < this->_M_Nb, 1))
*************** namespace tr2
*** 843,849 ****
        /**
         *  @brief Sets every bit to true.
         */
!       dynamic_bitset<_WordT, _Alloc>&
        set()
        {
  	this->_M_do_set();
--- 828,834 ----
        /**
         *  @brief Sets every bit to true.
         */
!       dynamic_bitset&
        set()
        {
  	this->_M_do_set();
*************** namespace tr2
*** 857,863 ****
         *  @param  __val  Either true or false, defaults to true.
         *  @throw  std::out_of_range  If @a __pos is bigger the size of the %set.
         */
!       dynamic_bitset<_WordT, _Alloc>&
        set(size_type __pos, bool __val = true)
        {
  	if (__pos >= _M_Nb)
--- 842,848 ----
         *  @param  __val  Either true or false, defaults to true.
         *  @throw  std::out_of_range  If @a __pos is bigger the size of the %set.
         */
!       dynamic_bitset&
        set(size_type __pos, bool __val = true)
        {
  	if (__pos >= _M_Nb)
*************** namespace tr2
*** 868,874 ****
        /**
         *  @brief Sets every bit to false.
         */
!       dynamic_bitset<_WordT, _Alloc>&
        reset()
        {
  	this->_M_do_reset();
--- 853,859 ----
        /**
         *  @brief Sets every bit to false.
         */
!       dynamic_bitset&
        reset()
        {
  	this->_M_do_reset();
*************** namespace tr2
*** 882,888 ****
         *
         *  Same as writing @c set(__pos, false).
         */
!       dynamic_bitset<_WordT, _Alloc>&
        reset(size_type __pos)
        {
  	if (__pos >= _M_Nb)
--- 867,873 ----
         *
         *  Same as writing @c set(__pos, false).
         */
!       dynamic_bitset&
        reset(size_type __pos)
        {
  	if (__pos >= _M_Nb)
*************** namespace tr2
*** 893,899 ****
        /**
         *  @brief Toggles every bit to its opposite value.
         */
!       dynamic_bitset<_WordT, _Alloc>&
        flip()
        {
  	this->_M_do_flip();
--- 878,884 ----
        /**
         *  @brief Toggles every bit to its opposite value.
         */
!       dynamic_bitset&
        flip()
        {
  	this->_M_do_flip();
*************** namespace tr2
*** 906,912 ****
         *  @param  __pos  The index of the bit.
         *  @throw  std::out_of_range  If @a __pos is bigger the size of the %set.
         */
!       dynamic_bitset<_WordT, _Alloc>&
        flip(size_type __pos)
        {
  	if (__pos >= _M_Nb)
--- 891,897 ----
         *  @param  __pos  The index of the bit.
         *  @throw  std::out_of_range  If @a __pos is bigger the size of the %set.
         */
!       dynamic_bitset&
        flip(size_type __pos)
        {
  	if (__pos >= _M_Nb)
*************** namespace tr2
*** 915,921 ****
        }
  
        /// See the no-argument flip().
!       dynamic_bitset<_WordT, _Alloc>
        operator~() const
        { return dynamic_bitset<_WordT, _Alloc>(*this).flip(); }
  
--- 900,906 ----
        }
  
        /// See the no-argument flip().
!       dynamic_bitset
        operator~() const
        { return dynamic_bitset<_WordT, _Alloc>(*this).flip(); }
  
*************** namespace tr2
*** 977,995 ****
  	}
  
        // Helper functions for string operations.
!       template<typename _CharT, typename _Traits>
  	void
  	_M_copy_from_ptr(const _CharT*, size_t, size_t, size_t,
! 			 _CharT, _CharT);
  
        template<typename _CharT, typename _Traits, typename _Alloc1>
  	void
! 	_M_copy_from_string(const std::basic_string<_CharT,
! 			    _Traits, _Alloc1>& __str, size_t __pos, size_t __n,
  			    _CharT __zero = _CharT('0'),
  			    _CharT __one = _CharT('1'))
! 	{ _M_copy_from_ptr<_CharT, _Traits>(__str.data(), __str.size(),
! 					    __pos, __n, __zero, __one); }
  
        template<typename _CharT, typename _Traits, typename _Alloc1>
  	void
--- 962,984 ----
  	}
  
        // Helper functions for string operations.
!       template<typename _Traits = std::char_traits<char>,
! 	       typename _CharT = typename _Traits::char_type>
  	void
  	_M_copy_from_ptr(const _CharT*, size_t, size_t, size_t,
! 			 _CharT __zero = _CharT('0'),
! 			 _CharT __one = _CharT('1'));
  
        template<typename _CharT, typename _Traits, typename _Alloc1>
  	void
! 	_M_copy_from_string(const basic_string<_CharT, _Traits, _Alloc1>& __str,
! 			    size_t __pos, size_t __n,
  			    _CharT __zero = _CharT('0'),
  			    _CharT __one = _CharT('1'))
! 	{
! 	  _M_copy_from_ptr<_Traits>(__str.data(), __str.size(), __pos, __n,
! 				    __zero, __one);
! 	}
  
        template<typename _CharT, typename _Traits, typename _Alloc1>
  	void
*************** namespace tr2
*** 1064,1076 ****
  
        //@{
        /// Self-explanatory.
!       dynamic_bitset<_WordT, _Alloc>
        operator<<(size_type __pos) const
!       { return dynamic_bitset<_WordT, _Alloc>(*this) <<= __pos; }
  
!       dynamic_bitset<_WordT, _Alloc>
        operator>>(size_type __pos) const
!       { return dynamic_bitset<_WordT, _Alloc>(*this) >>= __pos; }
        //@}
  
        /**
--- 1053,1065 ----
  
        //@{
        /// Self-explanatory.
!       dynamic_bitset
        operator<<(size_type __pos) const
!       { return dynamic_bitset(*this) <<= __pos; }
  
!       dynamic_bitset
        operator>>(size_type __pos) const
!       { return dynamic_bitset(*this) >>= __pos; }
        //@}
  
        /**
*************** namespace tr2
*** 1101,1114 ****
        { return this->_M_is_proper_subset_of(__b); }
  
        friend bool
!       operator==(const dynamic_bitset<_WordT, _Alloc>& __lhs,
! 		 const dynamic_bitset<_WordT, _Alloc>& __rhs)
!       { return __lhs._M_is_equal(__rhs); }
  
        friend bool
!       operator<(const dynamic_bitset<_WordT, _Alloc>& __lhs,
! 		const dynamic_bitset<_WordT, _Alloc>& __rhs)
!       { return __lhs._M_is_less(__rhs); }
      };
  
    template<typename _WordT, typename _Alloc>
--- 1090,1103 ----
        { return this->_M_is_proper_subset_of(__b); }
  
        friend bool
!       operator==(const dynamic_bitset& __lhs,
! 		 const dynamic_bitset& __rhs) noexcept
!       { return __lhs._M_Nb == __rhs._M_Nb && __lhs._M_is_equal(__rhs); }
  
        friend bool
!       operator<(const dynamic_bitset& __lhs,
! 		const dynamic_bitset& __rhs) noexcept
!       { return __lhs._M_is_less(__rhs) || __lhs._M_Nb < __rhs._M_Nb; }
      };
  
    template<typename _WordT, typename _Alloc>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/include/tr2/dynamic_bitset.tcc gcc-8.4.0/libstdc++-v3/include/tr2/dynamic_bitset.tcc
*** gcc-8.3.0/libstdc++-v3/include/tr2/dynamic_bitset.tcc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/include/tr2/dynamic_bitset.tcc	Wed Mar  4 08:30:03 2020
*************** namespace tr2
*** 174,180 ****
  
    // Definitions of non-inline member functions.
    template<typename _WordT, typename _Alloc>
!     template<typename _CharT, typename _Traits>
        void
        dynamic_bitset<_WordT, _Alloc>::
        _M_copy_from_ptr(const _CharT* __str, size_t __len,
--- 174,180 ----
  
    // Definitions of non-inline member functions.
    template<typename _WordT, typename _Alloc>
!     template<typename _Traits, typename _CharT>
        void
        dynamic_bitset<_WordT, _Alloc>::
        _M_copy_from_ptr(const _CharT* __str, size_t __len,
diff -Nrcpad gcc-8.3.0/libstdc++-v3/libsupc++/Makefile.in gcc-8.4.0/libstdc++-v3/libsupc++/Makefile.in
*** gcc-8.3.0/libstdc++-v3/libsupc++/Makefile.in	Fri Nov 17 21:28:10 2017
--- gcc-8.4.0/libstdc++-v3/libsupc++/Makefile.in	Wed Mar  4 08:30:03 2020
*************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
*** 278,283 ****
--- 278,284 ----
  VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
  WARN_FLAGS = @WARN_FLAGS@
  WERROR = @WERROR@
+ XMLCATALOG = @XMLCATALOG@
  XMLLINT = @XMLLINT@
  XSLTPROC = @XSLTPROC@
  XSL_STYLE_DIR = @XSL_STYLE_DIR@
diff -Nrcpad gcc-8.3.0/libstdc++-v3/libsupc++/cxxabi.h gcc-8.4.0/libstdc++-v3/libsupc++/cxxabi.h
*** gcc-8.3.0/libstdc++-v3/libsupc++/cxxabi.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/libsupc++/cxxabi.h	Wed Mar  4 08:30:03 2020
*************** namespace __gnu_cxx
*** 683,690 ****
     *  @brief Exception thrown by __cxa_guard_acquire.
     *  @ingroup exceptions
     *
!    *  6.7[stmt.dcl]/4: If control re-enters the declaration (recursively)
!    *  while the object is being initialized, the behavior is undefined.
     *
     *  Since we already have a library function to handle locking, we might
     *  as well check for this situation and throw an exception.
--- 683,691 ----
     *  @brief Exception thrown by __cxa_guard_acquire.
     *  @ingroup exceptions
     *
!    *  C++ 2011 6.7 [stmt.dcl]/4: If control re-enters the declaration
!    *  recursively while the variable is being initialized, the behavior
!    *  is undefined.
     *
     *  Since we already have a library function to handle locking, we might
     *  as well check for this situation and throw an exception.
*************** namespace __gnu_cxx
*** 694,701 ****
    class recursive_init_error: public std::exception
    {
    public:
!     recursive_init_error() throw() { }
!     virtual ~recursive_init_error() throw ();
    };
  }
  #endif // __cplusplus
--- 695,702 ----
    class recursive_init_error: public std::exception
    {
    public:
!     recursive_init_error() _GLIBCXX_NOTHROW;
!     virtual ~recursive_init_error() _GLIBCXX_NOTHROW;
    };
  }
  #endif // __cplusplus
diff -Nrcpad gcc-8.3.0/libstdc++-v3/libsupc++/exception gcc-8.4.0/libstdc++-v3/libsupc++/exception
*** gcc-8.3.0/libstdc++-v3/libsupc++/exception	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/libsupc++/exception	Wed Mar  4 08:30:03 2020
*************** namespace std
*** 101,108 ****
    _GLIBCXX17_DEPRECATED
    bool uncaught_exception() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));
  
! #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++17 or gnu++98
! #define __cpp_lib_uncaught_exceptions 201411
    /// The number of uncaught exceptions.
    int uncaught_exceptions() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));
  #endif
--- 101,108 ----
    _GLIBCXX17_DEPRECATED
    bool uncaught_exception() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));
  
! #if __cplusplus >= 201703L || !defined(__STRICT_ANSI__) // c++17 or gnu++98
! #define __cpp_lib_uncaught_exceptions 201411L
    /// The number of uncaught exceptions.
    int uncaught_exceptions() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));
  #endif
diff -Nrcpad gcc-8.3.0/libstdc++-v3/libsupc++/guard_error.cc gcc-8.4.0/libstdc++-v3/libsupc++/guard_error.cc
*** gcc-8.3.0/libstdc++-v3/libsupc++/guard_error.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/libsupc++/guard_error.cc	Wed Mar  4 08:30:03 2020
***************
*** 26,31 ****
  
  namespace __gnu_cxx
  {
!   recursive_init_error::~recursive_init_error() throw() { }
  }
- 
--- 26,31 ----
  
  namespace __gnu_cxx
  {
!   recursive_init_error::recursive_init_error() noexcept { }
!   recursive_init_error::~recursive_init_error() noexcept { }
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/libsupc++/hash_bytes.cc gcc-8.4.0/libstdc++-v3/libsupc++/hash_bytes.cc
*** gcc-8.3.0/libstdc++-v3/libsupc++/hash_bytes.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/libsupc++/hash_bytes.cc	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 139,145 ****
  
      // Remove the bytes not divisible by the sizeof(size_t).  This
      // allows the main loop to process the data as 64-bit integers.
!     const int len_aligned = len & ~0x7;
      const char* const end = buf + len_aligned;
      size_t hash = seed ^ (len * mul);
      for (const char* p = buf; p != end; p += 8)
--- 139,145 ----
  
      // Remove the bytes not divisible by the sizeof(size_t).  This
      // allows the main loop to process the data as 64-bit integers.
!     const size_t len_aligned = len & ~(size_t)0x7;
      const char* const end = buf + len_aligned;
      size_t hash = seed ^ (len * mul);
      for (const char* p = buf; p != end; p += 8)
diff -Nrcpad gcc-8.3.0/libstdc++-v3/libsupc++/new_opa.cc gcc-8.4.0/libstdc++-v3/libsupc++/new_opa.cc
*** gcc-8.3.0/libstdc++-v3/libsupc++/new_opa.cc	Wed Aug  8 15:33:36 2018
--- gcc-8.4.0/libstdc++-v3/libsupc++/new_opa.cc	Wed Mar  4 08:30:03 2020
*************** extern "C" void *memalign(std::size_t bo
*** 42,47 ****
--- 42,62 ----
  using std::new_handler;
  using std::bad_alloc;
  
+ #if ! _GLIBCXX_HOSTED
+ extern "C"
+ {
+ # if _GLIBCXX_HAVE_ALIGNED_ALLOC
+   void *aligned_alloc(size_t alignment, size_t size);
+ # elif _GLIBCXX_HAVE__ALIGNED_MALLOC
+   void *_aligned_malloc(size_t size, size_t alignment);
+ # elif _GLIBCXX_HAVE_POSIX_MEMALIGN
+   void *posix_memalign(void **, size_t alignment, size_t size);
+ # elif _GLIBCXX_HAVE_MEMALIGN
+   void *memalign(size_t alignment, size_t size);
+ # endif
+ }
+ #endif
+ 
  namespace __gnu_cxx {
  #if _GLIBCXX_HAVE_ALIGNED_ALLOC
  using ::aligned_alloc;
*************** operator new (std::size_t sz, std::align
*** 114,122 ****
      sz = 1;
  
  #if _GLIBCXX_HAVE_ALIGNED_ALLOC
! # ifdef _AIX
    /* AIX 7.2.0.0 aligned_alloc incorrectly has posix_memalign's requirement
!    * that alignment is a multiple of sizeof(void*).  */
    if (align < sizeof(void*))
      align = sizeof(void*);
  # endif
--- 129,138 ----
      sz = 1;
  
  #if _GLIBCXX_HAVE_ALIGNED_ALLOC
! # if defined _AIX || defined __APPLE__
    /* AIX 7.2.0.0 aligned_alloc incorrectly has posix_memalign's requirement
!    * that alignment is a multiple of sizeof(void*).
!    * OS X 10.15 has the same requirement.  */
    if (align < sizeof(void*))
      align = sizeof(void*);
  # endif
diff -Nrcpad gcc-8.3.0/libstdc++-v3/po/Makefile.in gcc-8.4.0/libstdc++-v3/po/Makefile.in
*** gcc-8.3.0/libstdc++-v3/po/Makefile.in	Fri Nov 17 21:28:10 2017
--- gcc-8.4.0/libstdc++-v3/po/Makefile.in	Wed Mar  4 08:30:03 2020
*************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
*** 205,210 ****
--- 205,211 ----
  VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
  WARN_FLAGS = @WARN_FLAGS@
  WERROR = @WERROR@
+ XMLCATALOG = @XMLCATALOG@
  XMLLINT = @XMLLINT@
  XSLTPROC = @XSLTPROC@
  XSL_STYLE_DIR = @XSL_STYLE_DIR@
diff -Nrcpad gcc-8.3.0/libstdc++-v3/python/Makefile.in gcc-8.4.0/libstdc++-v3/python/Makefile.in
*** gcc-8.3.0/libstdc++-v3/python/Makefile.in	Fri Nov 17 21:28:10 2017
--- gcc-8.4.0/libstdc++-v3/python/Makefile.in	Wed Mar  4 08:30:03 2020
*************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
*** 235,240 ****
--- 235,241 ----
  VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
  WARN_FLAGS = @WARN_FLAGS@
  WERROR = @WERROR@
+ XMLCATALOG = @XMLCATALOG@
  XMLLINT = @XMLLINT@
  XSLTPROC = @XSLTPROC@
  XSL_STYLE_DIR = @XSL_STYLE_DIR@
diff -Nrcpad gcc-8.3.0/libstdc++-v3/python/libstdcxx/v6/xmethods.py gcc-8.4.0/libstdc++-v3/python/libstdcxx/v6/xmethods.py
*** gcc-8.3.0/libstdc++-v3/python/libstdcxx/v6/xmethods.py	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/python/libstdcxx/v6/xmethods.py	Wed Mar  4 08:30:03 2020
*************** class SharedPtrUseCountWorker(gdb.xmetho
*** 728,734 ****
          return gdb.lookup_type('long')
  
      def __call__(self, obj):
!         refcounts = ['_M_refcount']['_M_pi']
          return refcounts['_M_use_count'] if refcounts else 0
  
  class SharedPtrUniqueWorker(SharedPtrUseCountWorker):
--- 728,734 ----
          return gdb.lookup_type('long')
  
      def __call__(self, obj):
!         refcounts = obj['_M_refcount']['_M_pi']
          return refcounts['_M_use_count'] if refcounts else 0
  
  class SharedPtrUniqueWorker(SharedPtrUseCountWorker):
diff -Nrcpad gcc-8.3.0/libstdc++-v3/src/Makefile.am gcc-8.4.0/libstdc++-v3/src/Makefile.am
*** gcc-8.3.0/libstdc++-v3/src/Makefile.am	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/src/Makefile.am	Wed Mar  4 08:30:03 2020
*************** endif
*** 321,327 ****
  # Take care to fix all possibly-relative paths.
  debugdir = ${glibcxx_builddir}/src/debug
  stamp-debug:
! 	if test ! -d ${debugdir}; then \
  	  mkdir -p ${debugdir}; \
  	  for d in $(SUBDIRS); do mkdir -p  ${debugdir}/$$d; done; \
  	  (cd ${debugdir}; \
--- 321,327 ----
  # Take care to fix all possibly-relative paths.
  debugdir = ${glibcxx_builddir}/src/debug
  stamp-debug:
! 	if test ! -d ${debugdir} || test ! -f ${debugdir}/Makefile ; then \
  	  mkdir -p ${debugdir}; \
  	  for d in $(SUBDIRS); do mkdir -p  ${debugdir}/$$d; done; \
  	  (cd ${debugdir}; \
diff -Nrcpad gcc-8.3.0/libstdc++-v3/src/Makefile.in gcc-8.4.0/libstdc++-v3/src/Makefile.in
*** gcc-8.3.0/libstdc++-v3/src/Makefile.in	Fri Nov 17 21:28:10 2017
--- gcc-8.4.0/libstdc++-v3/src/Makefile.in	Wed Mar  4 08:30:03 2020
*************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
*** 268,273 ****
--- 268,274 ----
  VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
  WARN_FLAGS = @WARN_FLAGS@
  WERROR = @WERROR@
+ XMLCATALOG = @XMLCATALOG@
  XMLLINT = @XMLLINT@
  XSLTPROC = @XSLTPROC@
  XSL_STYLE_DIR = @XSL_STYLE_DIR@
*************** libstdc++convenience.la: $(toolexeclib_L
*** 993,999 ****
  	fi; \
  	echo `date` > stamp-libstdc++convenience;
  stamp-debug:
! 	if test ! -d ${debugdir}; then \
  	  mkdir -p ${debugdir}; \
  	  for d in $(SUBDIRS); do mkdir -p  ${debugdir}/$$d; done; \
  	  (cd ${debugdir}; \
--- 994,1000 ----
  	fi; \
  	echo `date` > stamp-libstdc++convenience;
  stamp-debug:
! 	if test ! -d ${debugdir} || test ! -f ${debugdir}/Makefile ; then \
  	  mkdir -p ${debugdir}; \
  	  for d in $(SUBDIRS); do mkdir -p  ${debugdir}/$$d; done; \
  	  (cd ${debugdir}; \
diff -Nrcpad gcc-8.3.0/libstdc++-v3/src/c++11/Makefile.in gcc-8.4.0/libstdc++-v3/src/c++11/Makefile.in
*** gcc-8.3.0/libstdc++-v3/src/c++11/Makefile.in	Wed Apr 18 12:14:58 2018
--- gcc-8.4.0/libstdc++-v3/src/c++11/Makefile.in	Wed Mar  4 08:30:03 2020
*************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
*** 243,248 ****
--- 243,249 ----
  VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
  WARN_FLAGS = @WARN_FLAGS@
  WERROR = @WERROR@
+ XMLCATALOG = @XMLCATALOG@
  XMLLINT = @XMLLINT@
  XSLTPROC = @XSLTPROC@
  XSL_STYLE_DIR = @XSL_STYLE_DIR@
diff -Nrcpad gcc-8.3.0/libstdc++-v3/src/c++17/Makefile.in gcc-8.4.0/libstdc++-v3/src/c++17/Makefile.in
*** gcc-8.3.0/libstdc++-v3/src/c++17/Makefile.in	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/src/c++17/Makefile.in	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,754 ----
+ # Makefile.in generated by automake 1.15.1 from Makefile.am.
+ # @configure_input@
+ 
+ # Copyright (C) 1994-2017 Free Software Foundation, Inc.
+ 
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+ 
+ # This program is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ # PARTICULAR PURPOSE.
+ 
+ @SET_MAKE@
+ 
+ VPATH = @srcdir@
+ am__is_gnu_make = { \
+   if test -z '$(MAKELEVEL)'; then \
+     false; \
+   elif test -n '$(MAKE_HOST)'; then \
+     true; \
+   elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+     true; \
+   else \
+     false; \
+   fi; \
+ }
+ am__make_running_with_option = \
+   case $${target_option-} in \
+       ?) ;; \
+       *) echo "am__make_running_with_option: internal error: invalid" \
+               "target option '$${target_option-}' specified" >&2; \
+          exit 1;; \
+   esac; \
+   has_opt=no; \
+   sane_makeflags=$$MAKEFLAGS; \
+   if $(am__is_gnu_make); then \
+     sane_makeflags=$$MFLAGS; \
+   else \
+     case $$MAKEFLAGS in \
+       *\\[\ \	]*) \
+         bs=\\; \
+         sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+           | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+     esac; \
+   fi; \
+   skip_next=no; \
+   strip_trailopt () \
+   { \
+     flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+   }; \
+   for flg in $$sane_makeflags; do \
+     test $$skip_next = yes && { skip_next=no; continue; }; \
+     case $$flg in \
+       *=*|--*) continue;; \
+         -*I) strip_trailopt 'I'; skip_next=yes;; \
+       -*I?*) strip_trailopt 'I';; \
+         -*O) strip_trailopt 'O'; skip_next=yes;; \
+       -*O?*) strip_trailopt 'O';; \
+         -*l) strip_trailopt 'l'; skip_next=yes;; \
+       -*l?*) strip_trailopt 'l';; \
+       -[dEDm]) skip_next=yes;; \
+       -[JT]) skip_next=yes;; \
+     esac; \
+     case $$flg in \
+       *$$target_option*) has_opt=yes; break;; \
+     esac; \
+   done; \
+   test $$has_opt = yes
+ am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+ am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+ pkgdatadir = $(datadir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+ pkglibexecdir = $(libexecdir)/@PACKAGE@
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+ install_sh_DATA = $(install_sh) -c -m 644
+ install_sh_PROGRAM = $(install_sh) -c
+ install_sh_SCRIPT = $(install_sh) -c
+ INSTALL_HEADER = $(INSTALL_DATA)
+ transform = $(program_transform_name)
+ NORMAL_INSTALL = :
+ PRE_INSTALL = :
+ POST_INSTALL = :
+ NORMAL_UNINSTALL = :
+ PRE_UNINSTALL = :
+ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = src/c++17
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+ 	$(top_srcdir)/../config/enable.m4 \
+ 	$(top_srcdir)/../config/futex.m4 \
+ 	$(top_srcdir)/../config/hwcaps.m4 \
+ 	$(top_srcdir)/../config/iconv.m4 \
+ 	$(top_srcdir)/../config/lead-dot.m4 \
+ 	$(top_srcdir)/../config/lib-ld.m4 \
+ 	$(top_srcdir)/../config/lib-link.m4 \
+ 	$(top_srcdir)/../config/lib-prefix.m4 \
+ 	$(top_srcdir)/../config/lthostflags.m4 \
+ 	$(top_srcdir)/../config/multi.m4 \
+ 	$(top_srcdir)/../config/no-executables.m4 \
+ 	$(top_srcdir)/../config/override.m4 \
+ 	$(top_srcdir)/../config/stdint.m4 \
+ 	$(top_srcdir)/../config/unwind_ipinfo.m4 \
+ 	$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
+ 	$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
+ 	$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/crossconfig.m4 \
+ 	$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
+ 	$(top_srcdir)/../config/gc++filt.m4 \
+ 	$(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \
+ 	$(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ 	$(ACLOCAL_M4)
+ DIST_COMMON = $(srcdir)/Makefile.am
+ CONFIG_HEADER = $(top_builddir)/config.h
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ LTLIBRARIES = $(noinst_LTLIBRARIES)
+ libc__17convenience_la_LIBADD =
+ @ENABLE_DUAL_ABI_TRUE@am__objects_1 = cow-fs_dir.lo cow-fs_ops.lo \
+ @ENABLE_DUAL_ABI_TRUE@	cow-fs_path.lo
+ am__objects_2 = fs_dir.lo fs_ops.lo fs_path.lo memory_resource.lo \
+ 	$(am__objects_1)
+ @ENABLE_DUAL_ABI_TRUE@am__objects_3 = cow-string-inst.lo
+ @ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_4 = ostream-inst.lo \
+ @ENABLE_EXTERN_TEMPLATE_TRUE@	string-inst.lo $(am__objects_3)
+ am_libc__17convenience_la_OBJECTS = $(am__objects_2) $(am__objects_4)
+ libc__17convenience_la_OBJECTS = $(am_libc__17convenience_la_OBJECTS)
+ AM_V_lt = $(am__v_lt_@AM_V@)
+ am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+ am__v_lt_0 = --silent
+ am__v_lt_1 = 
+ AM_V_P = $(am__v_P_@AM_V@)
+ am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+ am__v_P_0 = false
+ am__v_P_1 = :
+ AM_V_GEN = $(am__v_GEN_@AM_V@)
+ am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+ am__v_GEN_0 = @echo "  GEN     " $@;
+ am__v_GEN_1 = 
+ AM_V_at = $(am__v_at_@AM_V@)
+ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+ am__v_at_0 = @
+ am__v_at_1 = 
+ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+ depcomp =
+ am__depfiles_maybe =
+ CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+ AM_V_CXX = $(am__v_CXX_@AM_V@)
+ am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+ am__v_CXX_0 = @echo "  CXX     " $@;
+ am__v_CXX_1 = 
+ CXXLD = $(CXX)
+ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+ am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+ am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+ am__v_CXXLD_1 = 
+ SOURCES = $(libc__17convenience_la_SOURCES)
+ am__can_run_installinfo = \
+   case $$AM_UPDATE_INFO_DIR in \
+     n|no|NO) false;; \
+     *) (install-info --version) >/dev/null 2>&1;; \
+   esac
+ am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+ # Read a list of newline-separated strings from the standard input,
+ # and print each of them once, without duplicates.  Input order is
+ # *not* preserved.
+ am__uniquify_input = $(AWK) '\
+   BEGIN { nonempty = 0; } \
+   { items[$$0] = 1; nonempty = 1; } \
+   END { if (nonempty) { for (i in items) print i; }; } \
+ '
+ # Make sure the list of sources is unique.  This is necessary because,
+ # e.g., the same source file might be shared among _SOURCES variables
+ # for different programs/libraries.
+ am__define_uniq_tagged_files = \
+   list='$(am__tagged_files)'; \
+   unique=`for i in $$list; do \
+     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+   done | $(am__uniquify_input)`
+ ETAGS = etags
+ CTAGS = ctags
+ ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
+ ACLOCAL = @ACLOCAL@
+ ALLOCATOR_H = @ALLOCATOR_H@
+ ALLOCATOR_NAME = @ALLOCATOR_NAME@
+ AMTAR = @AMTAR@
+ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ AR = @AR@
+ AS = @AS@
+ ATOMICITY_SRCDIR = @ATOMICITY_SRCDIR@
+ ATOMIC_FLAGS = @ATOMIC_FLAGS@
+ ATOMIC_WORD_SRCDIR = @ATOMIC_WORD_SRCDIR@
+ AUTOCONF = @AUTOCONF@
+ AUTOHEADER = @AUTOHEADER@
+ AUTOMAKE = @AUTOMAKE@
+ AWK = @AWK@
+ BASIC_FILE_CC = @BASIC_FILE_CC@
+ BASIC_FILE_H = @BASIC_FILE_H@
+ CC = @CC@
+ CCODECVT_CC = @CCODECVT_CC@
+ CCOLLATE_CC = @CCOLLATE_CC@
+ CCTYPE_CC = @CCTYPE_CC@
+ CFLAGS = @CFLAGS@
+ CLOCALE_CC = @CLOCALE_CC@
+ CLOCALE_H = @CLOCALE_H@
+ CLOCALE_INTERNAL_H = @CLOCALE_INTERNAL_H@
+ CMESSAGES_CC = @CMESSAGES_CC@
+ CMESSAGES_H = @CMESSAGES_H@
+ CMONEY_CC = @CMONEY_CC@
+ CNUMERIC_CC = @CNUMERIC_CC@
+ CPP = @CPP@
+ CPPFLAGS = @CPPFLAGS@
+ CPU_DEFINES_SRCDIR = @CPU_DEFINES_SRCDIR@
+ CPU_OPT_BITS_RANDOM = @CPU_OPT_BITS_RANDOM@
+ CPU_OPT_EXT_RANDOM = @CPU_OPT_EXT_RANDOM@
+ CSTDIO_H = @CSTDIO_H@
+ CTIME_CC = @CTIME_CC@
+ CTIME_H = @CTIME_H@
+ CXX = @CXX@
+ CXXCPP = @CXXCPP@
+ CXXFILT = @CXXFILT@
+ CXXFLAGS = @CXXFLAGS@
+ CYGPATH_W = @CYGPATH_W@
+ C_INCLUDE_DIR = @C_INCLUDE_DIR@
+ DBLATEX = @DBLATEX@
+ DEBUG_FLAGS = @DEBUG_FLAGS@
+ DEFS = @DEFS@
+ DOT = @DOT@
+ DOXYGEN = @DOXYGEN@
+ DSYMUTIL = @DSYMUTIL@
+ DUMPBIN = @DUMPBIN@
+ ECHO_C = @ECHO_C@
+ ECHO_N = @ECHO_N@
+ ECHO_T = @ECHO_T@
+ EGREP = @EGREP@
+ ERROR_CONSTANTS_SRCDIR = @ERROR_CONSTANTS_SRCDIR@
+ EXEEXT = @EXEEXT@
+ EXTRA_CFLAGS = @EXTRA_CFLAGS@
+ EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
+ FGREP = @FGREP@
+ GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
+ GLIBCXX_LIBS = @GLIBCXX_LIBS@
+ GREP = @GREP@
+ HWCAP_CFLAGS = @HWCAP_CFLAGS@
+ INSTALL = @INSTALL@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ LD = @LD@
+ LDFLAGS = @LDFLAGS@
+ LIBICONV = @LIBICONV@
+ LIBOBJS = @LIBOBJS@
+ LIBS = @LIBS@
+ LIBTOOL = @LIBTOOL@
+ LIPO = @LIPO@
+ LN_S = @LN_S@
+ LONG_DOUBLE_COMPAT_FLAGS = @LONG_DOUBLE_COMPAT_FLAGS@
+ LTLIBICONV = @LTLIBICONV@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAINT = @MAINT@
+ MAKEINFO = @MAKEINFO@
+ MKDIR_P = @MKDIR_P@
+ NM = @NM@
+ NMEDIT = @NMEDIT@
+ OBJDUMP = @OBJDUMP@
+ OBJEXT = @OBJEXT@
+ OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
+ OPT_LDFLAGS = @OPT_LDFLAGS@
+ OS_INC_SRCDIR = @OS_INC_SRCDIR@
+ OTOOL = @OTOOL@
+ OTOOL64 = @OTOOL64@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+ PACKAGE_NAME = @PACKAGE_NAME@
+ PACKAGE_STRING = @PACKAGE_STRING@
+ PACKAGE_TARNAME = @PACKAGE_TARNAME@
+ PACKAGE_URL = @PACKAGE_URL@
+ PACKAGE_VERSION = @PACKAGE_VERSION@
+ PATH_SEPARATOR = @PATH_SEPARATOR@
+ PDFLATEX = @PDFLATEX@
+ RANLIB = @RANLIB@
+ SECTION_FLAGS = @SECTION_FLAGS@
+ SECTION_LDFLAGS = @SECTION_LDFLAGS@
+ SED = @SED@
+ SET_MAKE = @SET_MAKE@
+ SHELL = @SHELL@
+ STRIP = @STRIP@
+ SYMVER_FILE = @SYMVER_FILE@
+ TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ VTV_CXXFLAGS = @VTV_CXXFLAGS@
+ VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
+ VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
+ WARN_FLAGS = @WARN_FLAGS@
+ XMLCATALOG = @XMLCATALOG@
+ XMLLINT = @XMLLINT@
+ XSLTPROC = @XSLTPROC@
+ XSL_STYLE_DIR = @XSL_STYLE_DIR@
+ abs_builddir = @abs_builddir@
+ abs_srcdir = @abs_srcdir@
+ abs_top_builddir = @abs_top_builddir@
+ abs_top_srcdir = @abs_top_srcdir@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ am__leading_dot = @am__leading_dot@
+ am__tar = @am__tar@
+ am__untar = @am__untar@
+ baseline_dir = @baseline_dir@
+ baseline_subdir_switch = @baseline_subdir_switch@
+ bindir = @bindir@
+ build = @build@
+ build_alias = @build_alias@
+ build_cpu = @build_cpu@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ builddir = @builddir@
+ check_msgfmt = @check_msgfmt@
+ datadir = @datadir@
+ datarootdir = @datarootdir@
+ docdir = @docdir@
+ dvidir = @dvidir@
+ enable_shared = @enable_shared@
+ enable_static = @enable_static@
+ exec_prefix = @exec_prefix@
+ get_gcc_base_ver = @get_gcc_base_ver@
+ glibcxx_MOFILES = @glibcxx_MOFILES@
+ glibcxx_PCHFLAGS = @glibcxx_PCHFLAGS@
+ glibcxx_POFILES = @glibcxx_POFILES@
+ glibcxx_builddir = @glibcxx_builddir@
+ glibcxx_compiler_pic_flag = @glibcxx_compiler_pic_flag@
+ glibcxx_compiler_shared_flag = @glibcxx_compiler_shared_flag@
+ glibcxx_cxx98_abi = @glibcxx_cxx98_abi@
+ glibcxx_localedir = @glibcxx_localedir@
+ glibcxx_lt_pic_flag = @glibcxx_lt_pic_flag@
+ glibcxx_prefixdir = @glibcxx_prefixdir@
+ glibcxx_srcdir = @glibcxx_srcdir@
+ glibcxx_toolexecdir = @glibcxx_toolexecdir@
+ glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@
+ gxx_include_dir = @gxx_include_dir@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
+ htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+ libtool_VERSION = @libtool_VERSION@
+ localedir = @localedir@
+ localstatedir = @localstatedir@
+ lt_host_flags = @lt_host_flags@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ multi_basedir = @multi_basedir@
+ oldincludedir = @oldincludedir@
+ pdfdir = @pdfdir@
+ port_specific_symbol_files = @port_specific_symbol_files@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+ psdir = @psdir@
+ python_mod_dir = @python_mod_dir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ srcdir = @srcdir@
+ sysconfdir = @sysconfdir@
+ target = @target@
+ target_alias = @target_alias@
+ target_cpu = @target_cpu@
+ target_os = @target_os@
+ target_vendor = @target_vendor@
+ thread_header = @thread_header@
+ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ toplevel_builddir = @toplevel_builddir@
+ toplevel_srcdir = @toplevel_srcdir@
+ 
+ # May be used by various substitution variables.
+ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
+ MAINT_CHARSET = latin1
+ mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
+ PWD_COMMAND = $${PWDCMD-pwd}
+ STAMP = echo timestamp >
+ toolexecdir = $(glibcxx_toolexecdir)
+ toolexeclibdir = $(glibcxx_toolexeclibdir)
+ @ENABLE_WERROR_FALSE@WERROR_FLAG = 
+ @ENABLE_WERROR_TRUE@WERROR_FLAG = -Werror
+ @ENABLE_EXTERN_TEMPLATE_FALSE@XTEMPLATE_FLAGS = 
+ @ENABLE_EXTERN_TEMPLATE_TRUE@XTEMPLATE_FLAGS = -fno-implicit-templates
+ 
+ # These bits are all figured out from configure.  Look in acinclude.m4
+ # or configure.ac to see how they are set.  See GLIBCXX_EXPORT_FLAGS.
+ CONFIG_CXXFLAGS = \
+ 	$(SECTION_FLAGS) $(HWCAP_CFLAGS) -frandom-seed=$@
+ 
+ WARN_CXXFLAGS = \
+ 	$(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once 
+ 
+ 
+ # -I/-D flags to pass when compiling.
+ AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS)
+ 
+ # Convenience library for C++17 runtime.
+ noinst_LTLIBRARIES = libc++17convenience.la
+ headers = 
+ @ENABLE_DUAL_ABI_FALSE@extra_string_inst_sources = 
+ @ENABLE_DUAL_ABI_TRUE@extra_string_inst_sources = cow-string-inst.cc
+ @ENABLE_DUAL_ABI_FALSE@extra_fs_sources = 
+ @ENABLE_DUAL_ABI_TRUE@extra_fs_sources = \
+ @ENABLE_DUAL_ABI_TRUE@	cow-fs_dir.cc \
+ @ENABLE_DUAL_ABI_TRUE@	cow-fs_ops.cc \
+ @ENABLE_DUAL_ABI_TRUE@	cow-fs_path.cc
+ 
+ # XTEMPLATE_FLAGS =
+ @ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources = 
+ 
+ # XTEMPLATE_FLAGS = -fno-implicit-templates
+ @ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \
+ @ENABLE_EXTERN_TEMPLATE_TRUE@	ostream-inst.cc \
+ @ENABLE_EXTERN_TEMPLATE_TRUE@	string-inst.cc \
+ @ENABLE_EXTERN_TEMPLATE_TRUE@	$(extra_string_inst_sources)
+ 
+ sources = \
+ 	fs_dir.cc \
+ 	fs_ops.cc \
+ 	fs_path.cc \
+ 	memory_resource.cc \
+ 	$(extra_fs_sources)
+ 
+ libc__17convenience_la_SOURCES = $(sources)  $(inst_sources)
+ 
+ # 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
+ # set this option because CONFIG_CXXFLAGS has to be after
+ # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
+ # as the occasion calls for it.
+ AM_CXXFLAGS = \
+ 	-std=gnu++17 \
+ 	$(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \
+ 	$(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \
+ 	$(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) \
+ 	-fimplicit-templates
+ 
+ AM_MAKEFLAGS = \
+ 	"gxx_include_dir=$(gxx_include_dir)"
+ 
+ 
+ # Libtool notes
+ 
+ # 1) In general, libtool expects an argument such as `--tag=CXX' when
+ # using the C++ compiler, because that will enable the settings
+ # detected when C++ support was being configured.  However, when no
+ # such flag is given in the command line, libtool attempts to figure
+ # it out by matching the compiler name in each configuration section
+ # against a prefix of the command line.  The problem is that, if the
+ # compiler name and its initial flags stored in the libtool
+ # configuration file don't match those in the command line, libtool
+ # can't decide which configuration to use, and it gives up.  The
+ # correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe
+ # CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to
+ # attempt to infer which configuration to use.
+ #
+ # The second tag argument, `--tag disable-shared` means that libtool
+ # only compiles each source once, for static objects. In actuality,
+ # glibcxx_lt_pic_flag and glibcxx_compiler_shared_flag are added to
+ # the libtool command that is used create the object, which is
+ # suitable for shared libraries.  The `--tag disable-shared` must be
+ # placed after --tag CXX lest things CXX undo the affect of
+ # disable-shared.
+ 
+ # 2) Need to explicitly set LTCXXCOMPILE so that EXTRA_CXX_FLAGS is
+ # last. (That way, things like -O2 passed down from the toplevel can
+ # be overridden by --enable-debug.)
+ LTCXXCOMPILE = \
+ 	$(LIBTOOL) --tag CXX --tag disable-shared \
+ 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \
+ 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(EXTRA_CXX_FLAGS)
+ 
+ LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
+ 
+ # 3) We'd have a problem when building the shared libstdc++ object if
+ # the rules automake generates would be used.  We cannot allow g++ to
+ # be used since this would add -lstdc++ to the link line which of
+ # course is problematic at this point.  So, we get the top-level
+ # directory to configure libstdc++-v3 to use gcc as the C++
+ # compilation driver.
+ CXXLINK = \
+ 	$(LIBTOOL) --tag CXX --tag disable-shared \
+ 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CXX) \
+ 	$(VTV_CXXLINKFLAGS) \
+ 	$(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
+ 
+ all: all-am
+ 
+ .SUFFIXES:
+ .SUFFIXES: .cc .lo .o .obj
+ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/fragment.am $(am__configure_deps)
+ 	@for dep in $?; do \
+ 	  case '$(am__configure_deps)' in \
+ 	    *$$dep*) \
+ 	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ 	        && { if test -f $@; then exit 0; else break; fi; }; \
+ 	      exit 1;; \
+ 	  esac; \
+ 	done; \
+ 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/c++17/Makefile'; \
+ 	$(am__cd) $(top_srcdir) && \
+ 	  $(AUTOMAKE) --foreign --ignore-deps src/c++17/Makefile
+ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ 	@case '$?' in \
+ 	  *config.status*) \
+ 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ 	  *) \
+ 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ 	esac;
+ $(top_srcdir)/fragment.am $(am__empty):
+ 
+ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+ 
+ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+ $(am__aclocal_m4_deps):
+ 
+ clean-noinstLTLIBRARIES:
+ 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ 	@list='$(noinst_LTLIBRARIES)'; \
+ 	locs=`for p in $$list; do echo $$p; done | \
+ 	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ 	      sort -u`; \
+ 	test -z "$$locs" || { \
+ 	  echo rm -f $${locs}; \
+ 	  rm -f $${locs}; \
+ 	}
+ 
+ libc++17convenience.la: $(libc__17convenience_la_OBJECTS) $(libc__17convenience_la_DEPENDENCIES) $(EXTRA_libc__17convenience_la_DEPENDENCIES) 
+ 	$(AM_V_CXXLD)$(CXXLINK)  $(libc__17convenience_la_OBJECTS) $(libc__17convenience_la_LIBADD) $(LIBS)
+ 
+ mostlyclean-compile:
+ 	-rm -f *.$(OBJEXT)
+ 
+ distclean-compile:
+ 	-rm -f *.tab.c
+ 
+ .cc.o:
+ 	$(AM_V_CXX)$(CXXCOMPILE) -c -o $@ $<
+ 
+ .cc.obj:
+ 	$(AM_V_CXX)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+ 
+ .cc.lo:
+ 	$(AM_V_CXX)$(LTCXXCOMPILE) -c -o $@ $<
+ 
+ mostlyclean-libtool:
+ 	-rm -f *.lo
+ 
+ clean-libtool:
+ 	-rm -rf .libs _libs
+ 
+ ID: $(am__tagged_files)
+ 	$(am__define_uniq_tagged_files); mkid -fID $$unique
+ tags: tags-am
+ TAGS: tags
+ 
+ tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ 	set x; \
+ 	here=`pwd`; \
+ 	$(am__define_uniq_tagged_files); \
+ 	shift; \
+ 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ 	  test -n "$$unique" || unique=$$empty_fix; \
+ 	  if test $$# -gt 0; then \
+ 	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ 	      "$$@" $$unique; \
+ 	  else \
+ 	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ 	      $$unique; \
+ 	  fi; \
+ 	fi
+ ctags: ctags-am
+ 
+ CTAGS: ctags
+ ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ 	$(am__define_uniq_tagged_files); \
+ 	test -z "$(CTAGS_ARGS)$$unique" \
+ 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ 	     $$unique
+ 
+ GTAGS:
+ 	here=`$(am__cd) $(top_builddir) && pwd` \
+ 	  && $(am__cd) $(top_srcdir) \
+ 	  && gtags -i $(GTAGS_ARGS) "$$here"
+ cscopelist: cscopelist-am
+ 
+ cscopelist-am: $(am__tagged_files)
+ 	list='$(am__tagged_files)'; \
+ 	case "$(srcdir)" in \
+ 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ 	  *) sdir=$(subdir)/$(srcdir) ;; \
+ 	esac; \
+ 	for i in $$list; do \
+ 	  if test -f "$$i"; then \
+ 	    echo "$(subdir)/$$i"; \
+ 	  else \
+ 	    echo "$$sdir/$$i"; \
+ 	  fi; \
+ 	done >> $(top_builddir)/cscope.files
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+ installdirs:
+ install: install-am
+ install-exec: install-exec-am
+ install-data: install-data-am
+ uninstall: uninstall-am
+ 
+ install-am: all-am
+ 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+ 
+ installcheck: installcheck-am
+ install-strip:
+ 	if test -z '$(STRIP)'; then \
+ 	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ 	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ 	      install; \
+ 	else \
+ 	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ 	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ 	fi
+ mostlyclean-generic:
+ 
+ clean-generic:
+ 
+ distclean-generic:
+ 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ 
+ maintainer-clean-generic:
+ 	@echo "This command is intended for maintainers to use"
+ 	@echo "it deletes files that may require special tools to rebuild."
+ clean: clean-am
+ 
+ clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ 	mostlyclean-am
+ 
+ distclean: distclean-am
+ 	-rm -f Makefile
+ distclean-am: clean-am distclean-compile distclean-generic \
+ 	distclean-tags
+ 
+ dvi: dvi-am
+ 
+ dvi-am:
+ 
+ html: html-am
+ 
+ html-am:
+ 
+ info: info-am
+ 
+ info-am:
+ 
+ install-data-am:
+ 
+ install-dvi: install-dvi-am
+ 
+ install-dvi-am:
+ 
+ install-exec-am:
+ 
+ install-html: install-html-am
+ 
+ install-html-am:
+ 
+ install-info: install-info-am
+ 
+ install-info-am:
+ 
+ install-man:
+ 
+ install-pdf: install-pdf-am
+ 
+ install-pdf-am:
+ 
+ install-ps: install-ps-am
+ 
+ install-ps-am:
+ 
+ installcheck-am:
+ 
+ maintainer-clean: maintainer-clean-am
+ 	-rm -f Makefile
+ maintainer-clean-am: distclean-am maintainer-clean-generic
+ 
+ mostlyclean: mostlyclean-am
+ 
+ mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ 	mostlyclean-libtool
+ 
+ pdf: pdf-am
+ 
+ pdf-am:
+ 
+ ps: ps-am
+ 
+ ps-am:
+ 
+ uninstall-am:
+ 
+ .MAKE: install-am install-strip
+ 
+ .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+ 	ctags-am distclean distclean-compile distclean-generic \
+ 	distclean-libtool distclean-tags dvi dvi-am html html-am info \
+ 	info-am install install-am install-data install-data-am \
+ 	install-dvi install-dvi-am install-exec install-exec-am \
+ 	install-html install-html-am install-info install-info-am \
+ 	install-man install-pdf install-pdf-am install-ps \
+ 	install-ps-am install-strip installcheck installcheck-am \
+ 	installdirs maintainer-clean maintainer-clean-generic \
+ 	mostlyclean mostlyclean-compile mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+ 	uninstall-am
+ 
+ .PRECIOUS: Makefile
+ 
+ 
+ vpath % $(top_srcdir)/src/c++17
+ 
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+ .NOEXPORT:
diff -Nrcpad gcc-8.3.0/libstdc++-v3/src/c++98/Makefile.in gcc-8.4.0/libstdc++-v3/src/c++98/Makefile.in
*** gcc-8.3.0/libstdc++-v3/src/c++98/Makefile.in	Fri Nov 17 21:28:10 2017
--- gcc-8.4.0/libstdc++-v3/src/c++98/Makefile.in	Wed Mar  4 08:30:03 2020
*************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
*** 239,244 ****
--- 239,245 ----
  VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
  WARN_FLAGS = @WARN_FLAGS@
  WERROR = @WERROR@
+ XMLCATALOG = @XMLCATALOG@
  XMLLINT = @XMLLINT@
  XSLTPROC = @XSLTPROC@
  XSL_STYLE_DIR = @XSL_STYLE_DIR@
diff -Nrcpad gcc-8.3.0/libstdc++-v3/src/c++98/locale_init.cc gcc-8.4.0/libstdc++-v3/src/c++98/locale_init.cc
*** gcc-8.3.0/libstdc++-v3/src/c++98/locale_init.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/src/c++98/locale_init.cc	Wed Mar  4 08:30:03 2020
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 296,302 ****
    locale::classic()
    {
      _S_initialize();
!     return *(new (&c_locale) locale(_S_classic));
    }
  
    void
--- 296,302 ----
    locale::classic()
    {
      _S_initialize();
!     return *(const locale*)c_locale;
    }
  
    void
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 306,311 ****
--- 306,312 ----
      // One reference for _S_classic, one for _S_global
      _S_classic = new (&c_locale_impl) _Impl(2);
      _S_global = _S_classic;
+     new (&c_locale) locale(_S_classic);
    }
  
    void
diff -Nrcpad gcc-8.3.0/libstdc++-v3/src/filesystem/Makefile.in gcc-8.4.0/libstdc++-v3/src/filesystem/Makefile.in
*** gcc-8.3.0/libstdc++-v3/src/filesystem/Makefile.in	Fri Nov 17 21:28:10 2017
--- gcc-8.4.0/libstdc++-v3/src/filesystem/Makefile.in	Wed Mar  4 08:30:03 2020
*************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
*** 249,254 ****
--- 249,255 ----
  VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
  WARN_FLAGS = @WARN_FLAGS@
  WERROR = @WERROR@
+ XMLCATALOG = @XMLCATALOG@
  XMLLINT = @XMLLINT@
  XSLTPROC = @XSLTPROC@
  XSL_STYLE_DIR = @XSL_STYLE_DIR@
diff -Nrcpad gcc-8.3.0/libstdc++-v3/src/filesystem/dir.cc gcc-8.4.0/libstdc++-v3/src/filesystem/dir.cc
*** gcc-8.3.0/libstdc++-v3/src/filesystem/dir.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/src/filesystem/dir.cc	Wed Mar  4 08:30:03 2020
***************
*** 26,31 ****
--- 26,32 ----
  # define _GLIBCXX_USE_CXX11_ABI 1
  #endif
  
+ #include <bits/largefile-config.h>
  #include <experimental/filesystem>
  #include <utility>
  #include <stack>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/src/filesystem/ops.cc gcc-8.4.0/libstdc++-v3/src/filesystem/ops.cc
*** gcc-8.3.0/libstdc++-v3/src/filesystem/ops.cc	Fri Feb  8 12:20:22 2019
--- gcc-8.4.0/libstdc++-v3/src/filesystem/ops.cc	Wed Mar  4 08:30:03 2020
***************
*** 26,31 ****
--- 26,32 ----
  # define _GLIBCXX_USE_CXX11_ABI 1
  #endif
  
+ #include <bits/largefile-config.h>
  #include <experimental/filesystem>
  #include <functional>
  #include <ostream>
*************** fs::file_size(const path& p, error_code&
*** 795,801 ****
      S(const stat_type& st) : type(make_file_type(st)), size(st.st_size) { }
      S() : type(file_type::not_found) { }
      file_type type;
!     size_t size;
    };
    auto s = do_stat(p, ec, [](const auto& st) { return S{st}; }, S{});
    if (s.type == file_type::regular)
--- 796,802 ----
      S(const stat_type& st) : type(make_file_type(st)), size(st.st_size) { }
      S() : type(file_type::not_found) { }
      file_type type;
!     uintmax_t size;
    };
    auto s = do_stat(p, ec, [](const auto& st) { return S{st}; }, S{});
    if (s.type == file_type::regular)
*************** fs::remove_all(const path& p, error_code
*** 1070,1081 ****
    uintmax_t count = 0;
    if (s.type() == file_type::directory)
      {
!       for (directory_iterator d(p, ec), end; !ec && d != end; d.increment(ec))
! 	count += fs::remove_all(d->path(), ec);
!       if (ec.value() == ENOENT)
! 	ec.clear();
!       else if (ec)
! 	return -1;
      }
  
    if (fs::remove(p, ec))
--- 1071,1087 ----
    uintmax_t count = 0;
    if (s.type() == file_type::directory)
      {
!       directory_iterator d(p, ec), end;
!       while (!ec && d != end)
! 	{
! 	  const auto removed = fs::remove_all(d->path(), ec);
! 	  if (removed == numeric_limits<uintmax_t>::max())
! 	    return -1;
! 	  count += removed;
! 	  d.increment(ec);
! 	  if (ec)
! 	    return -1;
! 	}
      }
  
    if (fs::remove(p, ec))
diff -Nrcpad gcc-8.3.0/libstdc++-v3/src/filesystem/path.cc gcc-8.4.0/libstdc++-v3/src/filesystem/path.cc
*** gcc-8.3.0/libstdc++-v3/src/filesystem/path.cc	Thu May 17 16:10:26 2018
--- gcc-8.4.0/libstdc++-v3/src/filesystem/path.cc	Wed Mar  4 08:30:03 2020
*************** path::_M_split_cmpts()
*** 334,339 ****
--- 334,361 ----
    if (_M_pathname.empty())
      return;
  
+   {
+     // Approximate count of components, to reserve space in _M_cmpts vector:
+     int count = 1;
+     bool saw_sep_last = _S_is_dir_sep(_M_pathname[0]);
+     bool saw_non_sep = !saw_sep_last;
+     for (value_type c : _M_pathname)
+       {
+ 	if (_S_is_dir_sep(c))
+ 	  saw_sep_last = true;
+ 	else if (saw_sep_last)
+ 	  {
+ 	    ++count;
+ 	    saw_sep_last = false;
+ 	    saw_non_sep = true;
+ 	  }
+       }
+     if (saw_non_sep && saw_sep_last)
+       ++count; // empty filename after trailing slash
+     if (count > 1)
+       _M_cmpts.reserve(count);
+   }
+ 
    size_t pos = 0;
    const size_t len = _M_pathname.size();
  
*************** path::_M_split_cmpts()
*** 356,364 ****
  	      pos = 3;
  	      while (pos < len && !_S_is_dir_sep(_M_pathname[pos]))
  		++pos;
  	      _M_add_root_name(pos);
! 	      if (pos < len) // also got root directory
! 		_M_add_root_dir(pos);
  	    }
  	  else
  	    {
--- 378,390 ----
  	      pos = 3;
  	      while (pos < len && !_S_is_dir_sep(_M_pathname[pos]))
  		++pos;
+ 	      if (pos == len)
+ 		{
+ 		  _M_type = _Type::_Root_name;
+ 		  return;
+ 		}
  	      _M_add_root_name(pos);
! 	      _M_add_root_dir(pos);
  	    }
  	  else
  	    {
*************** path::_M_split_cmpts()
*** 367,372 ****
--- 393,403 ----
  	      _M_add_root_dir(0);
  	    }
  	}
+       else if (len == 1) // got root directory only
+ 	{
+ 	  _M_type = _Type::_Root_dir;
+ 	  return;
+ 	}
        else // got root directory
  	_M_add_root_dir(0);
        ++pos;
*************** path::_M_split_cmpts()
*** 375,386 ****
--- 406,433 ----
    else if (len > 1 && _M_pathname[1] == L':')
      {
        // got disk designator
+       if (len == 2)
+ 	{
+ 	  _M_type = _Type::_Root_name;
+ 	  return;
+ 	}
        _M_add_root_name(2);
        if (len > 2 && _S_is_dir_sep(_M_pathname[2]))
  	_M_add_root_dir(2);
        pos = 2;
      }
  #endif
+   else
+     {
+       size_t n = 1;
+       for (; n < _M_pathname.size() && !_S_is_dir_sep(_M_pathname[n]); ++n)
+ 	{ }
+       if (n == _M_pathname.size())
+ 	{
+ 	  _M_type = _Type::_Filename;
+ 	  return;
+ 	}
+     }
  
    size_t back = pos;
    while (pos < len)
diff -Nrcpad gcc-8.3.0/libstdc++-v3/src/filesystem/std-dir.cc gcc-8.4.0/libstdc++-v3/src/filesystem/std-dir.cc
*** gcc-8.3.0/libstdc++-v3/src/filesystem/std-dir.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/src/filesystem/std-dir.cc	Wed Mar  4 08:30:03 2020
***************
*** 26,31 ****
--- 26,32 ----
  # define _GLIBCXX_USE_CXX11_ABI 1
  #endif
  
+ #include <bits/largefile-config.h>
  #include <filesystem>
  #include <experimental/filesystem>
  #include <utility>
*************** struct fs::_Dir : _Dir_base
*** 57,63 ****
    {
      if (const auto entp = _Dir_base::advance(skip_permission_denied, ec))
        {
! 	entry = fs::directory_entry{path / entp->d_name, get_file_type(*entp)};
  	return true;
        }
      else if (!ec)
--- 58,70 ----
    {
      if (const auto entp = _Dir_base::advance(skip_permission_denied, ec))
        {
! 	file_type type = file_type::none;
! #ifdef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE
! 	// Even if the OS supports dirent::d_type the filesystem might not:
! 	if (entp->d_type != DT_UNKNOWN)
! 	  type = get_file_type(*entp);
! #endif
! 	entry = fs::directory_entry{path / entp->d_name, type};
  	return true;
        }
      else if (!ec)
diff -Nrcpad gcc-8.3.0/libstdc++-v3/src/filesystem/std-ops.cc gcc-8.4.0/libstdc++-v3/src/filesystem/std-ops.cc
*** gcc-8.3.0/libstdc++-v3/src/filesystem/std-ops.cc	Fri Feb  8 20:30:00 2019
--- gcc-8.4.0/libstdc++-v3/src/filesystem/std-ops.cc	Wed Mar  4 08:30:03 2020
***************
*** 27,32 ****
--- 27,33 ----
  # define NEED_DO_COPY_FILE
  #endif
  
+ #include <bits/largefile-config.h>
  #include <filesystem>
  #include <experimental/filesystem>
  #include <functional>
*************** fs::absolute(const path& p)
*** 77,82 ****
--- 78,86 ----
  	std::make_error_code(errc::not_supported)));
    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::absolute(const path& p, error_code&
*** 87,93 ****
    path ret;
    if (p.empty())
      {
!       ec = make_error_code(std::errc::no_such_file_or_directory);
        return ret;
      }
    if (p.is_absolute())
--- 91,97 ----
    path ret;
    if (p.empty())
      {
!       ec = make_error_code(std::errc::invalid_argument);
        return ret;
      }
    if (p.is_absolute())
*************** fs::file_size(const path& p, error_code&
*** 1031,1037 ****
      S(const stat_type& st) : type(make_file_type(st)), size(st.st_size) { }
      S() : type(file_type::not_found) { }
      file_type type;
!     size_t size;
    };
    auto s = do_stat(p, ec, [](const auto& st) { return S{st}; }, S{});
    if (s.type == file_type::regular)
--- 1035,1041 ----
      S(const stat_type& st) : type(make_file_type(st)), size(st.st_size) { }
      S() : type(file_type::not_found) { }
      file_type type;
!     uintmax_t size;
    };
    auto s = do_stat(p, ec, [](const auto& st) { return S{st}; }, S{});
    if (s.type == file_type::regular)
*************** fs::remove_all(const path& p, error_code
*** 1347,1358 ****
    uintmax_t count = 0;
    if (s.type() == file_type::directory)
      {
!       for (directory_iterator d(p, ec), end; !ec && d != end; d.increment(ec))
! 	count += fs::remove_all(d->path(), ec);
!       if (ec.value() == ENOENT)
! 	ec.clear();
!       else if (ec)
! 	return -1;
      }
  
    if (fs::remove(p, ec))
--- 1351,1367 ----
    uintmax_t count = 0;
    if (s.type() == file_type::directory)
      {
!       directory_iterator d(p, ec), end;
!       while (!ec && d != end)
! 	{
! 	  const auto removed = fs::remove_all(d->path(), ec);
! 	  if (removed == numeric_limits<uintmax_t>::max())
! 	    return -1;
! 	  count += removed;
! 	  d.increment(ec);
! 	  if (ec)
! 	    return -1;
! 	}
      }
  
    if (fs::remove(p, ec))
diff -Nrcpad gcc-8.3.0/libstdc++-v3/src/filesystem/std-path.cc gcc-8.4.0/libstdc++-v3/src/filesystem/std-path.cc
*** gcc-8.3.0/libstdc++-v3/src/filesystem/std-path.cc	Fri Feb  8 12:20:17 2019
--- gcc-8.4.0/libstdc++-v3/src/filesystem/std-path.cc	Wed Mar  4 08:30:03 2020
*************** path::_M_split_cmpts()
*** 539,544 ****
--- 539,566 ----
      }
    _M_type = _Type::_Multi;
  
+   {
+     // Approximate count of components, to reserve space in _M_cmpts vector:
+     int count = 1;
+     bool saw_sep_last = _S_is_dir_sep(_M_pathname[0]);
+     bool saw_non_sep = !saw_sep_last;
+     for (value_type c : _M_pathname)
+       {
+ 	if (_S_is_dir_sep(c))
+ 	  saw_sep_last = true;
+ 	else if (saw_sep_last)
+ 	  {
+ 	    ++count;
+ 	    saw_sep_last = false;
+ 	    saw_non_sep = true;
+ 	  }
+       }
+     if (saw_non_sep && saw_sep_last)
+       ++count; // empty filename after trailing slash
+     if (count > 1)
+       _M_cmpts.reserve(count);
+   }
+ 
    size_t pos = 0;
    const size_t len = _M_pathname.size();
  
*************** path::_M_split_cmpts()
*** 555,563 ****
  	      pos = 3;
  	      while (pos < len && !_S_is_dir_sep(_M_pathname[pos]))
  		++pos;
  	      _M_add_root_name(pos);
! 	      if (pos < len) // also got root directory
! 		_M_add_root_dir(pos);
  	    }
  	  else
  	    {
--- 577,589 ----
  	      pos = 3;
  	      while (pos < len && !_S_is_dir_sep(_M_pathname[pos]))
  		++pos;
+ 	      if (pos == len)
+ 		{
+ 		  _M_type = _Type::_Root_name;
+ 		  return;
+ 		}
  	      _M_add_root_name(pos);
! 	      _M_add_root_dir(pos);
  	    }
  	  else
  	    {
*************** path::_M_split_cmpts()
*** 584,595 ****
--- 610,637 ----
    else if (len > 1 && _M_pathname[1] == L':')
      {
        // got disk designator
+       if (len == 2)
+ 	{
+ 	  _M_type = _Type::_Root_name;
+ 	  return;
+ 	}
        _M_add_root_name(2);
        if (len > 2 && _S_is_dir_sep(_M_pathname[2]))
  	_M_add_root_dir(2);
        pos = 2;
      }
  #endif
+   else
+     {
+       size_t n = 1;
+       for (; n < _M_pathname.size() && !_S_is_dir_sep(_M_pathname[n]); ++n)
+ 	{ }
+       if (n == _M_pathname.size())
+ 	{
+ 	  _M_type = _Type::_Filename;
+ 	  return;
+ 	}
+     }
  
    size_t back = pos;
    while (pos < len)
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/17_intro/names.cc gcc-8.4.0/libstdc++-v3/testsuite/17_intro/names.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/17_intro/names.cc	Tue Jan 16 20:40:09 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/17_intro/names.cc	Wed Mar  4 08:30:03 2020
***************
*** 19,25 ****
  
  // Define macros for some common variables names that we must not use for
  // naming variables, parameters etc. in the library.
- #define tmp (
  #define A (
  #define B (
  #define C (
--- 19,24 ----
***************
*** 99,104 ****
--- 98,179 ----
  #define y (
  #define z (
  
+ #define tmp (
+ 
+ #if __cplusplus < 201103L
+ #define uses_allocator  (
+ #endif
+ 
+ #if __cplusplus < 201703L
+ // <charconv> defines to_chars_result::ptr and to_chars_result::ec
+ #define ec (
+ #define ptr (
+ #endif
+ 
+ // Common template parameter names
+ #define OutputIterator		OutputIterator is not a reserved name
+ #define InputIterator		InputIterator is not a reserved name
+ #define ForwardIterator		ForwardIterator is not a reserved name
+ #define BidirectionalIterator	BidirectionalIterator is not a reserved name
+ #define RandomAccessIterator	RandomAccessIterator is not a reserved name
+ #define RandomAccessOutputIterator	RandomAccessOutputIterator is not a reserved name
+ #define RAIter			RAIter is not a reserved name
+ #define FwdIter			FwdIter is not a reserved name
+ #define OutIter			OutIter is not a reserved name
+ #define InIter			InIter is not a reserved name
+ 
+ #define Alloc			Alloc is not a reserved name
+ #define BinaryFunction1		BinaryFunction1 is not a reserved name
+ #define BinaryFunction2		BinaryFunction2 is not a reserved name
+ #define Char			Char is not a reserved name
+ #define CharT			CharT is not a reserved name
+ #define Cmp			Cmp is not a reserved name
+ #define Compare			Compare is not a reserved name
+ #define Const_Iterator		Const_Iterator is not a reserved name
+ #define Const_Key_Reference	Const_Key_Reference is not a reserved name
+ #define Const_Node_Iter		Const_Node_Iter is not a reserved name
+ #define Const_Pointer		Const_Pointer is not a reserved name
+ #define Const_Reference		Const_Reference is not a reserved name
+ #define Data			Data is not a reserved name
+ #define DiffType		DiffType is not a reserved name
+ #define Eq			Eq is not a reserved name
+ #define ExecPolicy		ExecPolicy is not a reserved name
+ #define Expected		Expected is not a reserved name
+ #define External_Load_Access	External_Load_Access is not a reserved name
+ #define External_Size_Access	External_Size_Access is not a reserved name
+ #define Fn			Fn is not a reserved name
+ #define Function		Function is not a reserved name
+ #define Functor			Functor is not a reserved name
+ #define Hash			Hash is not a reserved name
+ #define H1			H1 is not a reserved name
+ #define H2			H2 is not a reserved name
+ #define Head			Head is not a reserved name
+ #define It			It is not a reserved name
+ #define Iter			Iter is not a reserved name
+ #define Iterator		Iterator is not a reserved name
+ #define Key			Key is not a reserved name
+ #define Mapped			Mapped is not a reserved name
+ #define Node			Node is not a reserved name
+ #define Node_iter		Node_iter is not a reserved name
+ #define Node_ptr		Node_ptr is not a reserved name
+ #define Overflow		Overflow is not a reserved name
+ #define Pointer			Pointer is not a reserved name
+ #define Policy			Policy is not a reserved name
+ #define Pred			Pred is not a reserved name
+ #define Ptr			Ptr is not a reserved name
+ #define Reference		Reference is not a reserved name
+ #define Seq			Seq is not a reserved name
+ #define Seq_RAIter		Seq_RAIter is not a reserved name
+ #define Series			Series is not a reserved name
+ #define Set			Set is not a reserved name
+ #define String			String is not a reserved name
+ #define Tp			Tp is not a reserved name
+ #define Traits			Traits is not a reserved name
+ #define Type			Type is not a reserved name
+ #define Value			Value is not a reserved name
+ #define ValueT			ValueT is not a reserved name
+ #define ValueType		ValueType is not a reserved name
+ 
  #ifdef _AIX
  // See https://gcc.gnu.org/ml/libstdc++/2017-03/msg00015.html
  #undef f
***************
*** 116,119 ****
--- 191,199 ----
  #undef y
  #endif
  
+ #ifdef __sun__
+ // See https://gcc.gnu.org/ml/libstdc++/2019-05/msg00175.html
+ #undef ptr
+ #endif
+ 
  #include <bits/stdc++.h>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/18_support/51333.cc gcc-8.4.0/libstdc++-v3/testsuite/18_support/51333.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/18_support/51333.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/18_support/51333.cc	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,22 ----
+ // Copyright (C) 2019 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 "-fkeep-inline-functions" }
+ // { dg-do link }
+ 
+ #include <cxxabi.h>
+ int main() { } // PR libstdc++/51333
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc	Tue Feb 27 11:33:30 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc	Wed Mar  4 08:30:03 2020
***************
*** 20,25 ****
--- 20,26 ----
  
  #include <any>
  #include <string>
+ #include <utility>
  #include <cstring>
  #include <testsuite_hooks.h>
  
*************** void test05()
*** 121,126 ****
--- 122,175 ----
    VERIFY( p == nullptr );
  }
  
+ void test06()
+ {
+   // The contained value of a std::any is always an object type,
+   // but std::any_cast does not forbid checking for function types.
+ 
+   any a(1);
+   void (*p1)() = any_cast<void()>(&a);
+   VERIFY( p1 == nullptr );
+   int (*p2)(int) = any_cast<int(int)>(&a);
+   VERIFY( p2 == nullptr );
+   int (*p3)() = any_cast<int()>(&std::as_const(a));
+   VERIFY( p3 == nullptr );
+ 
+   try {
+     any_cast<int(&)()>(a);
+     VERIFY( false );
+   } catch (const std::bad_any_cast&) {
+   }
+ 
+   try {
+     any_cast<int(&)()>(std::move(a));
+     VERIFY( false );
+   } catch (const std::bad_any_cast&) {
+   }
+ 
+   try {
+     any_cast<int(&)()>(std::as_const(a));
+     VERIFY( false );
+   } catch (const std::bad_any_cast&) {
+   }
+ }
+ 
+ void test07()
+ {
+   int arr[3];
+   any a(arr);
+   VERIFY( a.type() == typeid(int*) );	// contained value is decayed
+ 
+   int (*p1)[3] = any_cast<int[3]>(&a);
+   VERIFY( a.type() != typeid(int[3]) ); // so any_cast should return nullptr
+   VERIFY( p1 == nullptr );
+   int (*p2)[] = any_cast<int[]>(&a);
+   VERIFY( a.type() != typeid(int[]) );	// so any_cast should return nullptr
+   VERIFY( p2 == nullptr );
+   const int (*p3)[] = any_cast<int[]>(&std::as_const(a));
+   VERIFY( p3 == nullptr );
+ }
+ 
  int main()
  {
    test01();
*************** int main()
*** 128,131 ****
--- 177,182 ----
    test03();
    test04();
    test05();
+   test06();
+   test07();
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc	Wed Mar  4 08:30:03 2020
*************** namespace std
*** 30,35 ****
--- 30,36 ----
    typedef void test_type5;
    typedef const void test_type6;  
  
+   template struct common_type<>;
    template struct common_type<test_type1>;
    template struct common_type<test_type1, test_type2>;
    template struct common_type<test_type1, test_type2, test_type3>;
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc	Wed Mar  4 08:30:03 2020
*************** namespace std {
*** 159,165 ****
--- 159,168 ----
    };
  }
  
+ static_assert(is_type<std::common_type<int>, int>(), "");
+ static_assert(is_type<std::common_type<const int>, int>(), "");
  static_assert(is_type<std::common_type<int, int>, int>(), "");
+ static_assert(is_type<std::common_type<const int, int>, int>(), "");
  static_assert(is_type<std::common_type<ScEn, ScEn>, ScEn>(), "");
  static_assert(is_type<std::common_type<UnscEn, UnscEn>, UnscEn>(), "");
  static_assert(is_type<std::common_type<UnscEn, int>, int>(), "");
*************** static_assert(is_type<std::common_type<i
*** 180,185 ****
--- 183,190 ----
  	      const volatile int*>(), "");
  static_assert(is_type<std::common_type<void*, const volatile int*>,
  	      const volatile void*>(), "");
+ static_assert(is_type<std::common_type<void>, void>(), "");
+ static_assert(is_type<std::common_type<const void>, void>(), "");
  static_assert(is_type<std::common_type<void, void>, void>(), "");
  static_assert(is_type<std::common_type<const void, const void>, void>(), "");
  static_assert(is_type<std::common_type<int&, int&&>, int>(), "");
*************** static_assert(!has_type<std::common_type
*** 316,321 ****
--- 321,334 ----
  static_assert(!has_type<std::common_type<std::initializer_list<int>,
  					 std::initializer_list<long>>>(), "");
  
+ // PR libstdc++/89102
+ static_assert(!has_type<std::common_type<int() &>>(), "");
+ static_assert(!has_type<std::common_type<int() & noexcept>>(), "");
+ static_assert(!has_type<std::common_type<int() const>>(), "");
+ static_assert(!has_type<std::common_type<int(...) &>>(), "");
+ static_assert(!has_type<std::common_type<int(...) & noexcept>>(), "");
+ static_assert(!has_type<std::common_type<int(...) const>>(), "");
+ 
  void test(int i)
  {
    auto local_lmd1 = [=](int, double) { return i + i; };
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc	Wed Mar  4 08:30:03 2020
*************** template<typename... Args>
*** 25,31 ****
  constexpr
  std::array<typename std::common_type<Args...>::type, 
    sizeof...(Args)>
! make_array(Args&&... args)  // { dg-error "invalid use" }
  {
    typedef typename std::common_type<Args...>::type CT;
    return std::array<CT, sizeof...(Args)>{static_cast<CT>
--- 25,31 ----
  constexpr
  std::array<typename std::common_type<Args...>::type, 
    sizeof...(Args)>
! make_array(Args&&... args)  // { dg-error "no type.*common_type<>" }
  {
    typedef typename std::common_type<Args...>::type CT;
    return std::array<CT, sizeof...(Args)>{static_cast<CT>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/hash/89629.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/hash/89629.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/hash/89629.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/hash/89629.cc	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,43 ----
+ // Copyright (C) 2019 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 { lp64 || llp64 } } }
+ // { dg-require-effective-target c++11 }
+ // { dg-require-effective-target run_expensive_tests }
+ 
+ #include <functional>
+ #include <string>
+ 
+ void
+ test01()
+ {
+   const std::size_t big = std::size_t(1) << 31;
+   std::string s;
+   try {
+     s.resize(big, 'a');
+   } catch (const std::bad_alloc&) {
+     return; // try to avoid a FAIL if memory allocation fails
+   }
+   // PR libstdc++/89629
+   (void) std::hash<std::string>{}(s);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc	Wed Mar  4 08:30:03 2020
*************** static_assert(!std::is_constructible<int
*** 806,815 ****
  // Binding through reference-compatible type is required to perform
  // direct-initialization as described in [over.match.ref] p. 1 b. 1:
  static_assert(std::is_constructible<int&, ExplicitTo<int&>>::value, "Error");
- static_assert(std::is_constructible<const int&, ExplicitTo<int&&>>::value,
- 	      "Error");
  static_assert(std::is_constructible<int&&, ExplicitTo<int&&>>::value, "Error");
  
  // Binding through temporary behaves like copy-initialization,
  // see [dcl.init.ref] p. 5, very last sub-bullet:
  static_assert(!std::is_constructible<const int&, ExplicitTo<double&&>>::value,
--- 806,817 ----
  // Binding through reference-compatible type is required to perform
  // direct-initialization as described in [over.match.ref] p. 1 b. 1:
  static_assert(std::is_constructible<int&, ExplicitTo<int&>>::value, "Error");
  static_assert(std::is_constructible<int&&, ExplicitTo<int&&>>::value, "Error");
  
+ // But an xvalue doesn't count for direct binding.
+ static_assert(!std::is_constructible<const int&, ExplicitTo<int&&>>::value,
+ 	      "Error");
+ 
  // Binding through temporary behaves like copy-initialization,
  // see [dcl.init.ref] p. 5, very last sub-bullet:
  static_assert(!std::is_constructible<const int&, ExplicitTo<double&&>>::value,
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/is_constructible/value.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_constructible/value.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/is_constructible/value.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_constructible/value.cc	Wed Mar  4 08:30:03 2020
*************** void test01()
*** 35,38 ****
--- 35,45 ----
    static_assert(test_property<is_constructible, ExplicitClass>(false), "");
    static_assert(test_property<is_constructible, ExplicitClass,
  		int, double>(false), "");
+   static_assert(test_property<is_constructible, int[]>(false), "PR c++/90532");
+   static_assert(test_property<is_constructible,
+ 		__gnu_test::construct::Empty[]>(false), "PR c++/90532");
+   static_assert(test_property<is_constructible,
+ 		__gnu_test::construct::Ukn[]>(false), "PR c++/90532");
+   static_assert(test_property<is_constructible,
+ 		__gnu_test::construct::nAny[]>(false), "PR c++/90532");
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc	Wed Mar  4 08:30:03 2020
*************** static_assert(!std::is_default_construct
*** 138,140 ****
--- 138,150 ----
  static_assert(!std::is_default_constructible<const DelCopy>::value, "Error");
  static_assert(!std::is_default_constructible<DelDtor>::value, "Error");
  static_assert(!std::is_default_constructible<const DelDtor>::value, "Error");
+ 
+ static_assert(!std::is_default_constructible<int[]>::value, "PR c++/90532");
+ static_assert(!std::is_default_constructible<Empty[]>::value, "PR c++/90532");
+ static_assert(!std::is_default_constructible<B[]>::value, "PR c++/90532");
+ static_assert(!std::is_default_constructible<D[]>::value, "PR c++/90532");
+ static_assert(!std::is_default_constructible<U[]>::value, "PR c++/90532");
+ static_assert(!std::is_default_constructible<Ukn[]>::value, "PR c++/90532");
+ static_assert(!std::is_default_constructible<Ellipsis[]>::value, "PR c++/90532");
+ static_assert(!std::is_default_constructible<Any[]>::value, "PR c++/90532");
+ static_assert(!std::is_default_constructible<nAny[]>::value, "PR c++/90532");
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc	Wed Mar  4 08:30:03 2020
*************** void test01()
*** 119,127 ****
--- 119,129 ----
    static_assert( ! is_nt_invocable_r< T,     F  >(), "call throws");
    static_assert( ! is_nt_invocable_r< NT,    F  >(), "call throws");
    static_assert( ! is_nt_invocable_r< Ex,    F  >(), "call throws");
+   static_assert( ! is_nt_invocable_r< void,  F  >(), "call throws");
    static_assert( ! is_nt_invocable_r< T,     CF >(), "conversion throws");
    static_assert(   is_nt_invocable_r< NT,    CF >(), "" );
    static_assert( ! is_nt_invocable_r< Ex,    CF >(), "conversion fails");
+   static_assert(   is_nt_invocable_r< void,  CF >(), "");
  
    static_assert( ! is_nt_invocable< F,   int >(), "call throws");
    static_assert(   is_nt_invocable< F&,  int >(), "");
*************** void test01()
*** 140,151 ****
--- 142,155 ----
  
    static_assert(   is_nt_invocable_r< char&,  CF,  int >(), "");
    static_assert(   is_nt_invocable_r< char&,  CF&, int >(), "");
+   static_assert(   is_nt_invocable_r< void,   CF&, int >(), "");
  
    static_assert( ! is_nt_invocable_r< T,      CF&, int >(),
  		   "conversion throws");
    static_assert(   is_nt_invocable_r< NT,     CF&, int >(), "");
    static_assert( ! is_nt_invocable_r< Ex,     CF&, int >(),
  		   "conversion fails, would use explicit constructor");
+   static_assert(   is_nt_invocable_r< void,   CF&, int >(), "");
  
    static_assert( ! is_nt_invocable< F, int, int >(),
  		   "would call private member");
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc	Wed Jul  4 11:44:11 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc	Wed Mar  4 08:30:03 2020
*************** void test01()
*** 180,183 ****
--- 180,185 ----
  		MoveOnly, const MoveOnly&>(false), "");
    static_assert(test_property<is_trivially_constructible,
  		MoveOnly2>(false), "");
+   static_assert(test_property<is_trivially_constructible,
+ 		int[]>(false), "PR c++/90532");
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc	Wed Mar  4 08:30:03 2020
*************** void test01()
*** 62,65 ****
--- 62,74 ----
  		construct::Nontrivial>(false), "");
    static_assert(test_category<is_trivially_default_constructible, 
  		HasTemplateCtor>(true), "");
+ 
+   static_assert(test_category<is_trivially_default_constructible,
+ 		int[]>(false), "PR c++/90532");
+   struct A { };
+   static_assert(test_category<is_trivially_default_constructible,
+ 		A[]>(false), "PR c++/90532");
+   struct B { B() { } };
+   static_assert(test_category<is_trivially_default_constructible,
+ 		B[]>(false), "PR c++/90532");
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/optional/constexpr/observers/4.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/optional/constexpr/observers/4.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/optional/constexpr/observers/4.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/optional/constexpr/observers/4.cc	Wed Mar  4 08:30:03 2020
*************** struct value_type
*** 25,34 ****
    int i;
  };
  
! int main()
  {
    constexpr std::optional<value_type> o { value_type { 51 } };
    constexpr value_type fallback { 3 };
!   static_assert( o.value_or(fallback).i == 51, "" );
!   static_assert( o.value_or(fallback).i == (*o).i, "" );
  }
--- 25,66 ----
    int i;
  };
  
! void test01()
  {
    constexpr std::optional<value_type> o { value_type { 51 } };
    constexpr value_type fallback { 3 };
!   static_assert( o.value_or(fallback).i == 51 );
!   static_assert( o.value_or(fallback).i == (*o).i );
! }
! 
! void test02()
! {
!   constexpr std::optional<value_type> o;
!   constexpr value_type fallback { 3 };
!   static_assert( o.value_or(fallback).i == 3 );
! }
! 
! template<typename T>
!   constexpr std::optional<value_type>
!   make_rvalue(T t)
!   { return std::optional<value_type>{t}; }
! 
! void test03()
! {
!   constexpr value_type fallback { 3 };
!   static_assert( make_rvalue(value_type{51}).value_or(fallback).i == 51 );
! }
! 
! void test04()
! {
!   constexpr value_type fallback { 3 };
!   static_assert( make_rvalue(std::nullopt).value_or(fallback).i == 3 );
! }
! 
! int main()
! {
!   test01();
!   test02();
!   test03();
!   test04();
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/optional/observers/4.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/optional/observers/4.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/optional/observers/4.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/optional/observers/4.cc	Wed Mar  4 08:30:03 2020
*************** struct value_type
*** 26,35 ****
    int i;
  };
  
! int main()
  {
    std::optional<value_type> o { value_type { 51 } };
    value_type fallback { 3 };
    VERIFY( o.value_or(fallback).i == 51 );
    VERIFY( o.value_or(fallback).i == (*o).i );
  }
--- 26,67 ----
    int i;
  };
  
! void test01()
  {
    std::optional<value_type> o { value_type { 51 } };
    value_type fallback { 3 };
    VERIFY( o.value_or(fallback).i == 51 );
    VERIFY( o.value_or(fallback).i == (*o).i );
  }
+ 
+ void test02()
+ {
+   std::optional<value_type> o;
+   value_type fallback { 3 };
+   VERIFY( o.value_or(fallback).i == 3 );
+ }
+ 
+ void test03()
+ {
+   std::optional<value_type> o { value_type { 51 } };
+   value_type fallback { 3 };
+   VERIFY( std::move(o).value_or(fallback).i == 51 );
+   VERIFY( o.has_value() );
+   VERIFY( std::move(o).value_or(fallback).i == (*o).i );
+ }
+ 
+ void test04()
+ {
+   std::optional<value_type> o;
+   value_type fallback { 3 };
+   VERIFY( std::move(o).value_or(fallback).i == 3 );
+   VERIFY( !o.has_value() );
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   test03();
+   test04();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc	Wed Mar  4 08:30:03 2020
*************** test01()
*** 46,50 ****
    scoped_alloc sa;
    auto p = sa.allocate(1);
    sa.construct(p);  // this is required to be ill-formed
!   // { dg-error "static assertion failed" "" { target *-*-* } 90 }
  }
--- 46,50 ----
    scoped_alloc sa;
    auto p = sa.allocate(1);
    sa.construct(p);  // this is required to be ill-formed
!   // { dg-error "failed: .* uses_allocator is true" "" { target *-*-* } 0 }
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,34 ----
+ // Copyright (C) 2019 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 <memory>
+ #include <scoped_allocator>
+ 
+ // DR 2586. Wrong value category used in scoped_allocator_adaptor::construct()
+ 
+ struct X {
+   using allocator_type = std::allocator<X>;
+   X(std::allocator_arg_t, allocator_type&&) { }
+   X(const allocator_type&) { }
+ };
+ 
+ int main() {
+   std::scoped_allocator_adaptor<std::allocator<X>> sa;
+   sa.construct(sa.allocate(1));
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc	Wed Mar  4 08:30:03 2020
*************** void test02()
*** 181,189 ****
--- 181,203 ----
    test_type empty = make_tuple();
  }
  
+ void test03()
+ {
+   struct dr2586
+   {
+     using allocator_type = std::allocator<int>;
+     dr2586(std::allocator_arg_t, allocator_type&&) { }
+     dr2586(const allocator_type&) { }
+   };
+ 
+   const dr2586::allocator_type a;
+   std::tuple<dr2586> t{std::allocator_arg, a};
+ }
+ 
  int main()
  {
    test01();
    test02();
+   test03();
    return 0;
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc	Wed Mar  4 08:30:03 2020
*************** void f()
*** 42,51 ****
    std::unique_ptr<int, D&> ud(nullptr, d);
    ub = std::move(ud); // { dg-error "no match" }
    ub2 = ud; // { dg-error "no match" }
- // { dg-error "no type" "" { target *-*-* } 307 }
  
    std::unique_ptr<int[], B&> uba(nullptr, b);
    std::unique_ptr<int[], D&> uda(nullptr, d);
    uba = std::move(uda); // { dg-error "no match" }
- // { dg-error "no type" "" { target *-*-* } 566 }
  }
--- 42,50 ----
    std::unique_ptr<int, D&> ud(nullptr, d);
    ub = std::move(ud); // { dg-error "no match" }
    ub2 = ud; // { dg-error "no match" }
  
    std::unique_ptr<int[], B&> uba(nullptr, b);
    std::unique_ptr<int[], D&> uda(nullptr, d);
    uba = std::move(uda); // { dg-error "no match" }
  }
+ // { dg-prune-output "no type" }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,46 ----
+ // Copyright (C) 2019 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 <memory>
+ 
+ struct D1
+ {
+   void operator()(int* p) const noexcept { }
+ };
+ 
+ struct D2 : D1
+ {
+   D2& operator=(D1&&) noexcept { return *this; }
+ };
+ 
+ void
+ test01()
+ {
+   std::unique_ptr<int, D1> d1;
+   std::unique_ptr<int, D2> d2;
+   d2 = std::move(d1);
+ }
+ 
+ void
+ test02()
+ {
+   std::unique_ptr<int[], D1> d1;
+   std::unique_ptr<int[], D2> d2;
+   d2 = std::move(d1);
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc	Wed Mar  4 08:30:03 2020
*************** test07()
*** 39,45 ****
    std::unique_ptr<const A[]> cA3(p); // { dg-error "no matching function" }
    std::unique_ptr<volatile A[]> vA3(p); // { dg-error "no matching function" }
    std::unique_ptr<const volatile A[]> cvA3(p); // { dg-error "no matching function" }
!   // { dg-error "no type" "" { target *-*-* } 473 }
  }
  
  template<typename T>
--- 39,45 ----
    std::unique_ptr<const A[]> cA3(p); // { dg-error "no matching function" }
    std::unique_ptr<volatile A[]> vA3(p); // { dg-error "no matching function" }
    std::unique_ptr<const volatile A[]> cvA3(p); // { dg-error "no matching function" }
!   // { dg-prune-output "no type" }
  }
  
  template<typename T>
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/93562.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/93562.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/93562.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/93562.cc	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,98 ----
+ // 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 } }
+ 
+ #include <memory>
+ #include <testsuite_hooks.h>
+ 
+ struct incomplete;
+ 
+ // This function isn't called, we just need to check it compiles.
+ void
+ test01(std::unique_ptr<incomplete>& p1, std::unique_ptr<incomplete>& p2)
+ {
+   // PR libstdc++/93562
+   p1.swap(p2);
+   swap(p1, p2);
+ }
+ 
+ // This function isn't called, we just need to check it compiles.
+ void
+ test02(std::unique_ptr<incomplete[]>& p1, std::unique_ptr<incomplete[]>& p2)
+ {
+   // PR libstdc++/93562
+   p1.swap(p2);
+   swap(p1, p2);
+ }
+ 
+ namespace A
+ {
+   struct Deleter
+   {
+     Deleter& operator=(const Deleter&) = delete;
+ 
+     void operator()(int* p) const noexcept { delete p; }
+ 
+     // found by ADL
+     friend void swap(Deleter& lhs, Deleter& rhs) noexcept
+     { std::swap(lhs.id, rhs.id); }
+ 
+     int id;
+   };
+ 
+   static_assert(!std::is_move_assignable<Deleter>::value, "not assignable");
+ #if __cplusplus >= 201703L
+   static_assert(std::is_swappable_v<Deleter>, "but swappable");
+ #endif
+ } // namespace A
+ 
+ void
+ test03()
+ {
+   std::unique_ptr<int, A::Deleter> p1(new int(1), { -1 });
+   std::unique_ptr<int, A::Deleter> p2(new int(2), { -2 });
+   int* const pi1 = p1.get();
+   int* const pi2 = p2.get();
+   // This type must swappable even though the deleter is not move-assignable:
+   swap(p1, p2);
+   VERIFY(p1.get() == pi2);
+   VERIFY(p1.get_deleter().id == -2);
+   VERIFY(p2.get() == pi1);
+   VERIFY(p2.get_deleter().id == -1);
+ }
+ 
+ void
+ test04()
+ {
+   std::unique_ptr<int[], A::Deleter> p1(new int[1]{1}, { -1 });
+   std::unique_ptr<int[], A::Deleter> p2(new int[2]{2, 2}, { -2 });
+   int* const pi1 = p1.get();
+   int* const pi2 = p2.get();
+   // This type must swappable even though the deleter is not move-assignable:
+   swap(p1, p2);
+   VERIFY(p1.get() == pi2);
+   VERIFY(p1.get_deleter().id == -2);
+   VERIFY(p2.get() == pi1);
+   VERIFY(p2.get_deleter().id == -1);
+ }
+ 
+ int main()
+ {
+   test03();
+   test04();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc	Wed Mar  4 08:30:03 2020
*************** test01()
*** 44,48 ****
  {
    alloc_type a;
    std::tuple<X> t(std::allocator_arg, a); // this is required to be ill-formed
!   // { dg-error "static assertion failed" "" { target *-*-* } 90 }
  }
--- 44,48 ----
  {
    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 }
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc	Wed Mar  4 08:30:03 2020
*************** void test01()
*** 43,46 ****
  
    tuple<Type> t(allocator_arg, a, 1);
  }
! // { dg-error "static assertion failed" "" { target *-*-* } 90 }
--- 43,46 ----
  
    tuple<Type> t(allocator_arg, a, 1);
  }
! // { dg-error "failed: .* uses_allocator is true" "" { target *-*-* } 0 }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/20_util/variant/compile.cc gcc-8.4.0/libstdc++-v3/testsuite/20_util/variant/compile.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/20_util/variant/compile.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/20_util/variant/compile.cc	Wed Mar  4 08:30:03 2020
*************** void arbitrary_ctor()
*** 129,138 ****
--- 129,143 ----
    static_assert(noexcept(variant<int, DefaultNoexcept>(DefaultNoexcept{})), "");
  }
  
+ struct none { none() = delete; };
+ struct any { template <typename T> any(T&&) {} };
+ 
  void in_place_index_ctor()
  {
    variant<string, string> a(in_place_index<0>, "a");
    variant<string, string> b(in_place_index<1>, {'a'});
+ 
+   static_assert(!is_constructible_v<variant<none, any>, std::in_place_index_t<0>>, "PR libstdc++/90165");
  }
  
  void in_place_type_ctor()
*************** void in_place_type_ctor()
*** 140,145 ****
--- 145,151 ----
    variant<int, string, int> a(in_place_type<string>, "a");
    variant<int, string, int> b(in_place_type<string>, {'a'});
    static_assert(!is_constructible_v<variant<string, string>, in_place_type_t<string>, const char*>, "");
+   static_assert(!is_constructible_v<variant<none, any>, std::in_place_type_t<none>>, "PR libstdc++/90165");
  }
  
  void dtor()
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc gcc-8.4.0/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,28 ----
+ // Copyright (C) 2019 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++17 -fexceptions -fnon-call-exceptions -O1" }
+ // { dg-do run { target { powerpc*-*-linux* i?86-*-linux* x86_64-*-linux* } } }
+ // { dg-require-effective-target c++17 }
+ 
+ #include <string_view>
+ 
+ int main()
+ {
+   std::string_view s1, s2;
+   return s1 != s2;
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc gcc-8.4.0/libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc	Wed Mar  4 08:30:03 2020
***************
*** 17,31 ****
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
- 
- // NOTE: This makes use of the fact that we know how moveable
- // is implemented on list (via swap). If the implementation changed
- // this test may begin to fail.
- 
  #include <forward_list>
  #include <testsuite_hooks.h>
  
! int main()
  {
    std::forward_list<double> a = {0.0, 1.0, 2.0, 3.0, 4.0};
    std::forward_list<double> b = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0};
--- 17,27 ----
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
  #include <forward_list>
  #include <testsuite_hooks.h>
  
! void
! test01()
  {
    std::forward_list<double> a = {0.0, 1.0, 2.0, 3.0, 4.0};
    std::forward_list<double> b = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0};
*************** int main()
*** 43,48 ****
    VERIFY((b >  a) == true);
    VERIFY((b >= a) == true);
    VERIFY((b <= a) == false);
  
!   return 0;
  }
--- 39,78 ----
    VERIFY((b >  a) == true);
    VERIFY((b >= a) == true);
    VERIFY((b <= a) == false);
+ }
  
! void
! test02()
! {
!   // The EqualityComparable requirements only require ==
!   struct X {
!     bool operator==(const X&) const { return true; }
!   };
! 
!   std::forward_list<X> a(2);
!   const auto b = a;
!   VERIFY( a == b );
! }
! 
! void
! test03()
! {
!   // The LessThanComparable requirements only require <
!   struct X {
!     bool operator<(const X&) const { return false; }
!   };
! 
!   std::forward_list<X> a(2);
!   const auto b = a;
!   VERIFY( !(a < b) );
!   VERIFY( !(a > b) );
!   VERIFY( a <= b );
!   VERIFY( a >= b );
! }
! 
! int main()
! {
!   test01();
!   test02();
!   test03();
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc gcc-8.4.0/libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,60 ----
+ // Copyright (C) 2019 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 <forward_list>
+ #include <testsuite_hooks.h>
+ 
+ // PR libstdc++/90105 - std::forward_list::sort() is not "stable"
+ 
+ struct X
+ {
+   int key;
+   int val;
+ };
+ 
+ bool operator<(const X& l, const X& r)
+ { return l.key < r.key; }
+ 
+ bool operator==(const X& l, const X& r)
+ { return l.key == r.key && l.val == r.val; }
+ 
+ void
+ test01()
+ {
+   std::forward_list<X> l{ {1, 1}, {2, 2}, {1, 3}, {0, 4}, {2, 5}, {0, 6} };
+   l.sort();
+   std::forward_list<X> exp{ {0, 4}, {0, 6}, {1, 1}, {1, 3}, {2, 2}, {2, 5} };
+   VERIFY( l == exp );
+ }
+ 
+ void
+ test02()
+ {
+   std::forward_list<X> l{ {1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6} };
+   const std::forward_list<X> exp = l;
+   l.sort();
+   VERIFY( l == exp );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/23_containers/map/48101_neg.cc gcc-8.4.0/libstdc++-v3/testsuite/23_containers/map/48101_neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/23_containers/map/48101_neg.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/23_containers/map/48101_neg.cc	Wed Mar  4 08:30:03 2020
***************
*** 23,30 ****
  void
  test01()
  {
!   std::map<int, int, std::less<int*>> c;      // { dg-error "here" }
!   std::map<int, int, std::allocator<int>> c2; // { dg-error "here" }
  }
  
  // { dg-error "comparison object must be invocable" "" { target *-*-* } 0 }
--- 23,36 ----
  void
  test01()
  {
!   std::map<int, int, std::less<int*>> c;
!   c.find(1);  // { dg-error "here" }
!   std::map<int, int, std::allocator<int>> c2;
!   c2.find(2); // { dg-error "here" }
  }
  
+ // { dg-error "_Compare = std::less<int.>" "" { target *-*-* } 0 }
+ // { dg-error "_Compare = std::allocator<int>" "" { target *-*-* } 0 }
  // { dg-error "comparison object must be invocable" "" { target *-*-* } 0 }
+ // { dg-prune-output "no match for call" }
+ // { dg-prune-output "invalid conversion" }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc gcc-8.4.0/libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc	Wed Mar  4 08:30:03 2020
***************
*** 23,30 ****
  void
  test01()
  {
!   std::multimap<int, int, std::less<int*>> c;      // { dg-error "here" }
!   std::multimap<int, int, std::allocator<int>> c2; // { dg-error "here" }
  }
  
  // { dg-error "comparison object must be invocable" "" { target *-*-* } 0 }
--- 23,36 ----
  void
  test01()
  {
!   std::multimap<int, int, std::less<int*>> c;
!   c.find(1);  // { dg-error "here" }
!   std::multimap<int, int, std::allocator<int>> c2;
!   c2.find(2); // { dg-error "here" }
  }
  
+ // { dg-error "_Compare = std::less<int.>" "" { target *-*-* } 0 }
+ // { dg-error "_Compare = std::allocator<int>" "" { target *-*-* } 0 }
  // { dg-error "comparison object must be invocable" "" { target *-*-* } 0 }
+ // { dg-prune-output "no match for call" }
+ // { dg-prune-output "invalid conversion" }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc gcc-8.4.0/libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc	Wed Mar  4 08:30:03 2020
*************** void
*** 23,31 ****
  test01()
  {
    std::multiset<const int> c;		   // { dg-error "here" }
!   std::multiset<int, std::less<long*>> c2; // { dg-error "here" }
  }
  
  // { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
  // { dg-error "comparison object must be invocable" "" { target *-*-* } 0 }
  // { dg-prune-output "std::allocator<.* has no member named " }
--- 23,34 ----
  test01()
  {
    std::multiset<const int> c;		   // { dg-error "here" }
!   std::multiset<int, std::less<long*>> c2;
!   c2.find(2);				   // { dg-error "here" }
  }
  
  // { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
  // { dg-error "comparison object must be invocable" "" { target *-*-* } 0 }
  // { dg-prune-output "std::allocator<.* has no member named " }
+ // { dg-prune-output "no match for call" }
+ // { dg-prune-output "invalid conversion" }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc gcc-8.4.0/libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,50 ----
+ // Copyright (C) 2019 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 <queue>
+ #include <testsuite_hooks.h>
+ 
+ struct Q : std::priority_queue<int>
+ {
+   using priority_queue::priority_queue;
+ 
+   bool is_heap() const
+   { return std::is_heap(c.begin(), c.end()); }
+ };
+ 
+ void
+ test01()
+ {
+   const Q::value_compare cmp;
+   const Q::container_type c{ 2, 3, 5, 7, 11, 13, 17, 19, 23 };
+   const Q::container_type::allocator_type a;
+ 
+   Q q1(cmp, c, a);
+   VERIFY( q1.is_heap() );
+ 
+   auto c2 = c;
+   Q q2(cmp, std::move(c2), a);
+   VERIFY( q2.is_heap() );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/23_containers/set/48101_neg.cc gcc-8.4.0/libstdc++-v3/testsuite/23_containers/set/48101_neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/23_containers/set/48101_neg.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/23_containers/set/48101_neg.cc	Wed Mar  4 08:30:03 2020
*************** void
*** 23,31 ****
  test01()
  {
    std::set<const int> c;	      // { dg-error "here" }
!   std::set<int, std::less<long*>> c2; // { dg-error "here" }
  }
  
  // { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
  // { dg-error "comparison object must be invocable" "" { target *-*-* } 0 }
  // { dg-prune-output "std::allocator<.* has no member named " }
--- 23,34 ----
  test01()
  {
    std::set<const int> c;	      // { dg-error "here" }
!   std::set<int, std::less<long*>> c2;
!   c2.find(2);				   // { dg-error "here" }
  }
  
  // { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
  // { dg-error "comparison object must be invocable" "" { target *-*-* } 0 }
  // { dg-prune-output "std::allocator<.* has no member named " }
+ // { dg-prune-output "no match for call" }
+ // { dg-prune-output "invalid conversion" }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/23_containers/set/85965.cc gcc-8.4.0/libstdc++-v3/testsuite/23_containers/set/85965.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/23_containers/set/85965.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/23_containers/set/85965.cc	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,38 ----
+ // Copyright (C) 2019 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 <set>
+ 
+ struct Base { };
+ struct Derived; // derives from Base, but incomplete at this point
+ 
+ struct Foo
+ {
+   // PR libstdc++/85965
+   std::set<Derived*, std::less<Base*>> s;
+ };
+ 
+ std::size_t
+ test01(std::set<Derived*, std::less<Base*>> s)
+ {
+   // these operations should not require the comparison object
+   auto copy = s;
+   copy = s;
+   return s.size();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc gcc-8.4.0/libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc	Wed Mar  4 08:30:03 2020
*************** void
*** 23,31 ****
  test01()
  {
    using namespace std;
!   unordered_map<int, int, equal_to<int>, hash<int>> c2;  // { dg-error "here" }
  }
  
  // { dg-error "hash function must be invocable" "" { target *-*-* } 0 }
  // { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 }
  // { dg-prune-output "use of deleted function" }
--- 23,33 ----
  test01()
  {
    using namespace std;
!   unordered_map<int, int, equal_to<int>, hash<int>> c2;
!   c2.find(2); // { dg-error "here" }
  }
  
  // { dg-error "hash function must be invocable" "" { target *-*-* } 0 }
  // { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 }
  // { dg-prune-output "use of deleted function" }
+ // { dg-prune-output "no match for call" }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc gcc-8.4.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc	Wed Mar  4 08:30:03 2020
*************** void
*** 23,31 ****
  test01()
  {
    using namespace std;
!   unordered_multimap<int, int, equal_to<int>, hash<int>> c2; // { dg-error "here" }
  }
  
  // { dg-error "hash function must be invocable" "" { target *-*-* } 0 }
  // { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 }
  // { dg-prune-output "use of deleted function" }
--- 23,33 ----
  test01()
  {
    using namespace std;
!   unordered_multimap<int, int, equal_to<int>, hash<int>> c2;
!   c2.find(2); // { dg-error "here" }
  }
  
  // { dg-error "hash function must be invocable" "" { target *-*-* } 0 }
  // { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 }
  // { dg-prune-output "use of deleted function" }
+ // { dg-prune-output "no match for call" }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc gcc-8.4.0/libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc	Wed Mar  4 08:30:03 2020
*************** test01()
*** 24,33 ****
  {
    using namespace std;
    unordered_multiset<const int, hash<int>> c;		// { dg-error "here" }
!   unordered_multiset<int, equal_to<int>, hash<int>> c2; // { dg-error "here" }
  }
  
  // { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
  // { dg-error "hash function must be invocable" "" { target *-*-* } 0 }
  // { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 }
  // { dg-prune-output "use of deleted function" }
--- 24,35 ----
  {
    using namespace std;
    unordered_multiset<const int, hash<int>> c;		// { dg-error "here" }
!   unordered_multiset<int, equal_to<int>, hash<int>> c2;
!   c2.find(2);					    // { dg-error "here" }
  }
  
  // { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
  // { dg-error "hash function must be invocable" "" { target *-*-* } 0 }
  // { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 }
  // { dg-prune-output "use of deleted function" }
+ // { dg-prune-output "no match for call" }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc gcc-8.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc	Wed Mar  4 08:30:03 2020
*************** test01()
*** 24,33 ****
  {
    using namespace std;
    unordered_set<const int, hash<int>> c;	    // { dg-error "here" }
!   unordered_set<int, equal_to<int>, hash<int>> c2;  // { dg-error "here" }
  }
  
  // { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
  // { dg-error "hash function must be invocable" "" { target *-*-* } 0 }
  // { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 }
  // { dg-prune-output "use of deleted function" }
--- 24,35 ----
  {
    using namespace std;
    unordered_set<const int, hash<int>> c;	    // { dg-error "here" }
!   unordered_set<int, equal_to<int>, hash<int>> c2;
!   c2.find(2);					    // { dg-error "here" }
  }
  
  // { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 }
  // { dg-error "hash function must be invocable" "" { target *-*-* } 0 }
  // { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 }
  // { dg-prune-output "use of deleted function" }
+ // { dg-prune-output "no match for call" }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/85965.cc gcc-8.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/85965.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/85965.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/85965.cc	Wed Mar  4 08:30:03 2020
***************
*** 0 ****
--- 1,38 ----
+ // Copyright (C) 2019 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>
+ 
+ struct Base { };
+ struct Derived; // derives from Base, but incomplete at this point
+ 
+ struct Foo
+ {
+   // PR libstdc++/85965
+   std::unordered_set<Derived*, std::equal_to<Base*>, std::hash<Base*>> u;
+ };
+ 
+ std::size_t
+ test01(std::unordered_set<Derived*, std::equal_to<Base*>, std::hash<Base*>> s)
+ {
+   // these operations should not require the comparison object
+   auto copy = s;
+   copy = s;
+   return s.size();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc gcc-8.4.0/libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc	Wed Mar  4 08:30:04 2020
***************
*** 1,4 ****
! // Copyright (C) 2016-2018 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
--- 1,4 ----
! // Copyright (C) 2016-2019 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
***************
*** 17,23 ****
  
  // { dg-options "-std=gnu++17" }
  // { dg-do run { target c++17 } }
- // { dg-xfail-run-if "AIX long double" { powerpc-ibm-aix* } }
  
  #include <cmath>
  #include <type_traits>
--- 17,22 ----
*************** test01()
*** 128,134 ****
  {
    test(data1, toler1);
    test(data2, toler2);
!   test(data3, toler3);
  }
  
  int
--- 127,136 ----
  {
    test(data1, toler1);
    test(data2, toler2);
!   if (sizeof(long double) > sizeof(double))
!     test(data3, toler3);
!   else
!     test(data3, (long double)toler1);
  }
  
  int
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc gcc-8.4.0/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc	Sun Dec 24 22:08:52 2017
--- gcc-8.4.0/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc	Wed Mar  4 08:30:04 2020
*************** auto x = std::generate_canonical<std::si
*** 11,14 ****
  
  // { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 156 }
  
! // { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 3317 }
--- 11,14 ----
  
  // { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 156 }
  
! // { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 3315 }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/caching.cc gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/caching.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/caching.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/caching.cc	Wed Mar  4 08:30:04 2020
***************
*** 0 ****
--- 1,76 ----
+ // Copyright (C) 2019 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++17 -lstdc++fs" }
+ // { dg-do run { target c++17 } }
+ // { dg-require-filesystem-ts "" }
+ 
+ #include <filesystem>
+ #include <testsuite_fs.h>
+ #include <testsuite_hooks.h>
+ 
+ namespace fs = std::filesystem;
+ 
+ __gnu_test::scoped_file
+ create_dir(fs::path dir = __gnu_test::nonexistent_path())
+ {
+   fs::create_directory(dir);
+   return { dir, __gnu_test::scoped_file::adopt_file };
+ }
+ 
+ void
+ test01()
+ {
+   auto testdir = create_dir();
+   __gnu_test::scoped_file file1(testdir.path/"file1");
+   __gnu_test::scoped_file file2(testdir.path/"file2");
+ 
+   fs::directory_iterator it(testdir.path);
+   VERIFY( it->is_regular_file() );
+   ++it;
+   VERIFY( it->is_regular_file() );
+   ++it;
+   VERIFY( it == fs::directory_iterator{} );
+ }
+ 
+ void
+ test02()
+ {
+   auto testdir = create_dir();
+   const auto sub1 = create_dir(testdir.path/"sub1");
+   __gnu_test::scoped_file file1(sub1.path / "file");
+   const auto sub2 = create_dir(testdir.path/"sub2");
+   __gnu_test::scoped_file file2(sub2.path / "file");
+ 
+   fs::recursive_directory_iterator it(testdir.path);
+   VERIFY( it->is_directory() );
+   ++it;
+   VERIFY( it->is_regular_file() );
+   ++it;
+   VERIFY( it->is_directory() );
+   ++it;
+   VERIFY( it->is_regular_file() );
+   ++it;
+   VERIFY( it == fs::recursive_directory_iterator{} );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc	Fri Feb  8 12:20:08 2019
--- gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc	Wed Mar  4 08:30:04 2020
*************** test02()
*** 50,58 ****
--- 50,86 ----
    VERIFY( absolute(p3) == (std::filesystem::current_path()/p3) );
  }
  
+ void
+ test03()
+ {
+   // PR libstdc++/90299
+   const path p = __gnu_test::nonexistent_path();
+   std::error_code ec;
+   const path pabs = absolute(p, ec);
+   VERIFY( !ec );
+   VERIFY( pabs.is_absolute() );
+ 
+   const path pabs2 = absolute(p);
+   VERIFY( pabs2 == pabs );
+ 
+   const path eabs = absolute(path{}, ec);
+   VERIFY( ec == std::errc::invalid_argument );
+   VERIFY( eabs.empty() );
+ 
+   try {
+     absolute(path{});
+     VERIFY( false );
+   } catch (const std::filesystem::filesystem_error& e) {
+     VERIFY( e.code() == std::errc::invalid_argument );
+     VERIFY( e.path1().empty() );
+     VERIFY( e.path2().empty() );
+   }
+ }
+ 
  int
  main()
  {
    test01();
    test02();
+   test03();
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc	Fri Jan  5 18:02:18 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc	Wed Mar  4 08:30:04 2020
*************** test02()
*** 104,112 ****
--- 104,145 ----
    VERIFY( !exists(dir) );
  }
  
+ void
+ test04()
+ {
+ #if defined(__MINGW32__) || defined(__MINGW64__)
+   // no permissions
+ #else
+   // PR libstdc++/93201
+   std::error_code ec;
+   std::uintmax_t n;
+ 
+   auto dir = __gnu_test::nonexistent_path();
+   fs::create_directory(dir);
+   __gnu_test::scoped_file f(dir/"file");
+   // remove write permission on the directory:
+   fs::permissions(dir, fs::perms::owner_read|fs::perms::owner_exec);
+   n = fs::remove_all(dir, ec);
+   VERIFY( n == -1 );
+   VERIFY( ec == std::errc::permission_denied ); // not ENOTEMPTY
+ 
+   try {
+     fs::remove_all(dir);
+     VERIFY( false );
+   } catch (const fs::filesystem_error& e) {
+     VERIFY( e.code() == std::errc::permission_denied );
+     // First path is the argument to remove_all
+     VERIFY( e.path1() == dir );
+   }
+ 
+   fs::permissions(dir, fs::perms::owner_write, fs::perm_options::add);
+ #endif
+ }
+ 
  int
  main()
  {
    test01();
    test02();
+   test04();
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc	Wed Mar  4 08:30:04 2020
***************
*** 21,26 ****
--- 21,27 ----
  
  #include <filesystem>
  #include <testsuite_fs.h>
+ #include <testsuite_hooks.h>
  
  using std::filesystem::path;
  using __gnu_test::compare_paths;
*************** test02()
*** 48,56 ****
--- 49,74 ----
    }
  }
  
+ void
+ test03()
+ {
+   // self assignment should have no effect
+   const path orig = "foo/bar/baz";
+   path p = orig;
+   const auto ptr1 = p.c_str();
+   const auto ptr2 = p.begin()->c_str();
+   p = std::move(p);
+   __gnu_test::compare_paths(p, orig);
+   p = p;
+   __gnu_test::compare_paths(p, orig);
+   VERIFY( ptr1 == p.c_str() );
+   VERIFY( ptr2 == p.begin()->c_str() );
+ }
+ 
  int
  main()
  {
    test01();
    test02();
+   test03();
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc	Thu Jan 10 16:06:49 2019
--- gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc	Wed Mar  4 08:30:04 2020
***************
*** 22,29 ****
--- 22,39 ----
  
  using std::filesystem::path;
  
+ // PR libstdc++/80762.cc
  static_assert( !std::is_constructible_v<path, void> );
  static_assert( !std::is_constructible_v<path, volatile path> );
  static_assert( !std::is_constructible_v<path, volatile path&> );
  static_assert( !std::is_constructible_v<path, const volatile path> );
  static_assert( !std::is_constructible_v<path, const volatile path&> );
+ 
+ // PR libstdc++/90454.cc
+ static_assert( !std::is_constructible_v<path, void*> );
+ static_assert( !std::is_constructible_v<path, const void*> );
+ static_assert( !std::is_constructible_v<path, volatile void*> );
+ static_assert( !std::is_constructible_v<path, const volatile void*> );
+ static_assert( !std::is_constructible_v<path, void*&> );
+ static_assert( !std::is_constructible_v<path, void* const&> );
+ static_assert( !std::is_constructible_v<path, const void* const&> );
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/27_io/filesystem/path/construct/90634.cc gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/construct/90634.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/27_io/filesystem/path/construct/90634.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/construct/90634.cc	Wed Mar  4 08:30:04 2020
***************
*** 0 ****
--- 1,70 ----
+ // Copyright (C) 2019 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++17 -lstdc++fs" }
+ // { dg-do run { target c++17 } }
+ // { dg-require-filesystem-ts "" }
+ 
+ #include <filesystem>
+ #include <cstdlib>
+ #include <testsuite_hooks.h>
+ 
+ std::size_t bytes_allocated = 0;
+ 
+ void* operator new(std::size_t n)
+ {
+   bytes_allocated += n;
+   return std::malloc(n);
+ }
+ 
+ void operator delete(void* p) noexcept { std::free(p); }
+ #if __cpp_sized_deallocation
+ void operator delete(void* p, std::size_t) noexcept { std::free(p); }
+ #endif
+ 
+ void
+ test01()
+ {
+   std::string s0;
+   std::string s1 = "/";
+   std::string s2 = "///";
+   std::string s3 = "filename";
+   std::string s4 = "C:";
+   std::string s5 = "\\";
+ 
+   using std::filesystem::path;
+ 
+   bytes_allocated = 0;
+   path p0 = std::move(s0);
+   VERIFY( bytes_allocated == 0 );
+   path p1 = std::move(s1);
+   VERIFY( bytes_allocated == 0 );
+   path p2 = std::move(s2);
+   VERIFY( bytes_allocated == 0 );
+   path p3 = std::move(s3);
+   VERIFY( bytes_allocated == 0 );
+   path p4 = std::move(s4);
+   VERIFY( bytes_allocated == 0 );
+   path p5 = std::move(s5);
+   VERIFY( bytes_allocated == 0 );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc	Wed Mar  4 08:30:04 2020
*************** test01()
*** 36,45 ****
    VERIFY( p2.root_path() == path("/") );
  }
  
- #undef VERIFY
- #define VERIFY(X) do { if (!(X)) { __builtin_puts("FAIL: " #X); } } while(false)
- #define DUMP(X, Y, Z) do { if (!(Y == Z)) { __builtin_printf("%s %s %s\n", X.c_str(), Y.c_str(), Z.c_str()); } } while(false)
- 
  void
  test02()
  {
--- 36,41 ----
*************** test02()
*** 49,55 ****
      path rootn = p.root_name();
      path rootd = p.root_directory();
      VERIFY( rootp == (rootn / rootd) );
-     DUMP(p,  rootp , (rootn / rootd) );
    }
  }
  
--- 45,50 ----
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/Makefile.in gcc-8.4.0/libstdc++-v3/testsuite/Makefile.in
*** gcc-8.3.0/libstdc++-v3/testsuite/Makefile.in	Fri Nov 17 21:28:10 2017
--- gcc-8.4.0/libstdc++-v3/testsuite/Makefile.in	Wed Mar  4 08:30:04 2020
*************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
*** 205,210 ****
--- 205,211 ----
  VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
  WARN_FLAGS = @WARN_FLAGS@
  WERROR = @WERROR@
+ XMLCATALOG = @XMLCATALOG@
  XMLLINT = @XMLLINT@
  XSLTPROC = @XSLTPROC@
  XSL_STYLE_DIR = @XSL_STYLE_DIR@
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc gcc-8.4.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc	Wed Mar  4 08:30:04 2020
***************
*** 24,29 ****
--- 24,30 ----
  
  using std::experimental::any;
  using std::experimental::any_cast;
+ using std::experimental::bad_any_cast;
  
  void test01()
  {
*************** void test01()
*** 56,62 ****
  
  void test02()
  {
-   using std::experimental::bad_any_cast;
    any x(1);
    auto p = any_cast<double>(&x);
    VERIFY(p == nullptr);
--- 57,62 ----
*************** void test03()
*** 105,111 ****
    MoveDeleted&& md3 = any_cast<MoveDeleted&&>(any(std::move(md)));
  }
  
! void test04()
  {
    // PR libstdc++/69321
    struct noncopyable {
--- 105,111 ----
    MoveDeleted&& md3 = any_cast<MoveDeleted&&>(any(std::move(md)));
  }
  
! void test05()
  {
    // PR libstdc++/69321
    struct noncopyable {
*************** void test04()
*** 117,126 ****
    VERIFY( p == nullptr );
  }
  
  int main()
  {
    test01();
    test02();
    test03();
!   test04();
  }
--- 117,176 ----
    VERIFY( p == nullptr );
  }
  
+ void test06()
+ {
+   // The contained value of a std::any is always an object type,
+   // but any_cast does not forbid checking for function types.
+ 
+   any a(1);
+   void (*p1)() = any_cast<void()>(&a);
+   VERIFY( p1 == nullptr );
+   int (*p2)(int) = any_cast<int(int)>(&a);
+   VERIFY( p2 == nullptr );
+   int (*p3)() = any_cast<int()>(&const_cast<const any&>(a));
+   VERIFY( p3 == nullptr );
+ 
+   try {
+     any_cast<int(&)()>(a);
+     VERIFY( false );
+   } catch (const bad_any_cast&) {
+   }
+ 
+   try {
+     any_cast<int(&)()>(std::move(a));
+     VERIFY( false );
+   } catch (const bad_any_cast&) {
+   }
+ 
+   try {
+     any_cast<int(&)()>(const_cast<const any&>(a));
+     VERIFY( false );
+   } catch (const bad_any_cast&) {
+   }
+ }
+ 
+ void test07()
+ {
+   int arr[3];
+   any a(arr);
+   VERIFY( a.type() == typeid(int*) );	// contained value is decayed
+ 
+   int (*p1)[3] = any_cast<int[3]>(&a);
+   VERIFY( a.type() != typeid(int[3]) ); // so any_cast should return nullptr
+   VERIFY( p1 == nullptr );
+   int (*p2)[] = any_cast<int[]>(&a);
+   VERIFY( a.type() != typeid(int[]) );	// so any_cast should return nullptr
+   VERIFY( p2 == nullptr );
+   const int (*p3)[] = any_cast<int[]>(&const_cast<const any&>(a));
+   VERIFY( p3 == nullptr );
+ }
+ 
  int main()
  {
    test01();
    test02();
    test03();
!   test05();
!   test06();
!   test07();
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc gcc-8.4.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc	Wed Mar  4 08:30:04 2020
*************** void test01()
*** 25,29 ****
    using std::experimental::any_cast;
  
    const any y(1);
!   any_cast<int&>(y); // { dg-error "qualifiers" "" { target { *-*-* } } 357 }
  }
--- 25,29 ----
    using std::experimental::any_cast;
  
    const any y(1);
!   any_cast<int&>(y); // { dg-error "qualifiers" "" { target { *-*-* } } 0 }
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc gcc-8.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc	Mon Apr 16 08:24:40 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc	Wed Mar  4 08:30:04 2020
*************** test02()
*** 104,112 ****
--- 104,145 ----
    VERIFY( !exists(dir) );
  }
  
+ void
+ test04()
+ {
+ #if defined(__MINGW32__) || defined(__MINGW64__)
+   // no permissions
+ #else
+   // PR libstdc++/93201
+   std::error_code ec;
+   std::uintmax_t n;
+ 
+   auto dir = __gnu_test::nonexistent_path();
+   fs::create_directory(dir);
+   __gnu_test::scoped_file f(dir/"file");
+   // remove write permission on the directory:
+   fs::permissions(dir, fs::perms::owner_read|fs::perms::owner_exec);
+   n = fs::remove_all(dir, ec);
+   VERIFY( n == -1 );
+   VERIFY( ec == std::errc::permission_denied ); // not ENOTEMPTY
+ 
+   try {
+     fs::remove_all(dir);
+     VERIFY( false );
+   } catch (const fs::filesystem_error& e) {
+     VERIFY( e.code() == std::errc::permission_denied );
+     // First path is the argument to remove_all
+     VERIFY( e.path1() == dir );
+   }
+ 
+   fs::permissions(dir, fs::perms::owner_write|fs::perms::add_perms);
+ #endif
+ }
+ 
  int
  main()
  {
    test01();
    test02();
+   test04();
  }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc gcc-8.4.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc	Mon Jan 14 11:30:47 2019
--- gcc-8.4.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc	Wed Mar  4 08:30:04 2020
***************
*** 22,29 ****
--- 22,39 ----
  
  using std::experimental::filesystem::path;
  
+ // PR libstdc++/80762.cc
  static_assert( !std::is_constructible<path, void>::value, "" );
  static_assert( !std::is_constructible<path, volatile path>::value, "" );
  static_assert( !std::is_constructible<path, volatile path&>::value, "" );
  static_assert( !std::is_constructible<path, const volatile path>::value, "" );
  static_assert( !std::is_constructible<path, const volatile path&>::value, "" );
+ 
+ // PR libstdc++/90454.cc
+ static_assert( !std::is_constructible<path, void*>::value, "" );
+ static_assert( !std::is_constructible<path, const void*>::value, "" );
+ static_assert( !std::is_constructible<path, volatile void*>::value, "" );
+ static_assert( !std::is_constructible<path, const volatile void*>::value, "" );
+ static_assert( !std::is_constructible<path, void*&>::value, "" );
+ static_assert( !std::is_constructible<path, void* const&>::value, "" );
+ static_assert( !std::is_constructible<path, const void* const&>::value, "" );
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc gcc-8.4.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc	Wed Mar  4 08:30:04 2020
***************
*** 0 ****
--- 1,67 ----
+ // Copyright (C) 2019 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 <cstdlib>
+ #include <testsuite_hooks.h>
+ 
+ std::size_t bytes_allocated = 0;
+ 
+ void* operator new(std::size_t n)
+ {
+   bytes_allocated += n;
+   return std::malloc(n);
+ }
+ 
+ void operator delete(void* p) noexcept { std::free(p); }
+ #if __cpp_sized_deallocation
+ void operator delete(void* p, std::size_t) noexcept { std::free(p); }
+ #endif
+ 
+ void
+ test01()
+ {
+   std::string s0;
+   std::string s1 = "/";
+   std::string s2 = "filename";
+   std::string s3 = "C:";
+   std::string s4 = "\\";
+ 
+   using std::experimental::filesystem::path;
+ 
+   bytes_allocated = 0;
+   path p0 = std::move(s0);
+   VERIFY( bytes_allocated == 0 );
+   path p1 = std::move(s1);
+   VERIFY( bytes_allocated == 0 );
+   path p2 = std::move(s2);
+   VERIFY( bytes_allocated == 0 );
+   path p3 = std::move(s3);
+   VERIFY( bytes_allocated == 0 );
+   path p4 = std::move(s4);
+   VERIFY( bytes_allocated == 0 );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/experimental/names.cc gcc-8.4.0/libstdc++-v3/testsuite/experimental/names.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/experimental/names.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/experimental/names.cc	Wed Mar  4 08:30:04 2020
***************
*** 0 ****
--- 1,62 ----
+ // Copyright (C) 2017-2019 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 } }
+ 
+ // Define macros for some common variables names that we must not use for
+ // naming variables, parameters etc. in the library.
+ 
+ #include "../17_intro/names.cc"
+ // Filesystem
+ #if __has_include(<experimental/filesystem>)
+ # include <experimental/filesystem>
+ #endif
+ 
+ #if __cplusplus >= 201402L
+ 
+ // Library Fundamentals
+ #include <experimental/algorithm>
+ #include <experimental/any>
+ #include <experimental/array>
+ #include <experimental/chrono>
+ #include <experimental/deque>
+ #include <experimental/forward_list>
+ #include <experimental/functional>
+ #include <experimental/iterator>
+ #include <experimental/list>
+ #include <experimental/map>
+ #include <experimental/memory>
+ #include <experimental/memory_resource>
+ #include <experimental/numeric>
+ #include <experimental/optional>
+ #include <experimental/propagate_const>
+ #include <experimental/random>
+ #include <experimental/ratio>
+ #include <experimental/regex>
+ #include <experimental/set>
+ #include <experimental/source_location>
+ #include <experimental/string>
+ #include <experimental/string_view>
+ #include <experimental/system_error>
+ #include <experimental/tuple>
+ #include <experimental/type_traits>
+ #include <experimental/unordered_map>
+ #include <experimental/unordered_set>
+ #include <experimental/utility>
+ #include <experimental/vector>
+ 
+ #endif // C++14
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc gcc-8.4.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc	Wed Mar  4 08:30:04 2020
***************
*** 0 ****
--- 1,50 ----
+ // Copyright (C) 2019 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 <tr2/dynamic_bitset>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   std::tr2::dynamic_bitset<> a(100);
+   std::tr2::dynamic_bitset<> b = a;
+   VERIFY( a == b );
+   b.resize(99);
+   VERIFY( a != b );
+ }
+ 
+ void
+ test02()
+ {
+   std::tr2::dynamic_bitset<> a(100);
+   std::tr2::dynamic_bitset<> b = a;
+   VERIFY( !(a < b) );
+   VERIFY( !(b < a) );
+   b.resize(99);
+   VERIFY( !(a < b) );
+   VERIFY( b < a );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc gcc-8.4.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc	Wed Mar  4 08:30:04 2020
***************
*** 0 ****
--- 1,105 ----
+ // Copyright (C) 2019 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 <tr2/dynamic_bitset>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   std::tr2::dynamic_bitset<> a;
+   VERIFY( a.size() == 0 );
+   VERIFY( a.empty() );
+   std::tr2::dynamic_bitset<> b(1);
+   VERIFY( b.size() == 1 );
+   VERIFY( !b.empty() );
+   VERIFY( a != b );
+ }
+ 
+ void
+ test02()
+ {
+   std::tr2::dynamic_bitset<> a(1, 0); // { 0 }
+   std::tr2::dynamic_bitset<> b(2, 2); // { 0, 1 }
+   VERIFY( a != b );
+ }
+ 
+ void
+ test03()
+ {
+   std::tr2::dynamic_bitset<> a;
+   a.resize(1);                        // { 0 }
+   std::tr2::dynamic_bitset<> b(2, 2); // { 0, 1 }
+   VERIFY( a != b );
+ }
+ 
+ void
+ test04()
+ {
+   std::tr2::dynamic_bitset<> a(3, 2); // { 0, 1, 0 }
+   std::tr2::dynamic_bitset<> b(2, 2); // { 0, 1 }
+   VERIFY( a != b );
+ }
+ 
+ void
+ test05()
+ {
+   std::tr2::dynamic_bitset<unsigned short> a(1, 0); // { 0 }
+   std::tr2::dynamic_bitset<unsigned short> b(2, 2); // { 0, 1 }
+   VERIFY( a != b );
+ }
+ 
+ void
+ test06()
+ {
+   std::tr2::dynamic_bitset<unsigned short> a;
+   a.resize(1);                                      // { 0 }
+   std::tr2::dynamic_bitset<unsigned short> b(2, 2); // { 0, 1 }
+   VERIFY( a != b );
+ }
+ 
+ void
+ test07()
+ {
+   std::tr2::dynamic_bitset<unsigned short> a(3, 2); // { 0, 1, 0 }
+   std::tr2::dynamic_bitset<unsigned short> b(2, 2); // { 0, 1 }
+   VERIFY( a != b );
+ }
+ 
+ void
+ test08()
+ {
+   std::tr2::dynamic_bitset<> a(65, -1ULL);
+   std::tr2::dynamic_bitset<> b(64, -1ULL);
+   b.push_back(0);
+   VERIFY( a == b );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+   test03();
+   test04();
+   test05();
+   test06();
+   test07();
+   test08();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc gcc-8.4.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc	Wed Mar  4 08:30:04 2020
***************
*** 0 ****
--- 1,55 ----
+ // Copyright (C) 2019 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 <tr2/dynamic_bitset>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   std::tr2::dynamic_bitset<> a(100);
+   const auto n = a.num_blocks();
+   std::tr2::dynamic_bitset<> b = a;
+   VERIFY(b.num_blocks() == n);
+   VERIFY(b.size() == 100);
+   VERIFY(a.num_blocks() == n);
+   VERIFY(a.size() == 100);
+   VERIFY(b == a);
+ }
+ 
+ void
+ test02()
+ {
+   std::tr2::dynamic_bitset<> a(100);
+   const auto n = a.num_blocks();
+   std::tr2::dynamic_bitset<> b;
+   b = a;
+   VERIFY(b.num_blocks() == n);
+   VERIFY(b.size() == 100);
+   VERIFY(a.num_blocks() == n);
+   VERIFY(a.size() == 100);
+   VERIFY(b == a);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc gcc-8.4.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc	Wed Mar  4 08:30:04 2020
***************
*** 0 ****
--- 1,53 ----
+ // Copyright (C) 2019 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 <tr2/dynamic_bitset>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   std::tr2::dynamic_bitset<> a(100);
+   const auto n = a.num_blocks();
+   std::tr2::dynamic_bitset<> b = std::move(a);
+   VERIFY(b.num_blocks() == n);
+   VERIFY(b.size() == 100);
+   VERIFY(a.num_blocks() == 0);
+   VERIFY(a.size() == 0);
+ }
+ 
+ void
+ test02()
+ {
+   std::tr2::dynamic_bitset<> a(100);
+   const auto n = a.num_blocks();
+   std::tr2::dynamic_bitset<> b;
+   b = std::move(a);
+   VERIFY(b.num_blocks() == n);
+   VERIFY(b.size() == 100);
+   VERIFY(a.num_blocks() == 0);
+   VERIFY(a.size() == 0);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc gcc-8.4.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc
*** gcc-8.3.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc	Thu Jan  1 00:00:00 1970
--- gcc-8.4.0/libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc	Wed Mar  4 08:30:04 2020
***************
*** 0 ****
--- 1,36 ----
+ // Copyright (C) 2019 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 <tr2/dynamic_bitset>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   // PR libstdc++/92059
+   std::tr2::dynamic_bitset<> b1(10000), b2(10000);
+   b2 = b1; // crashed on missing return
+   VERIFY( b2 == b1);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/util/testsuite_hooks.h gcc-8.4.0/libstdc++-v3/testsuite/util/testsuite_hooks.h
*** gcc-8.3.0/libstdc++-v3/testsuite/util/testsuite_hooks.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/util/testsuite_hooks.h	Wed Mar  4 08:30:04 2020
***************
*** 46,63 ****
  #include <bits/c++config.h>
  #include <bits/functexcept.h>
  #include <ctime>
  
  #ifdef _GLIBCXX_HAVE_SYS_STAT_H
  #include <sys/stat.h>
  #endif
  
  #define VERIFY(fn)                                                      \
    do                                                                    \
    {                                                                     \
      if (! (fn))								\
        {									\
! 	__builtin_printf("%s:%d: %s: Assertion '%s' failed.\n",		\
! 			 __FILE__, __LINE__, __PRETTY_FUNCTION__, #fn); \
  	__builtin_abort();						\
        }									\
    } while (false)
--- 46,70 ----
  #include <bits/c++config.h>
  #include <bits/functexcept.h>
  #include <ctime>
+ #include <stdio.h>
  
  #ifdef _GLIBCXX_HAVE_SYS_STAT_H
  #include <sys/stat.h>
  #endif
  
+ #ifdef stderr
+ # define _VERIFY_PRINT(S, F, L, P, C) __builtin_fprintf(stderr, S, F, L, P, C)
+ #else
+ # define _VERIFY_PRINT(S, F, L, P, C) __builtin_printf(S, F, L, P, C)
+ #endif
+ 
  #define VERIFY(fn)                                                      \
    do                                                                    \
    {                                                                     \
      if (! (fn))								\
        {									\
! 	_VERIFY_PRINT("%s:%d: %s: Assertion '%s' failed.\n",		\
! 		      __FILE__, __LINE__, __PRETTY_FUNCTION__, #fn);	\
  	__builtin_abort();						\
        }									\
    } while (false)
diff -Nrcpad gcc-8.3.0/libstdc++-v3/testsuite/util/thread/all.h gcc-8.4.0/libstdc++-v3/testsuite/util/thread/all.h
*** gcc-8.3.0/libstdc++-v3/testsuite/util/thread/all.h	Wed Jan  3 10:03:58 2018
--- gcc-8.4.0/libstdc++-v3/testsuite/util/thread/all.h	Wed Mar  4 08:30:04 2020
***************
*** 25,30 ****
--- 25,31 ----
  #include <sstream>
  #include <stdexcept>
  #include <type_traits>
+ #include <thread>
  
  // C++11 only.
  namespace __gnu_test
*************** namespace __gnu_test
*** 39,45 ****
  
        // Remove possible pointer type.
        typedef typename test_type::native_handle_type native_handle;
!       typedef typename std::remove_pointer<native_handle>::type native_type;
  
        int st = sizeof(test_type);
        int snt = sizeof(native_type);
--- 40,51 ----
  
        // Remove possible pointer type.
        typedef typename test_type::native_handle_type native_handle;
!       // For std::thread native_handle_type is the type of its data member,
!       // for other types it's a pointer to the type of the data member.
!       typedef typename std::conditional<
! 	std::is_same<test_type, std::thread>::value,
! 	native_handle,
! 	typename std::remove_pointer<native_handle>::type>::type native_type;
  
        int st = sizeof(test_type);
        int snt = sizeof(native_type);
diff -Nrcpad gcc-8.3.0/libvtv/ChangeLog gcc-8.4.0/libvtv/ChangeLog
*** gcc-8.3.0/libvtv/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/libvtv/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/lto-plugin/ChangeLog gcc-8.4.0/lto-plugin/ChangeLog
*** gcc-8.3.0/lto-plugin/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/lto-plugin/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/maintainer-scripts/ChangeLog gcc-8.4.0/maintainer-scripts/ChangeLog
*** gcc-8.3.0/maintainer-scripts/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/maintainer-scripts/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,32 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
+ 2020-01-13  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	Backport:
+ 
+ 	2020-01-13  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* gcc_release: Use git instead of SVN.
+ 
+ 	2019-11-20  Janne Blomqvist  <jb@gcc.gnu.org>
+ 
+ 	* gcc_release: Use https for gcc.gnu.org.
+ 
+ 	2018-10-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc_release (error, inform): Use $@ instead of $1.
+ 	(build_sources): Check for ^[[:blank:]]*GCC in both index.html
+ 	and changes.html, rather than for GCC in one and ^GCC in another one.
+ 
+ 	2018-05-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR other/85622
+ 	* gcc_release: For -f, verify contrib/gennews has the major version
+ 	pages listed and both index.html and changes.html have been updated
+ 	for the new release.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
diff -Nrcpad gcc-8.3.0/maintainer-scripts/gcc_release gcc-8.4.0/maintainer-scripts/gcc_release
*** gcc-8.3.0/maintainer-scripts/gcc_release	Thu Jan 25 10:22:38 2018
--- gcc-8.4.0/maintainer-scripts/gcc_release	Wed Mar  4 08:30:04 2020
***************
*** 9,15 ****
  # Contents:
  #   Script to create a GCC release.
  #
! # Copyright (c) 2001-2015 Free Software Foundation.
  #
  # This file is part of GCC.
  #
--- 9,15 ----
  # Contents:
  #   Script to create a GCC release.
  #
! # Copyright (c) 2001-2018 Free Software Foundation.
  #
  # This file is part of GCC.
  #
***************
*** 45,62 ****
  # Functions
  ########################################################################
  
! # Issue the error message given by $1 and exit with a non-zero
  # exit code.
  
  error() {
!     echo "gcc_release: error: $1"
      exit 1
  }
  
! # Issue the informational message given by $1.
  
  inform() {
!     echo "gcc_release: $1"
  }
  
  # Issue a usage message explaining how to use this script.
--- 45,62 ----
  # Functions
  ########################################################################
  
! # Issue the error message given by $@ and exit with a non-zero
  # exit code.
  
  error() {
!     echo "gcc_release: error: $@"
      exit 1
  }
  
! # Issue the informational message given by $@.
  
  inform() {
!     echo "gcc_release: $@"
  }
  
  # Issue a usage message explaining how to use this script.
*************** inform() {
*** 64,82 ****
  usage() {
  cat <<EOF
  gcc_release -r release [-f] [further options]
! gcc_release -s name:svnbranch [further options]
  
  Options:
  
    -r release           Version of the form X.Y or X.Y.Z.
!   -s name:svnbranch    Create a snapshot, not a real release.
  
    -d destination       Local working directory where we will build the release
                         (default=${HOME}).
    -f                   Create a final release (and update ChangeLogs,...).
    -l                   Indicate that we are running on gcc.gnu.org.
    -p previous-tarball  Location of a previous tarball (to generate diff files).
!   -t tag               Tag to mark the release in SVN.
    -u username          Username for upload operations.
  EOF
      exit 1
--- 64,82 ----
  usage() {
  cat <<EOF
  gcc_release -r release [-f] [further options]
! gcc_release -s name:gitbranch [further options]
  
  Options:
  
    -r release           Version of the form X.Y or X.Y.Z.
!   -s name:gitbranch    Create a snapshot, not a real release.
  
    -d destination       Local working directory where we will build the release
                         (default=${HOME}).
    -f                   Create a final release (and update ChangeLogs,...).
    -l                   Indicate that we are running on gcc.gnu.org.
    -p previous-tarball  Location of a previous tarball (to generate diff files).
!   -t tag               Tag to mark the release in git.
    -u username          Username for upload operations.
  EOF
      exit 1
*************** build_sources() {
*** 102,115 ****
      || error "Could not create \`${WORKING_DIRECTORY}'"
    changedir "${WORKING_DIRECTORY}"
  
    # If this is a final release, make sure that the ChangeLogs
    # and version strings are updated.
    if [ ${FINAL} -ne 0 ]; then
      inform "Updating ChangeLogs and version files"
  
!     ${SVN} -q co "${SVNROOT}/${SVNBRANCH}" "`basename ${SOURCE_DIRECTORY}`" ||\
!            error "Could not check out release sources"
!     svnciargs=""
      for x in `changedir ${SOURCE_DIRECTORY} && \
  	      find . -name ChangeLog`; do
        # Update this ChangeLog file only if it does not yet contain the
--- 102,146 ----
      || error "Could not create \`${WORKING_DIRECTORY}'"
    changedir "${WORKING_DIRECTORY}"
  
+   # Check out the sources.
+   ${GIT} clone -q -b "${GITBRANCH}" "${GITROOT}" "`basename ${SOURCE_DIRECTORY}`" || \
+       error "Could not check out release sources"
+ 
    # If this is a final release, make sure that the ChangeLogs
    # and version strings are updated.
    if [ ${FINAL} -ne 0 ]; then
      inform "Updating ChangeLogs and version files"
  
!     grep -q "gcc-${RELEASE_MAJOR}/index.html gcc-${RELEASE_MAJOR}/changes.html" \
! 	 ${SOURCE_DIRECTORY}/contrib/gennews ||\
! 	   error "New release not listed in contrib/gennews"
! 
!     ${SOURCE_DIRECTORY}/contrib/gennews > NEWS ||\
! 	   error "Could not regenerate NEWS files"
! 
!     grep -q "no releases of GCC ${RELEASE_MAJOR} have yet been made" NEWS &&\
! 	   error "gcc-${RELEASE_MAJOR}/index.html has not been updated yet"
! 
!     grep -q "GCC ${RELEASE_MAJOR} has not been released yet" NEWS &&\
! 	   error "gcc-${RELEASE_MAJOR}/changes.html has not been updated yet"
! 
!     thisindex="http:\/\/gcc.gnu.org\/gcc-${RELEASE_MAJOR}\/index.html"
!     thischanges="http:\/\/gcc.gnu.org\/gcc-${RELEASE_MAJOR}\/changes.html"
!     previndex="http:\/\/gcc.gnu.org\/gcc-`expr ${RELEASE_MAJOR} - 1`\/index.html"
!     sed -n -e "/^${thisindex}/,/^${thischanges}/p" NEWS |\
! 	   sed -n -e "/Release History/,/References and Acknowledgments/p" |\
! 	   grep -q "^[[:blank:]]*GCC ${RELEASE_MAJOR}.${RELEASE_MINOR}" ||\
! 	   error "GCC ${RELEASE_MAJOR}.${RELEASE_MINOR} not mentioned "\
! 		 "in gcc-${RELEASE_MAJOR}/index.html"
! 
!     sed -n -e "/^${thischanges}/,/^${previndex}/p" NEWS |\
! 	   grep -q "^[[:blank:]]*GCC ${RELEASE_MAJOR}.${RELEASE_MINOR}" ||\
! 	   error "GCC ${RELEASE_MAJOR}.${RELEASE_MINOR} not mentioned "\
! 		 "in gcc-${RELEASE_MAJOR}/changes.html"
! 
!     rm -f NEWS
! 
!     commit_files=""
      for x in `changedir ${SOURCE_DIRECTORY} && \
  	      find . -name ChangeLog`; do
        # Update this ChangeLog file only if it does not yet contain the
*************** ${LONG_DATE}  Release Manager
*** 124,130 ****
  EOF
  	mv ${SOURCE_DIRECTORY}/${x}.new ${SOURCE_DIRECTORY}/${x} \
  	  || error "Could not update ${x}"
! 	svnciargs="${svnciargs} ${x}"
        fi
      done
  
--- 155,161 ----
  EOF
  	mv ${SOURCE_DIRECTORY}/${x}.new ${SOURCE_DIRECTORY}/${x} \
  	  || error "Could not update ${x}"
! 	commit_files="${commit_files} ${x}"
        fi
      done
  
*************** EOF
*** 139,145 ****
  	(changedir ${SOURCE_DIRECTORY}/gcc && \
  	 echo ${RELEASE} > BASE-VER) || \
  	error "Could not update BASE-VER"
! 	svnciargs="${svnciargs} gcc/BASE-VER"
        else
  	error "Release number ${RELEASE} does not immediately follow BASE-VER"
        fi
--- 170,176 ----
  	(changedir ${SOURCE_DIRECTORY}/gcc && \
  	 echo ${RELEASE} > BASE-VER) || \
  	error "Could not update BASE-VER"
! 	commit_files="${commit_files} gcc/BASE-VER"
        else
  	error "Release number ${RELEASE} does not immediately follow BASE-VER"
        fi
*************** EOF
*** 147,162 ****
      (changedir ${SOURCE_DIRECTORY}/gcc && \
       : > DEV-PHASE) || \
      error "Could not update DEV-PHASE"
!     svnciargs="${svnciargs} gcc/DEV-PHASE"
  
      (changedir ${SOURCE_DIRECTORY} && \
!      ${SVN} -q ci -m 'Update ChangeLog and version files for release' ${svnciargs}) || \
      error "Could not commit ChangeLog and version file updates"
  
      # Make sure we tag the sources for a final release.
!     TAG="tags/gcc_`echo ${RELEASE} | tr . _`_release"
! 
!     rm -rf ${SOURCE_DIRECTORY}
    fi
  
    # Tag the sources.
--- 178,192 ----
      (changedir ${SOURCE_DIRECTORY}/gcc && \
       : > DEV-PHASE) || \
      error "Could not update DEV-PHASE"
!     commit_files="${commit_files} gcc/DEV-PHASE"
  
      (changedir ${SOURCE_DIRECTORY} && \
!      ${GIT} commit -q -m 'Update ChangeLog and version files for release' ${commit_files} && \
!      ${GIT} push) || \
      error "Could not commit ChangeLog and version file updates"
  
      # Make sure we tag the sources for a final release.
!     TAG="releases/gcc-${RELEASE}"
    fi
  
    # Tag the sources.
*************** EOF
*** 165,194 ****
      # We don't want to overwrite an existing tag.  So, if the tag
      # already exists, issue an error message; the release manager can
      # manually remove the tag if appropriate.
!     echo "${SVN} ls ${SVNROOT}/${TAG}/ChangeLog" 
!     if ${SVN} ls "${SVNROOT}/${TAG}/ChangeLog"; then 
        error "Tag ${TAG} already exists"
      fi
!     ${SVN} -m "Tagging source as ${TAG}" cp "${SVNROOT}/${SVNBRANCH}" "${SVNROOT}/${TAG}" || \
        error "Could not tag sources"
!     SVNBRANCH=${TAG}
    fi
-   SVNREV=`${SVN} info "${SVNROOT}/${SVNBRANCH}"|awk '/Revision:/ {print $2}'`
  
!   # Export the current sources.
!   inform "Retrieving sources (svn export -r ${SVNREV} ${SVNROOT}/${SVNBRANCH})"
  
!   ${SVN} -q export -r${SVNREV} "${SVNROOT}/${SVNBRANCH}" "`basename ${SOURCE_DIRECTORY}`" ||\
!     error "Could not retrieve sources"
  
    # Run gcc_update on them to set up the timestamps nicely, and (re)write
!   # the LAST_UPDATED file containing the SVN tag/revision used.
    changedir "gcc-${RELEASE}"
    contrib/gcc_update --touch
!   echo "Obtained from SVN: ${SVNBRANCH} revision ${SVNREV}" > LAST_UPDATED
  
    # For a prerelease or real release, we need to generate additional
!   # files not present in SVN.
    changedir "${SOURCE_DIRECTORY}"
    if [ $SNAPSHOT -ne 1 ]; then
      # Generate the documentation.
--- 195,237 ----
      # We don't want to overwrite an existing tag.  So, if the tag
      # already exists, issue an error message; the release manager can
      # manually remove the tag if appropriate.
!     if (changedir ${SOURCE_DIRECTORY} && \
! 	${GIT} rev-parse "refs/tags/${TAG}" > /dev/null 2>&1); then
        error "Tag ${TAG} already exists"
      fi
!     (changedir ${SOURCE_DIRECTORY} && \
!      ${GIT} tag -s -m "GCC ${RELEASE} release" "${TAG}" && \
!      ${GIT} push origin tag "${TAG}") || \
        error "Could not tag sources"
!     GITBRANCH=${TAG}
    fi
  
!   GITREV=`cd ${SOURCE_DIRECTORY} && ${GIT} rev-parse HEAD`
!   inform "Sources are commit ${GITREV}"
  
!   # Make sure there are no uncommitted changes in the sources.
!   status=${WORKING_DIRECTORY}/gitstatus.$$
!   (changedir ${SOURCE_DIRECTORY} && \
!    ${GIT} status --porcelain --ignored > "$status") || \
!     error "Could not get source directory status"
!   if [ -s "$status" ]; then
!     cat "$status"
!     error "Source directory has unexpected changes"
!   fi
!   rm "$status"
! 
!   # Remove .git from the sources.
!   rm -rf "${SOURCE_DIRECTORY}/.git" || \
!     error "Could not remove .git from sources"
  
    # Run gcc_update on them to set up the timestamps nicely, and (re)write
!   # the LAST_UPDATED file containing the git tag/revision used.
    changedir "gcc-${RELEASE}"
    contrib/gcc_update --touch
!   echo "Obtained from git: ${GITBRANCH} revision ${GITREV}" > LAST_UPDATED
  
    # For a prerelease or real release, we need to generate additional
!   # files not present in git.
    changedir "${SOURCE_DIRECTORY}"
    if [ $SNAPSHOT -ne 1 ]; then
      # Generate the documentation.
*************** announce_snapshot() {
*** 400,410 ****
    changedir "${SNAPSHOTS_DIR}"
    echo \
  "Snapshot gcc-"${RELEASE}" is now available on
!   ftp://gcc.gnu.org/pub/gcc/snapshots/"${RELEASE}"/
  and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.
  
! This snapshot has been generated from the GCC "${BRANCH}" SVN branch
! with the following options: "svn://gcc.gnu.org/svn/gcc/${SVNBRANCH} revision ${SVNREV}"
  
  You'll find:
  " > ${SNAPSHOT_README}
--- 443,453 ----
    changedir "${SNAPSHOTS_DIR}"
    echo \
  "Snapshot gcc-"${RELEASE}" is now available on
!   https://gcc.gnu.org/pub/gcc/snapshots/"${RELEASE}"/
  and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.
  
! This snapshot has been generated from the GCC "${BRANCH}" git branch
! with the following options: "git://gcc.gnu.org/git/gcc.git branch ${GITBRANCH} revision ${GITREV}"
  
  You'll find:
  " > ${SNAPSHOT_README}
*************** for testing purposes.</p>
*** 427,434 ****
  we highly recommend you join the GCC developers list.  Details for
  how to sign up can be found on the GCC project home page.</p>
  
! <p>This snapshot has been generated from the GCC "${BRANCH}" SVN branch
! with the following options: <code>"svn://gcc.gnu.org/svn/gcc/${SVNBRANCH} revision ${SVNREV}"</code></p>
  
  <table>" > ${SNAPSHOT_INDEX}
         
--- 470,477 ----
  we highly recommend you join the GCC developers list.  Details for
  how to sign up can be found on the GCC project home page.</p>
  
! <p>This snapshot has been generated from the GCC "${BRANCH}" git branch
! with the following options: <code>"git://gcc.gnu.org/git/gcc.git branch ${GITBRANCH} revision ${GITREV}"</code></p>
  
  <table>" > ${SNAPSHOT_INDEX}
         
*************** export LC_ALL
*** 481,493 ****
  DATE=`date "+%Y%m%d"`
  LONG_DATE=`date "+%Y-%m-%d"`
  
! SVN=${SVN:-svn}
! # The CVS server containing the GCC repository.
! SVN_SERVER="gcc.gnu.org"
  # The path to the repository on that server.
! SVN_REPOSITORY="/svn/gcc"
  # The username to use when connecting to the server.
! SVN_USERNAME="${USER}"
  
  # The machine to which files will be uploaded.
  GCC_HOSTNAME="gcc.gnu.org"
--- 524,536 ----
  DATE=`date "+%Y%m%d"`
  LONG_DATE=`date "+%Y-%m-%d"`
  
! GIT=${GIT:-git}
! # The server containing the GCC repository.
! GIT_SERVER="gcc.gnu.org"
  # The path to the repository on that server.
! GIT_REPOSITORY="/git/gcc.git"
  # The username to use when connecting to the server.
! GIT_USERNAME="${USER}"
  
  # The machine to which files will be uploaded.
  GCC_HOSTNAME="gcc.gnu.org"
*************** BRANCH=""
*** 516,522 ****
  
  # The name of the branch from which the release should be made, as used
  # for our version control system.
! SVNBRANCH=""
  
  # The tag to apply to the sources used for the release.
  TAG=""
--- 559,565 ----
  
  # The name of the branch from which the release should be made, as used
  # for our version control system.
! GITBRANCH=""
  
  # The tag to apply to the sources used for the release.
  TAG=""
*************** while getopts "d:fr:u:t:p:s:l" ARG; do
*** 575,585 ****
      d)    DESTINATION="${OPTARG}";;
      r)    RELEASE="${OPTARG}";;
      t)    TAG="${OPTARG}";;
!     u)    SVN_USERNAME="${OPTARG}";;
      f)    FINAL=1;;
      s)    SNAPSHOT=1
            BRANCH=${OPTARG%:*}
!           SVNBRANCH=${OPTARG#*:}
            ;;
      l)    LOCAL=1
  	  SCP=cp
--- 618,628 ----
      d)    DESTINATION="${OPTARG}";;
      r)    RELEASE="${OPTARG}";;
      t)    TAG="${OPTARG}";;
!     u)    GIT_USERNAME="${OPTARG}";;
      f)    FINAL=1;;
      s)    SNAPSHOT=1
            BRANCH=${OPTARG%:*}
!           GITBRANCH=${OPTARG#*:}
            ;;
      l)    LOCAL=1
  	  SCP=cp
*************** while [ $# -ne 0 ]; do
*** 613,619 ****
  done
  
  # Perform consistency checking.
! if [ ${LOCAL} -eq 0 ] && [ -z ${SVN_USERNAME} ]; then
    error "No username specified"
  fi
  
--- 656,662 ----
  done
  
  # Perform consistency checking.
! if [ ${LOCAL} -eq 0 ] && [ -z ${GIT_USERNAME} ]; then
    error "No username specified"
  fi
  
*************** if [ $SNAPSHOT -eq 0 ]; then
*** 643,654 ****
    fi
  
    # Compute the name of the branch, which is based solely on the major
!   # and minor release numbers.
!   if [ ${RELEASE_MAJOR} -ge 5 ]; then
!     SVNBRANCH="branches/gcc-${RELEASE_MAJOR}-branch"
!   else
!     SVNBRANCH="branches/gcc-${RELEASE_MAJOR}_${RELEASE_MINOR}-branch"
!   fi
  
    # If this is not a final release, set various parameters accordingly.
    if [ ${FINAL} -ne 1 ]; then
--- 686,693 ----
    fi
  
    # Compute the name of the branch, which is based solely on the major
!   # release number.
!   GITBRANCH="releases/gcc-${RELEASE_MAJOR}"
  
    # If this is not a final release, set various parameters accordingly.
    if [ ${FINAL} -ne 1 ]; then
*************** fi
*** 677,689 ****
  WORKING_DIRECTORY="${DESTINATION}/gcc-${RELEASE}"
  SOURCE_DIRECTORY="${WORKING_DIRECTORY}/gcc-${RELEASE}"
  
! # Set up SVNROOT.
  if [ $LOCAL -eq 0 ]; then
!     SVNROOT="svn+ssh://${SVN_USERNAME}@${SVN_SERVER}${SVN_REPOSITORY}"
  else
!     SVNROOT="file:///svn/gcc"
  fi
! export SVNROOT
  
  ########################################################################
  # Main Program
--- 716,728 ----
  WORKING_DIRECTORY="${DESTINATION}/gcc-${RELEASE}"
  SOURCE_DIRECTORY="${WORKING_DIRECTORY}/gcc-${RELEASE}"
  
! # Set up GITROOT.
  if [ $LOCAL -eq 0 ]; then
!     GITROOT="git+ssh://${GIT_USERNAME}@${GIT_SERVER}${GIT_REPOSITORY}"
  else
!     GITROOT="/git/gcc.git"
  fi
! export GITROOT
  
  ########################################################################
  # Main Program
diff -Nrcpad gcc-8.3.0/zlib/ChangeLog gcc-8.4.0/zlib/ChangeLog
*** gcc-8.3.0/zlib/ChangeLog	Fri Feb 22 14:20:37 2019
--- gcc-8.4.0/zlib/ChangeLog	Wed Mar  4 08:30:30 2020
***************
*** 1,3 ****
--- 1,7 ----
+ 2020-03-04  Release Manager
+ 
+ 	* GCC 8.4.0 released.
+ 
  2019-02-22  Release Manager
  
  	* GCC 8.3.0 released.
